{"$:/":"tiddlyclass-class-pos252","$:/.tb/modules/startup/hide-sidebar.js":"tiddlyclass","$:/1":"tiddlyclass-class-pos252","$:/DefaultTiddlers":"tiddlyclass-class-pos252","$:/ImportImage--2134851823":"tiddlyclass-class-pos252","$:/ImportImage--508440951":"tiddlyclass-class-pos252","$:/Order of things":"tiddlyclass-class-pos252","$:/SiteSubtitle":"tiddlyclass-class-pos252","$:/SiteTitle":"tiddlyclass-class-pos252","$:/Topic: Personal Perspectives II":"tiddlyclass-class-pos252","$:/Topic: Philosophical Approaches II":"tiddlyclass-class-pos252","$:/Topic: Philosophical Approaches III":"tiddlyclass-class-pos252","$:/Topic: Philosophical Perspectives & Political Policies II":"tiddlyclass-class-pos252","$:/Topic: Philosophical Perspectives & Political Policies III":"tiddlyclass-class-pos252","$:/Zotero Resource Macros":"tiddlyclass-classes","$:/_ExcelImporter/ImportSpecifiers/Row":"tiddlyclass-class-pos252","$:/_ExcelImporter/ImportSpecifiers/Row 1":"tiddlyclass-class-pos252","$:/_ExcelImporter/ImportSpecifiers/Row 2":"tiddlyclass-class-pos252","$:/_ExcelImporter/ImportSpecifiers/Sheet":"tiddlyclass-class-pos252","$:/_ExcelImporter/ImportSpecifiers/Sheet 1":"tiddlyclass-class-pos252","$:/_ExcelImporter/ImportSpecifiers/Sheet 2":"tiddlyclass-class-pos252","$:/_ExcelImporter/ImportSpecifiers/Workbook":"tiddlyclass-class-pos252","$:/config/AnimationDuration":"tiddlyclass-class-pos252","$:/config/HideSidebarOnStartup":"tiddlyclass","$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all":"tiddlyclass-class-pos252","$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home":"tiddlyclass","$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import":"tiddlyclass-classes","$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh":"tiddlyclass","$:/config/PageControlButtons/Visibility/$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette":"tiddlyclass","$:/config/RelinkOnRename":"tiddlyclass-classes","$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone":"tiddlyclass-class-pos252","$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/edit":"tiddlyclass-class-pos252","$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here":"tiddlyclass-class-pos252","$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols":"tiddlyclass","$:/config/plugins/menubar/TableOfContents/Tag":"tiddlyclass","$:/config/plugins/tiddlywiki/xlsx-utils/default-import-spec":"tiddlyclass-class-pos252","$:/details/openclose":"tiddlyclass-class-pos252","$:/details/openclose1":"tiddlyclass-class-pos252","$:/details/openclose2":"tiddlyclass-class-pos252","$:/favicon.ico":"tiddlyclass-class-pos252","$:/issue":"tiddlyclass-class-pos252","$:/palette":"tiddlyclass-class-pos252","$:/palettes/VanillaPOS252":"tiddlyclass-class-pos252","$:/palettes/VanillaTiddlyCampus":"tiddlyclass","$:/palettes/VanillaTiddlyClass":"tiddlyclass","$:/plugins/eucaly/popuptagger":"tiddlyclass","$:/plugins/flibbles/relink":"tiddlyclass","$:/plugins/kookma/shiraz":"tiddlyclass","$:/plugins/kookma/tamasha":"tiddlyclass-classes","$:/plugins/kookma/tamasha-themes":"tiddlyclass-classes","$:/plugins/telmiger/details":"tiddlyclass","$:/plugins/tiddlywiki/bibtex":"tiddlyclass-classes","$:/plugins/tiddlywiki/jszip":"tiddlyclass","$:/plugins/tiddlywiki/menubar":"tiddlyclass","$:/plugins/tiddlywiki/xlsx-utils":"tiddlyclass","$:/plugins/tobibeer/appear":"tiddlyclass","$:/policy-type":"tiddlyclass-class-pos252","$:/thisdate":"tiddlyclass-class-pos252","$:/tiddlyclass/Assignments":"tiddlyclass","$:/tiddlyclass/Calendar":"tiddlyclass","$:/tiddlyclass/Catalog Description":"tiddlyclass","$:/tiddlyclass/Contents":"tiddlyclass","$:/tiddlyclass/Learning Objectives":"tiddlyclass","$:/tiddlyclass/Professor Contact Information":"tiddlyclass","$:/tiddlyclass/Student Learning Outcomes":"tiddlyclass","$:/tiddlyclass/Welcome":"tiddlyclass","$:/tiddlyclass/class":"tiddlyclass","$:/view":"tiddlyclass-class-pos252","-insight":"tiddlyclass-class-pos252","-question":"tiddlyclass-class-pos252","APCnewimaeg.png":"tiddlyclass-class-pos252","Abortion Policies in the United States":"tiddlyclass-class-pos252","AbortionDocumentGale":"tiddlyclass-class-pos252","Accessing Articles from SUNY Poly via LibKey using DOI via Zotero":"tiddlyclass-classes","Accommodations for Students with Accessibility Needs":"tiddlyclass-classes","Analyze political policies":"tiddlyclass-class-pos252","Apply philosophical concepts":"tiddlyclass-class-pos252","Assess popular and scholarly publications":"tiddlyclass-class-pos252","Assignments":"tiddlyclass-class-pos252","Assisted Reproduction Evolution in the Law":"tiddlyclass-class-pos252","Assisted Suicide Legislation in Comparative Perspective":"tiddlyclass-class-pos252","Assisted Suicide in the States":"tiddlyclass-class-pos252","AssistedSuicideDeserves":"tiddlyclass-class-pos252","AssistedSuicideDocument":"tiddlyclass-class-pos252","AssistedSuicideMoral":"tiddlyclass-class-pos252","AssistedSuicideMoral-notes":"tiddlyclass-class-pos252","BioethicsDocumentGale":"tiddlyclass-class-pos252","BioethicsDocumentGale-notes":"tiddlyclass-class-pos252","Calendar":"tiddlyclass-class-pos252","CanadaKillingRegime":"tiddlyclass-class-pos252","Catalog Course Description":"tiddlyclass-class-pos252","Catalog Description":"tiddlyclass-class-pos252","Caution: ChatGPT":"tiddlyclass-class-pos252","ChatGPT: major supreme court Assisted reproduction, surrogacy, and cloning":"tiddlyclass-class-pos252","ChatGPT: major supreme court abortion united states from griswold thru dobbs":"tiddlyclass-class-pos252","ChatGPT: major supreme court assisted suicide right to die medical assistance in dying united states":"tiddlyclass-class-pos252","ChoosingSexYour":"tiddlyclass-class-pos252","Class-by-Class Calendar":"tiddlyclass-class-pos252","Classify policy proposals":"tiddlyclass-class-pos252","Comparative Assessment of Abortion Laws globally, by type of provision":"tiddlyclass-class-pos252","Comparative Assessment of Abortion Laws in the United States, by type of provision":"tiddlyclass-class-pos252","ConceptionHowIt":"tiddlyclass-class-pos252","ConsequentialismDocumentGale":"tiddlyclass-class-pos252","Constitution / Legislation":"tiddlyclass-class-pos252","Constitutional Provisions Associated with Surrogacy and Assisted Reproduction, US":"tiddlyclass-class-pos252","Constitutional Provisions Not Protecting the Right to Die with Dignity, US":"tiddlyclass-class-pos252","Constitutional Provisions Not Protecting the Right to Die with Dignity, USA":"tiddlyclass-class-pos252","Constitutional Provisions Protecting the Right to An Abortion, Globally":"tiddlyclass-class-pos252","Constitutional Provisions Protecting the Right to An Abortion, US":"tiddlyclass-class-pos252","Constitutional Provisions Protecting the Right to Die with Dignity, Globally":"tiddlyclass-class-pos252","Constitutional Provisions Protecting the Right to Die with Dignity, US":"tiddlyclass-class-pos252","Constitutional Provisions: No Right to Die with Dignity, Globally":"tiddlyclass-class-pos252","Contents":"tiddlyclass-class-pos252","Cruzan v. Director, Missouri Department of Health":"tiddlyclass-class-pos252","Cruzan v. Director, Missouri Department of Health (1990)":"tiddlyclass-class-pos252","CulturalImpact":"tiddlyclass-class-pos252","DWS Style Sheet":"tiddlyclass-classes","Day-by-day Class Calendar":"tiddlyclass-class-pos252","De-facto Parental Recognition Laws in United States":"tiddlyclass-class-pos252","Describe methods to analyze morality policies":"tiddlyclass-class-pos252","DesperatePleasSmuggled2022":"tiddlyclass-class-pos252","Draft of 'Vacco v. Quill (1997)' by steve":"tiddlyclass-class-pos252","EP_Tips_for_Talking_About_Abortion.pdf":"tiddlyclass-class-pos252","Ep343When":"tiddlyclass-class-pos252","Episode14Euthanasia":"tiddlyclass-class-pos252","EthicsUterusTransplantation":"tiddlyclass-class-pos252","EthicsUterusTransplantation2020":"tiddlyclass-class-pos252","Examine personal perspectives":"tiddlyclass-class-pos252","Explain political action":"tiddlyclass-class-pos252","Explanation of Project 2 Components":"tiddlyclass-class-pos252","Explore philosophical approaches":"tiddlyclass-class-pos252","Feature of Assisted Suicide Legislation: Conscientious Objection":"tiddlyclass-class-pos252","Feature of Assisted Suicide Legislation: Eligibility Criteria":"tiddlyclass-class-pos252","Feature of Assisted Suicide Legislation: Legal Protection for Participants":"tiddlyclass-class-pos252","Feature of Assisted Suicide Legislation: Mental Capacity":"tiddlyclass-class-pos252","Feature of Assisted Suicide Legislation: Process":"tiddlyclass-class-pos252","Feature of Assisted Suicide Legislation: Safeguards":"tiddlyclass-class-pos252","Final Project":"tiddlyclass-class-pos252","Final Project-description":"tiddlyclass-class-pos252","Finding Cases To Analyze":"tiddlyclass-class-pos252","Form Preparation":"tiddlyclass-classes","Four ways to choose the sex of your child":"tiddlyclass-class-pos252","From the Memex to Xememex":"tiddlyclass-classes","Genetic ties and intent as factors in determining legal parentage":"tiddlyclass-class-pos252","GeneticsReproductiveTechnologies":"tiddlyclass-class-pos252","GeneticsReproductiveTechnologies-notes":"tiddlyclass-class-pos252","Gestational surrogate with no genetic connection not considered legal mother":"tiddlyclass-class-pos252","Gonzales v. Oregon":"tiddlyclass-class-pos252","Gonzales v. Oregon (2006)":"tiddlyclass-class-pos252","Google Form Submission":"tiddlyclass-classes","GoogleSheet for import":"tiddlyclass-class-pos252","GuideSynthesisEssays":"tiddlyclass-class-pos252","How to Talk About Abortion in 4 Steps":"tiddlyclass-class-pos252","HyFlex Course":"tiddlyclass-class-pos252","Identify concepts and theories of political science":"tiddlyclass-class-pos252","ImplicationsDefiningWhen2015":"tiddlyclass-class-pos252","Insights from Jan 31":"tiddlyclass-class-pos252","Is it appropriate to have a child to save another child you already have?":"tiddlyclass-class-pos252","JulianSavulescuDesigner":"tiddlyclass-class-pos252","Learning Objectives":"tiddlyclass-class-pos252","Learning Resources":"tiddlyclass-classes","Learning Resources by Type":"tiddlyclass-classes","Legal parentage and same-sex couples in gestational surrogacy":"tiddlyclass-class-pos252","Liberty should only be restricted to the degree that is necessary to deal with harm or injustice.":"tiddlyclass-class-pos252","Link to class wiki":"tiddlyclass-class-pos252","MaryWarnockRight":"tiddlyclass-class-pos252","MedicationAbortionCases":"tiddlyclass-class-pos252","MedicationAbortionCasesUpdate":"tiddlyclass-class-pos252","Moral Status":"tiddlyclass-class-pos252","Most Restrictive Abortion Laws in US States":"tiddlyclass-class-pos252","New Tiddler":"tiddlyclass-class-pos252","New Tiddler 1":"tiddlyclass-class-pos252","New Tiddler 2":"tiddlyclass-class-pos252","NextWeek":"tiddlyclass-class-pos252","No definition of hypertext is offered by Bernstein":"tiddlyclass-classes","Non-gestational Parental Recognition Laws in United States":"tiddlyclass-class-pos252","Notes on podcast template":"tiddlyclass-class-pos252","Open Close All Details":"tiddlyclass-class-pos252","Order of things":"tiddlyclass-class-pos252","Overview of Project 2":"tiddlyclass-class-pos252","POS 252 Assignments":"tiddlyclass-class-pos252","POS 252 is a hyflex course":"tiddlyclass-class-pos252","PeterSingerLife":"tiddlyclass-class-pos252","PhilosophyBites":"tiddlyclass-class-pos252","PhilosophyBitesRaymond":"tiddlyclass-class-pos252","PhysicianPerspective2023":"tiddlyclass-class-pos252","Planned Parenthood v. Casey":"tiddlyclass-class-pos252","Planned Parenthood v. Casey (1992)":"tiddlyclass-class-pos252","Podcasts on philosophical approaches":"tiddlyclass-class-pos252","Presentation-17 Jan 23":"tiddlyclass-class-pos252","ProQuestEbookCentral":"tiddlyclass-class-pos252","Professor Contact Information":"tiddlyclass-classes","Project 2 - Baby S":"tiddlyclass-class-pos252","Project 2 - Baxter":"tiddlyclass-class-pos252","Project 2 - Dobbs":"tiddlyclass-class-pos252","Project 2 - Doe":"tiddlyclass-class-pos252","Project 2 - Glucksburg":"tiddlyclass-class-pos252","Project 2 - Gomez":"tiddlyclass-class-pos252","Project 2 - Hodgson":"tiddlyclass-class-pos252","Project 2 - Johnson":"tiddlyclass-class-pos252","Project 2 - KG":"tiddlyclass-class-pos252","Project 2 - Myers":"tiddlyclass-class-pos252","Project 2 - Quill":"tiddlyclass-class-pos252","Project 2 - Ravin":"tiddlyclass-class-pos252","Project 2 - Right to Choose":"tiddlyclass-class-pos252","Project 2 - Sampson":"tiddlyclass-class-pos252","Project 2 - Women's Medical":"tiddlyclass-class-pos252","Project 2 Cases selected (to date)":"tiddlyclass-class-pos252","Project 2 Revised":"tiddlyclass-class-pos252","Project 2 Revised 1":"tiddlyclass-class-pos252","Project 2: Abortion":"tiddlyclass-class-pos252","Project 2: Assisted Reproduction":"tiddlyclass-class-pos252","Project 2: Assisted Suicide":"tiddlyclass-class-pos252","Project 2: Case Selection":"tiddlyclass-class-pos252","Project 2: Decision":"tiddlyclass-class-pos252","Project 2: Introduction":"tiddlyclass-class-pos252","Project 2: Legislation":"tiddlyclass-class-pos252","Project 2: Litigation":"tiddlyclass-class-pos252","Questions from Jan 31":"tiddlyclass-class-pos252","RaymondTallisAssisted":"tiddlyclass-class-pos252","Readings for Philosophical Approaches":"tiddlyclass-class-pos252","Reflection form template":"tiddlyclass-class-pos252","Reflection on Thu 02 Feb 23":"tiddlyclass-class-pos252","Reflection on Thu 02 Mar 23":"tiddlyclass-class-pos252","Reflection on Thu 06 Apr 23":"tiddlyclass-class-pos252","Reflection on Thu 09 Feb 23":"tiddlyclass-class-pos252","Reflection on Thu 09 Mar 23":"tiddlyclass-class-pos252","Reflection on Thu 13 Apr 23":"tiddlyclass-class-pos252","Reflection on Thu 16 Feb 23":"tiddlyclass-class-pos252","Reflection on Thu 16 Mar 23":"tiddlyclass-class-pos252","Reflection on Thu 19 Jan 23":"tiddlyclass-class-pos252","Reflection on Thu 20 Apr 23":"tiddlyclass-class-pos252","Reflection on Thu 23 Feb 23":"tiddlyclass-class-pos252","Reflection on Thu 23 Mar 23":"tiddlyclass-class-pos252","Reflection on Thu 26 Jan 23":"tiddlyclass-class-pos252","Reflection on Thu 27 Apr 23":"tiddlyclass-class-pos252","Reflection on Thu 30 Mar 23":"tiddlyclass-class-pos252","Reflection on Tue 04 Apr 23":"tiddlyclass-class-pos252","Reflection on Tue 07 Feb 23":"tiddlyclass-class-pos252","Reflection on Tue 07 Mar 23":"tiddlyclass-class-pos252","Reflection on Tue 11 Apr 23":"tiddlyclass-class-pos252","Reflection on Tue 14 Feb 23":"tiddlyclass-class-pos252","Reflection on Tue 14 Mar 23":"tiddlyclass-class-pos252","Reflection on Tue 17 Jan 23":"tiddlyclass-class-pos252","Reflection on Tue 18 Apr 23":"tiddlyclass-class-pos252","Reflection on Tue 21 Feb 23":"tiddlyclass-class-pos252","Reflection on Tue 21 Mar 23":"tiddlyclass-class-pos252","Reflection on Tue 24 Jan 23":"tiddlyclass-class-pos252","Reflection on Tue 25 Apr 23":"tiddlyclass-class-pos252","Reflection on Tue 28 Feb 23":"tiddlyclass-class-pos252","Reflection on Tue 28 Mar 23":"tiddlyclass-class-pos252","Reflection on Tue 31 Jan 23":"tiddlyclass-class-pos252","RenameTags":"tiddlyclass-classes","ReproductiveTechnologies1012007":"tiddlyclass-class-pos252","Responses to Part 0":"tiddlyclass-class-pos252","RightsWrongsAbortion":"tiddlyclass-class-pos252","Schloendorff v. Society of New York Hospital":"tiddlyclass-class-pos252","Schloendorff v. Society of New York Hospital (1914)":"tiddlyclass-class-pos252","ScottSignsBill2022":"tiddlyclass-class-pos252","Semester Calendar":"tiddlyclass","ShouldEuthanasiaBe":"tiddlyclass-class-pos252","ShouldWeAllow":"tiddlyclass-class-pos252","State & National Policy Overview":"tiddlyclass-class-pos252","State & National Policy Overview By Issue":"tiddlyclass-class-pos252","Student Learning Outcomes":"tiddlyclass-class-pos252","SuicideDocumentGale":"tiddlyclass-class-pos252","SuicideDocumentGale-notes":"tiddlyclass-class-pos252","Summary Essay: Three Issues":"tiddlyclass-class-pos252","Summary Essay: Three Issues-description":"tiddlyclass-class-pos252","Summary: POS 252 Assignments":"tiddlyclass-class-pos252","Surrogacy Regulation in the United States":"tiddlyclass-class-pos252","Surrogacy and Assisted Reproduction Legislation Globally":"tiddlyclass-class-pos252","Surrogacy and Assisted Reproduction Legislation in the United States":"tiddlyclass-class-pos252","Surrogacy contracts enforceable and pre-birth parentage orders allowed":"tiddlyclass-class-pos252","Surrogacy contracts enforceable under specific conditions":"tiddlyclass-class-pos252","Surrogacy laws and the best interests of the child":"tiddlyclass-class-pos252","Surrogate who provided egg and carried child considered legal mother":"tiddlyclass-class-pos252","Synthesis Essay: Philosphical Approaches":"tiddlyclass-class-pos252","Synthesis Essay: Philosphical Approaches-description":"tiddlyclass-class-pos252","Synthesis Essay: Political Policies":"tiddlyclass-class-pos252","Synthesis Essay: Political Policies-description":"tiddlyclass-class-pos252","Talking":"tiddlyclass-class-pos252","Telmiger Details Styles":"tiddlyclass-classes","The Dobbs Effect":"tiddlyclass-class-pos252","The Yuk Factor":"tiddlyclass-class-pos252","The ethics of uterus transplantation":"tiddlyclass-class-pos252","This Week":"tiddlyclass-class-pos252","This is an example of a tiddler in Classes":"tiddlyclass-classes","ThisWeek":"tiddlyclass-class-pos252","Thu 02 Feb 23":"tiddlyclass-class-pos252","Thu 02 Mar 23":"tiddlyclass-class-pos252","Thu 02 Mar 23 Topics":"tiddlyclass-class-pos252","Thu 06 Apr 23":"tiddlyclass-class-pos252","Thu 09 Feb 23":"tiddlyclass-class-pos252","Thu 09 Mar 23":"tiddlyclass-class-pos252","Thu 09 Mar 23 Topics":"tiddlyclass-class-pos252","Thu 13 Apr 23":"tiddlyclass-class-pos252","Thu 16 Feb 23":"tiddlyclass-class-pos252","Thu 16 Mar 23":"tiddlyclass-class-pos252","Thu 19 Jan 23":"tiddlyclass-class-pos252","Thu 20 Apr 23":"tiddlyclass-class-pos252","Thu 23 Feb 23":"tiddlyclass-class-pos252","Thu 23 Feb 23 Topics":"tiddlyclass-class-pos252","Thu 23 Mar 23":"tiddlyclass-class-pos252","Thu 23 Mar 23 Topics":"tiddlyclass-class-pos252","Thu 26 Jan 23":"tiddlyclass-class-pos252","Thu 27 Apr 23":"tiddlyclass-class-pos252","Thu 30 Mar 23":"tiddlyclass-class-pos252","TiddlyCampus":"tiddlyclass","TiddlyClass":"tiddlyclass-classes","Topic-By-Topic Calendar":"tiddlyclass-class-pos252","Tue 02 May 23":"tiddlyclass-class-pos252","Tue 04 Apr 23":"tiddlyclass-class-pos252","Tue 07 Feb 23":"tiddlyclass-class-pos252","Tue 07 Mar 23":"tiddlyclass-class-pos252","Tue 07 Mar 23 Topics":"tiddlyclass-class-pos252","Tue 11 Apr 23":"tiddlyclass-class-pos252","Tue 14 Feb 23":"tiddlyclass-class-pos252","Tue 14 Mar 23":"tiddlyclass-class-pos252","Tue 17 Jan 23":"tiddlyclass-class-pos252","Tue 17 Jan 23-insight":"tiddlyclass-class-pos252","Tue 17 Jan 23-question":"tiddlyclass-class-pos252","Tue 18 Apr 23":"tiddlyclass-class-pos252","Tue 21 Feb 23":"tiddlyclass-class-pos252","Tue 21 Feb 23 Topics":"tiddlyclass-class-pos252","Tue 21 Mar 23":"tiddlyclass-class-pos252","Tue 21 Mar 23 Topics":"tiddlyclass-class-pos252","Tue 24 Jan 23":"tiddlyclass-class-pos252","Tue 24 Jan 23--presentation":"tiddlyclass-class-pos252","Tue 25 Apr 23":"tiddlyclass-class-pos252","Tue 28 Feb 23":"tiddlyclass-class-pos252","Tue 28 Feb 23 Topics":"tiddlyclass-class-pos252","Tue 28 Mar 23":"tiddlyclass-class-pos252","Tue 28 Mar 23 Topics":"tiddlyclass-class-pos252","Tue 31 Jan 23":"tiddlyclass-class-pos252","Types of Morality Policy":"tiddlyclass-class-pos252","Untitled":"tiddlyclass-class-pos252","Untitled 1":"tiddlyclass-class-pos252","Upcoming Classes (07 Mar - 06 Apr)":"tiddlyclass-class-pos252","Vacco v. Quill":"tiddlyclass-class-pos252","Vacco v. Quill (1997)":"tiddlyclass-class-pos252","Validity of pre-birth parentage orders":"tiddlyclass-class-pos252","Validity of surrogacy contracts and genetic relationship to determine legal parentage":"tiddlyclass-class-pos252","VideoAudioMoral":"tiddlyclass-class-pos252","Washington v. Glucksberg":"tiddlyclass-class-pos252","Washington v. Glucksberg (1997)":"tiddlyclass-class-pos252","Washington v. Harper":"tiddlyclass-class-pos252","Washington v. Harper (1990)":"tiddlyclass-class-pos252","Week 1 Readings, Videos & Podcasts":"tiddlyclass-class-pos252","Week 10: Philosophical Approaches & Political Policies":"tiddlyclass-class-pos252","Week 11: Philosophical Approaches & Political Policies":"tiddlyclass-class-pos252","Week 12: Philosophical Approaches & Political Policies":"tiddlyclass-class-pos252","Week 13: Personal Perspectives":"tiddlyclass-class-pos252","Week 14: Anticipating the future":"tiddlyclass-class-pos252","Week 15: The Politics of Life and Death":"tiddlyclass-class-pos252","Week 16: Finals Week":"tiddlyclass-class-pos252","Week 1: Morality Policy":"tiddlyclass-class-pos252","Week 2: Philosophical Approaches":"tiddlyclass-class-pos252","Week 3: Philosophical Approaches":"tiddlyclass-class-pos252","Week 4: Philosophical Approaches":"tiddlyclass-class-pos252","Week 5: Policy Types":"tiddlyclass-class-pos252","Week 6: Policy Types":"tiddlyclass-class-pos252","Week 7: Policy Types":"tiddlyclass-class-pos252","Week 8: Personal Perspectives":"tiddlyclass-class-pos252","Week 9: Spring Break":"tiddlyclass-class-pos252","Welcome":"tiddlyclass-class-pos252","Welcome to The Politics of Life & Death":"tiddlyclass-class-pos252","What is Morality Policy?":"tiddlyclass-class-pos252","What is a HyFlex Course?":"tiddlyclass-class-pos252","What is the basis for state / national legislation? Rights or within the responsibilities of the state?":"tiddlyclass-class-pos252","What is this class about?":"tiddlyclass-class-pos252","What's Next":"tiddlyclass-class-pos252","What's next: Thursday, January 19":"tiddlyclass-class-pos252","WhoseRightsAre":"tiddlyclass-class-pos252","Why would people object to genetic engineering of human embryos that are brought to term?":"tiddlyclass-class-pos252","WisdomRepugnance2022a":"tiddlyclass-class-pos252","Xememex and the syllabus":"tiddlyclass-class-pos252","Zoom Link for Classes":"tiddlyclass-class-pos252","ZoteroGroupsForClasses":"tiddlyclass-classes","almondAbortionControversy2007":"tiddlyclass-class-pos252","altersDeathDyingEndoflife2013":"tiddlyclass-class-pos252","anderssenCanadaWillSoon2022":"tiddlyclass-class-pos252","article":"tiddlyclass-classes","attend":"tiddlyclass-class-pos252","audio":"tiddlyclass-classes","batemanExploringReproductionIt2020":"tiddlyclass-class-pos252","battenDeathDying2010":"tiddlyclass-class-pos252","battenEuthanasia2010":"tiddlyclass-class-pos252","battenIllegitimacy2010":"tiddlyclass-class-pos252","battenPatientsRights2010":"tiddlyclass-class-pos252","battenReproduction2010":"tiddlyclass-class-pos252","battinSuicide2006a":"tiddlyclass-class-pos252","bernsteinDisasterDoubtOrigins2022":"tiddlyclass-classes","bib-macros":"tiddlyclass-class-pos252","bibtex-entry-template":"tiddlyclass-classes","bibtex-field-template":"tiddlyclass-classes","bitesSarahFranklinSociology":"tiddlyclass-class-pos252","bitesSarahFranklinSociology-Exercise3Annotation":"tiddlyclass-class-pos252","book":"tiddlyclass-classes","bradleyLifeDominionReview2014":"tiddlyclass-class-pos252","brakeParenthoodProcreation2012":"tiddlyclass-class-pos252","brakeParenthoodProcreation2012-notes":"tiddlyclass-class-pos252","bushWeMayThink1999":"tiddlyclass-class-pos252","bushWeMayThink1999-001":"tiddlyclass-class-pos252","bushWeMayThink1999-Exercise3Annotation":"tiddlyclass-classes","cholbiEuthanasiaAssistedSuicide2017":"tiddlyclass-class-pos252","christmanAutonomyMoralPolitical2020":"tiddlyclass-class-pos252","christmanAutonomyMoralPolitical2020-notes":"tiddlyclass-class-pos252","clarkeSanctityLifeSacred2023":"tiddlyclass-class-pos252","colbyUnpluggedReclaimingOur2006":"tiddlyclass-class-pos252","colkerAbortionDialogueProchoice1992":"tiddlyclass-class-pos252","daarNewEugenicsSelective2018":"tiddlyclass-class-pos252","dameResolvedLegalAccess":"tiddlyclass-class-pos252","degraziaDefinitionDeath2007":"tiddlyclass-class-pos252","degraziaDefinitionDeath2007-notes":"tiddlyclass-class-pos252","devon-project2":"tiddlyclass-class-pos252","dombrinkSinNoMore2007":"tiddlyclass-class-pos252","dubois-pedainFreedomResponsibilityReproductive2006":"tiddlyclass-class-pos252","erteltMinnesotaLegislaturePasses2023":"tiddlyclass-class-pos252","euchnerMoralityPolicy2019":"tiddlyclass-class-pos252","ex3-annotation template":"tiddlyclass-classes","gammeltoftHauntingImagesCultural2014":"tiddlyclass-class-pos252","gertDefinitionMorality2002":"tiddlyclass-class-pos252","gertDefinitionMorality2002-notes":"tiddlyclass-class-pos252","gertEuthanasia2006":"tiddlyclass-class-pos252","gorsuchFutureAssistedSuicide2006":"tiddlyclass-class-pos252","hacking2008SuicideWeapon":"tiddlyclass-class-pos252","hampshireAssistedReproductiveTechnologies2015":"tiddlyclass-class-pos252","harrisEthicsEuthanasia2005":"tiddlyclass-class-pos252","healeyReproductiveEthics2019":"tiddlyclass-class-pos252","incollection":"tiddlyclass-classes","inproceedings":"tiddlyclass-classes","inreference":"tiddlyclass-classes","jacksonRegulatingReproductionLaw2001":"tiddlyclass-class-pos252","kaczorDisputesBioethicsAbortion2020":"tiddlyclass-class-pos252","kaczorDisputesBioethicsAbortion2020a":"tiddlyclass-class-pos252","kaczorEthicsAbortionWomen2015":"tiddlyclass-class-pos252","kahanePainEthicalSignificance2006":"tiddlyclass-class-pos252","kammBioethicalPrescriptionsCreate2013":"tiddlyclass-class-pos252","kassWisdomRepugnance1997a":"tiddlyclass-class-pos252","keywordToSearchFor":"tiddlyclass-class-pos252","keywordsToChooseFrom":"tiddlyclass-class-pos252","macguiganAbortionConscienceDemocracy1994":"tiddlyclass-class-pos252","macklinGeneticsReproductiveTechnologies2006":"tiddlyclass-class-pos252","mariscalLife2021":"tiddlyclass-class-pos252","masonBabiesTechnologyAssisted2017":"tiddlyclass-class-pos252","mccarthyWhySexSelection2001":"tiddlyclass-class-pos252","new today":"tiddlyclass","novakSanctityHumanLife2007":"tiddlyclass-class-pos252","online":"tiddlyclass-classes","philosophyNewBooksPhilosophy":"tiddlyclass-class-pos252","philosophyNewBooksPhilosophya":"tiddlyclass-class-pos252","philosophyNewBooksPhilosophya-notes":"tiddlyclass-class-pos252","project 2 case template":"tiddlyclass-class-pos252","pubPoliticsPubState":"tiddlyclass-class-pos252","schenkerEthicalDilemmasAssisted2011":"tiddlyclass-class-pos252","schwarzUnderstandingAbortionMixed2012":"tiddlyclass-class-pos252","shapiroLawGoverningLGBTQparent2020":"tiddlyclass-class-pos252","shawProvidingMedicalAssistance2018":"tiddlyclass-class-pos252","software":"tiddlyclass-classes","stavrianakisLeavingNarrativeAssisted2020":"tiddlyclass-class-pos252","t1.tid":"tiddlyclass-class-pos252","t1.tid.rtf":"tiddlyclass-class-pos252","t2.tid.rtf":"tiddlyclass-class-pos252","t3.tid.rtf":"tiddlyclass-class-pos252","t4.tid.rtf":"tiddlyclass-class-pos252","t5.tid.rtf":"tiddlyclass-class-pos252","t6.tid.rtf":"tiddlyclass-class-pos252","t7.tid.rtf":"tiddlyclass-class-pos252","t8.tid.rtf":"tiddlyclass-class-pos252","t9.tid.rtf":"tiddlyclass-class-pos252","takeTakeExpansionAssisted":"tiddlyclass-class-pos252","takeTakeExpansionAssisteda":"tiddlyclass-class-pos252","takeTakeExpansionAssisteda-notes":"tiddlyclass-class-pos252","technologiesMoralPsychology21":"tiddlyclass-class-pos252","technologiesMoralPsychology21b":"tiddlyclass-class-pos252","technologiesMoralPsychology21b-notes":"tiddlyclass-class-pos252","tyrkusAbortion2022":"tiddlyclass-class-pos252","tyrkusArtificialInsemination2022":"tiddlyclass-class-pos252","tyrkusAssistedSuicide2022":"tiddlyclass-class-pos252","universityAssistedSuicide":"tiddlyclass-class-pos252","universityAssistedSuicide-notes":"tiddlyclass-class-pos252","unpublished":"tiddlyclass-classes","video":"tiddlyclass-classes","walkerBioethics2006":"tiddlyclass-class-pos252","walkerMostAbortionBans2023":"tiddlyclass-class-pos252","warnockMakingBabiesThere2002":"tiddlyclass-class-pos252","warrenMoralStatusObligations1997":"tiddlyclass-class-pos252","watsonScarletEthicsLaw2018":"tiddlyclass-class-pos252","wikipedia macro":"tiddlyclass-class-pos252","xxxbattenDeathDying2010":"tiddlyclass-class-pos252","yalomMatterDeathLife2021":"tiddlyclass-class-pos252","youngBREAKINGKamalaHarris":"tiddlyclass-class-pos252","youngMedicallyAssistedDeath2007":"tiddlyclass-class-pos252","youngVoluntaryEuthanasia1996":"tiddlyclass-class-pos252","youngVoluntaryEuthanasia1996-notes":"tiddlyclass-class-pos252","zotero-bbt-annotation-macros":"tiddlyclass-class-pos252","zotero-bbt-macros":"tiddlyclass-class-pos252","zotero-bbt-macros (depreciated)":"tiddlyclass-classes","zotero-resource template":"tiddlyclass-class-pos252"}
{"$:/":"\"8878291d35a901a8c1edfc9ed56550c6\"","$:/.tb/modules/startup/hide-sidebar.js":"\"2c1ad62fc4d9d9ccea6802b872313aa2\"","$:/1":"\"74b4dc878bac2aa395e195c0619dcdc8\"","$:/DefaultTiddlers":"\"884e239adb5eefcff052879a98736b5f\"","$:/ImportImage--2134851823":"\"9e12453bc4d9b73c7e75a44955dac910\"","$:/ImportImage--508440951":"\"075c4b83f580884975a69c32c8f34bfe\"","$:/Order of things":"\"2eb175e190cee497586b72615ff24729\"","$:/SiteSubtitle":"\"cd3453d927dc688a53662fd741a68aec\"","$:/SiteTitle":"\"0e45d6fa80a6720bae26014daa358c47\"","$:/Topic: Personal Perspectives II":"\"757f7e22d8efdf0d4d0d49d3c3cdbc5e\"","$:/Topic: Philosophical Approaches II":"\"67c8c5f1d73093b9cdd7ffea7fa1d98c\"","$:/Topic: Philosophical Approaches III":"\"1b3a136f40a18ec52488c3de79afbb1d\"","$:/Topic: Philosophical Perspectives & Political Policies II":"\"4979d4c43bc557d136f1643737b334b2\"","$:/Topic: Philosophical Perspectives & Political Policies III":"\"7942de011221cacc4b440d7d41bf87b5\"","$:/Zotero Resource Macros":"\"8e95f4a3895460b4045898802de38187\"","$:/_ExcelImporter/ImportSpecifiers/Row":"\"79b67c2657f4002e0f4f05237403c5e7\"","$:/_ExcelImporter/ImportSpecifiers/Row 1":"\"f40c72c49399ae5550263bf65d9e8f58\"","$:/_ExcelImporter/ImportSpecifiers/Row 2":"\"f63662ae99832f0f62e6e6e6f16901e7\"","$:/_ExcelImporter/ImportSpecifiers/Sheet":"\"c064580b8e4c79743bb598e44abc3134\"","$:/_ExcelImporter/ImportSpecifiers/Sheet 1":"\"5637b0ed02c8b4af7b557c8f120ac74d\"","$:/_ExcelImporter/ImportSpecifiers/Sheet 2":"\"c4a5bbf349a8932ab8c823000d8b9f54\"","$:/_ExcelImporter/ImportSpecifiers/Workbook":"\"58d1bfc0ada5c16d6ac030bb2c6401bb\"","$:/config/AnimationDuration":"\"632a1bcae1c0354583508f56614bec7e\"","$:/config/HideSidebarOnStartup":"\"5a91e5c05fe80709fb8f1401a2be5ce3\"","$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all":"\"5931ceb94f1132c54eb19ca946743d5d\"","$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home":"\"80544ebf45a38db5e153db249f333df3\"","$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import":"\"c6d8742a474ec3a3a5fbc9307b3ba36e\"","$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh":"\"56b3ae2bde67243c26598e1f21de417c\"","$:/config/PageControlButtons/Visibility/$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette":"\"75dc7d84995e06d6430fe094d2e6f91c\"","$:/config/RelinkOnRename":"\"13fa1a99cf2b532e2bc3d779d7ad3ecb\"","$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone":"\"6a8baee1780ac580dfaf288e486ba8fc\"","$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/edit":"\"5038fce7cc28db96c7b50398ef0be91a\"","$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here":"\"bf2494c664762e9e4ef7944f899489d2\"","$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols":"\"3eb5a7aa6ac50d3fc670f8b2f185530d\"","$:/config/plugins/menubar/TableOfContents/Tag":"\"33bd9be7595d5408cfc83871d3464291\"","$:/config/plugins/tiddlywiki/xlsx-utils/default-import-spec":"\"a0eff308a28455accafb11feb282d316\"","$:/details/openclose":"\"73e36f6b8aeac610c393241e24ea8064\"","$:/details/openclose1":"\"5f0497953ad8d8dc000475f88724246e\"","$:/details/openclose2":"\"da33f0c26cee93c93ec0161c8b920b8e\"","$:/favicon.ico":"\"af8251a8c47a1c11359053e57cef5491\"","$:/issue":"\"86cf3f37f159b7484f29b908cd92802f\"","$:/palette":"\"7d47ffa63f8612e8560dac312369bbc3\"","$:/palettes/VanillaPOS252":"\"a6a9d2b83a828f2d161ba3f26591bdfb\"","$:/palettes/VanillaTiddlyCampus":"\"31c72c9d4d1d1267c731b1501533d304\"","$:/palettes/VanillaTiddlyClass":"\"750b46cb27747ac4954db560ebbe4f0c\"","$:/plugins/eucaly/popuptagger":"\"17e25f064661ef81d4b72404204d0a34\"","$:/plugins/flibbles/relink":"\"93a23b9c45473c8b8b54ea51d9cc0d94\"","$:/plugins/kookma/shiraz":"\"c252064c874df92e8cf94ab423f1cb80\"","$:/plugins/kookma/tamasha":"\"b4736dec4d2a1df4435a138b46b86772\"","$:/plugins/kookma/tamasha-themes":"\"b9088e9fef0e583170f055b21cf55232\"","$:/plugins/telmiger/details":"\"d785a0d0448ea496becfc09e0ceb6923\"","$:/plugins/tiddlywiki/bibtex":"\"4df0ef7ca14816c89a2c4893dd229273\"","$:/plugins/tiddlywiki/jszip":"\"7c08a8f3aadb017ca8329bbb1542e462\"","$:/plugins/tiddlywiki/menubar":"\"01b1564276154b700d9f9a8bb973c18f\"","$:/plugins/tiddlywiki/xlsx-utils":"\"f72b94faed4606821c3dab7e2ac9ef47\"","$:/plugins/tobibeer/appear":"\"47cec762d13f78080d79ee0222f4f656\"","$:/policy-type":"\"c5be38a4152f9ced5bd5a824e595a805\"","$:/thisdate":"\"9fb0541bce9fa5dd2241950567a357d6\"","$:/tiddlyclass/Assignments":"\"73e5e582e85ae3afd88c1ce7a310ec7b\"","$:/tiddlyclass/Calendar":"\"6446a4cac4bfdea3fd8734542e727019\"","$:/tiddlyclass/Catalog Description":"\"20ff56930933bf55183fe7d723f6cb16\"","$:/tiddlyclass/Contents":"\"438ef08d5e71cf27020ce892161dc443\"","$:/tiddlyclass/Learning Objectives":"\"8bb6a36365ca383c5cf7f8b427b328c6\"","$:/tiddlyclass/Professor Contact Information":"\"8eee5e88cd13e990c167e9c779b1ef31\"","$:/tiddlyclass/Student Learning Outcomes":"\"ddd2f5687e971512d2eff325231f68e7\"","$:/tiddlyclass/Welcome":"\"6583d46d296748ee4ac07a0f894ef7b4\"","$:/tiddlyclass/class":"\"4f9a03169af33f914caf5c8136fa36b3\"","$:/view":"\"ea2f7da967986ae160715687fff2269c\"","-insight":"\"b9fc8f208459c4d5e70b97687b000feb\"","-question":"\"b8ac6b31d2037e67370c3a912c364c48\"","APCnewimaeg.png":"\"1c2f231f1e0ff3c7d85e3cac646d36b2\"","Abortion Policies in the United States":"\"aa12b29afd1aad226e3bd23ea1f4de7f\"","AbortionDocumentGale":"\"00c61040ca2cc61fa60c9c89a4e0e0c7\"","Accessing Articles from SUNY Poly via LibKey using DOI via Zotero":"\"7d24de7761d4e96e0496898ccd6895ad\"","Accommodations for Students with Accessibility Needs":"\"23a042e152045ee29d9c077b4eb474b5\"","Analyze political policies":"\"7639beb91e2c54d29eaa21033fcc52da\"","Apply philosophical concepts":"\"cd2c250b0bd8ac14446a0a253bd789a1\"","Assess popular and scholarly publications":"\"bf4ae00ad594bfe216ac0f313f78051b\"","Assignments":"\"f7c82cf70a8e437e58f91d38221fc08d\"","Assisted Reproduction Evolution in the Law":"\"06f34a250e6a109586ac045a3bb5e32d\"","Assisted Suicide Legislation in Comparative Perspective":"\"33ab8c8b58710093cad633b339c7e76c\"","Assisted Suicide in the States":"\"3991237ce601025e1fad4007f317ad26\"","AssistedSuicideDeserves":"\"2518fbd8c736339f7da1db3cf8f7991e\"","AssistedSuicideDocument":"\"be6067a223317cf546f749c1d797b139\"","AssistedSuicideMoral":"\"ebc9e53829a32fb88c028c307fa129ef\"","AssistedSuicideMoral-notes":"\"118a6e24e1ca3988b95537b3c331b3ea\"","BioethicsDocumentGale":"\"43d8cdd4d46e4e204f61767450fb9f8a\"","BioethicsDocumentGale-notes":"\"bdb43f056eade7d16e9bc7b71340c622\"","Calendar":"\"028285e0007beaa53de1b527e513ce63\"","CanadaKillingRegime":"\"03602a345b3f896d0c56cb3b2ffa73cf\"","Catalog Course Description":"\"01239a657939c9ec7d9b86f768b9f347\"","Catalog Description":"\"2a4a5d84081663cb5afab12cb2f784cf\"","Caution: ChatGPT":"\"1068d40f7d75bc38db998c2025bda206\"","ChatGPT: major supreme court Assisted reproduction, surrogacy, and cloning":"\"94f9f0283b15ea1ffab51feca8028126\"","ChatGPT: major supreme court abortion united states from griswold thru dobbs":"\"a33b92d53838c1a729c691891d3ed20a\"","ChatGPT: major supreme court assisted suicide right to die medical assistance in dying united states":"\"bd9f5446173c8c4866d85c5fd306eda8\"","ChoosingSexYour":"\"c075f740935d72025f3af9dc1e2e7b4d\"","Class-by-Class Calendar":"\"8164982d94a11728ed2997f40a300dd2\"","Classify policy proposals":"\"76661794a1366d09ae8e5fb74a62fe93\"","Comparative Assessment of Abortion Laws globally, by type of provision":"\"e21b604f61df3c3324ad0e8dd95b74ae\"","Comparative Assessment of Abortion Laws in the United States, by type of provision":"\"2fc7e03cf97964c90d8306d6e07d609e\"","ConceptionHowIt":"\"c5481525c34a837fb370f86479fdecb8\"","ConsequentialismDocumentGale":"\"fc3c4e3f8e74bd215697587622188ba1\"","Constitution / Legislation":"\"3af4d9a32d93b135614235e3b4586691\"","Constitutional Provisions Associated with Surrogacy and Assisted Reproduction, US":"\"e2626293d477cbb180379c9c8cd72f7a\"","Constitutional Provisions Not Protecting the Right to Die with Dignity, US":"\"c31ca3b55510fe7e10d20a402c639a98\"","Constitutional Provisions Not Protecting the Right to Die with Dignity, USA":"\"8723973a66b85e8c362f1155b404c3d2\"","Constitutional Provisions Protecting the Right to An Abortion, Globally":"\"d9e44e89baefbba0c730464c85eadc84\"","Constitutional Provisions Protecting the Right to An Abortion, US":"\"14e78988f606d7524b453afc8ac4ba3e\"","Constitutional Provisions Protecting the Right to Die with Dignity, Globally":"\"ee63fa48d92dc0f4bb343d18581796b0\"","Constitutional Provisions Protecting the Right to Die with Dignity, US":"\"bb1b7b5e39dd16300fed91e1de9ab3ab\"","Constitutional Provisions: No Right to Die with Dignity, Globally":"\"0eaebc26f5fa7494c165c1be8358d3f6\"","Contents":"\"4901850b2981e03a92fa15601a9dfa1c\"","Cruzan v. Director, Missouri Department of Health":"\"1817ba85aff79e28ef157313839d5630\"","Cruzan v. Director, Missouri Department of Health (1990)":"\"ab4b977204010b0d9bc915310f82c9cf\"","CulturalImpact":"\"1cb84d6a24b65bb98cdec6f5ce0f5003\"","DWS Style Sheet":"\"2251f87f907097f0d83eb18179031930\"","Day-by-day Class Calendar":"\"7daa9e2dc5485f5a65993b09dd7263e3\"","De-facto Parental Recognition Laws in United States":"\"79096ac6b1b8b27235206a9321d34537\"","Describe methods to analyze morality policies":"\"58574ace7eb29ea422ea2486a2a20da1\"","DesperatePleasSmuggled2022":"\"2243a804acb83550459c2bbf03eb7895\"","Draft of 'Vacco v. Quill (1997)' by steve":"\"67f3bb70464324906c5f4c2f70bbefa6\"","EP_Tips_for_Talking_About_Abortion.pdf":"\"66e79dfe89de5f37bd56ff879e4aaec2\"","Ep343When":"\"0aa931ffc8bf0e7469c9d4dd82629aff\"","Episode14Euthanasia":"\"0497cc723392ae5069bdcbc36f45b973\"","EthicsUterusTransplantation":"\"86744476180a7c43a1ec931bea432696\"","EthicsUterusTransplantation2020":"\"512f90aac763bc0e8ea3f376425dc895\"","Examine personal perspectives":"\"ed1cc02ec22ba991e6744f6d22156666\"","Explain political action":"\"ae6b4cb1e35d9344010111c95692082c\"","Explanation of Project 2 Components":"\"379faaca0e7bae50c92667ecd58df7a1\"","Explore philosophical approaches":"\"7a032fdf004ed9310513d0bd3ba36032\"","Feature of Assisted Suicide Legislation: Conscientious Objection":"\"7604335140a796d2ac2ae710ff2d4efd\"","Feature of Assisted Suicide Legislation: Eligibility Criteria":"\"e84bb4e7a234f1de8123e1c06347194f\"","Feature of Assisted Suicide Legislation: Legal Protection for Participants":"\"5e312da37ba3044752a9a2285fd3ebc3\"","Feature of Assisted Suicide Legislation: Mental Capacity":"\"a463acfd1129cb317e441076fb8ab0d0\"","Feature of Assisted Suicide Legislation: Process":"\"4659f6b0a8e00994d51eaf0c1dfba51a\"","Feature of Assisted Suicide Legislation: Safeguards":"\"b885192506d67a957fd32a38acfcdc32\"","Final Project":"\"d9116de61dd68fa993012e856b30b482\"","Final Project-description":"\"cd1b44a39668d0bec86153c5224758c8\"","Finding Cases To Analyze":"\"ce7332e5711d775b097a212e4cc4d506\"","Form Preparation":"\"c699e5d612820ea7190131489c3cb26d\"","Four ways to choose the sex of your child":"\"30b9b1217b373d45ec95770cffaa2e6b\"","From the Memex to Xememex":"\"b82feec7f55de5eb0fe4241f96d2e9c2\"","Genetic ties and intent as factors in determining legal parentage":"\"c75cdb36fe6f46d81108540d4bb4012f\"","GeneticsReproductiveTechnologies":"\"b818fd448518c46b0061b828b384553b\"","GeneticsReproductiveTechnologies-notes":"\"2c784fed60e032374b534a83d043504f\"","Gestational surrogate with no genetic connection not considered legal mother":"\"11f711597f0be1550e4b9bd207ebd593\"","Gonzales v. Oregon":"\"623b06876a084691812a12b59d17c7e7\"","Gonzales v. Oregon (2006)":"\"49d7a0251b38eed4eab1895bed922ab5\"","Google Form Submission":"\"a2fcd287f553af4ad5b1123a644729dc\"","GoogleSheet for import":"\"324a4052e6c36b3353c3057e4fa720b5\"","GuideSynthesisEssays":"\"32794dca891022fd52f88c67d2eb083a\"","How to Talk About Abortion in 4 Steps":"\"d837c126888e633eb5ab77a56529a99d\"","HyFlex Course":"\"34e41e71bb6415b5c6beca676fc5f791\"","Identify concepts and theories of political science":"\"c59f9f3a92ac4ac4ea0a2620a084b076\"","ImplicationsDefiningWhen2015":"\"b7966a35de726096889f140637541c3c\"","Insights from Jan 31":"\"6e9e6cc84b68c20b89260c9553670ed3\"","Is it appropriate to have a child to save another child you already have?":"\"37001c83c2e35d93a016bb5da4654c7a\"","JulianSavulescuDesigner":"\"ce1276931956987d1727c80a95ec5f61\"","Learning Objectives":"\"17ab6cfd8f2dbfb089fc4f0051b5867b\"","Learning Resources":"\"c79074ad55b586887450124448ec6fb9\"","Learning Resources by Type":"\"9d75353cbdbe6fc3b67176423f50724b\"","Legal parentage and same-sex couples in gestational surrogacy":"\"72e0576dd534b06a991c503e528da142\"","Liberty should only be restricted to the degree that is necessary to deal with harm or injustice.":"\"e4616b460142ccb1f7721c83eab58dc4\"","Link to class wiki":"\"4dffe87e0f99c13d35ab3c43e63241d1\"","MaryWarnockRight":"\"5e10e915dd32ab2663661a1aa073c0e0\"","MedicationAbortionCases":"\"bae65f2191eaa2bce846d096032cb5ce\"","MedicationAbortionCasesUpdate":"\"4b200cb13007832d023196d45960b34a\"","Moral Status":"\"77f03dea04ed4c607f398b9cc9a91fe0\"","Most Restrictive Abortion Laws in US States":"\"427206df7b23d9d3e8a972d58c45ed5c\"","New Tiddler":"\"f44ff83397b574597e824a12f5824ba1\"","New Tiddler 1":"\"408326eab56415611fe0a6377e86237d\"","New Tiddler 2":"\"a7f1b975e20f9432007be60ba6a6399d\"","NextWeek":"\"ac57d8c8b283b4af72118d75613a2fa0\"","No definition of hypertext is offered by Bernstein":"\"087e9c8df06e07a5e332c6135b30544c\"","Non-gestational Parental Recognition Laws in United States":"\"91588f40ffe81a24f8a0ee8fce9929d6\"","Notes on podcast template":"\"7a5d7bc2179529894ec1aa037490816a\"","Open Close All Details":"\"8e4aa07cc7dc6c44a9047649ea4f753f\"","Order of things":"\"a2b04914006e13fe75a04cd5570564c9\"","Overview of Project 2":"\"fefc5913f831e84f346ceaffda051a2b\"","POS 252 Assignments":"\"06820937e0aa14b537401f6fecf1e402\"","POS 252 is a hyflex course":"\"b59838b36a31a6fb6800f22efa6a5bfc\"","PeterSingerLife":"\"c5444333bfed0e8c56f90fa040dc955c\"","PhilosophyBites":"\"d84596fbc28d3dc851eb2a5b3b8decc6\"","PhilosophyBitesRaymond":"\"4439d2e35a3a55c3775192ddd44b2eea\"","PhysicianPerspective2023":"\"94405205bd6a4eeac8eb0e3c244ca21b\"","Planned Parenthood v. Casey":"\"457669fbfa2de04e1c9cf481d1ce520f\"","Planned Parenthood v. Casey (1992)":"\"bb3792c3386295523961ce86f92bf14f\"","Podcasts on philosophical approaches":"\"5c97edd9cc77c3e4b684469cc53cc53c\"","Presentation-17 Jan 23":"\"272bad0b5430a5ed396aace974d16583\"","ProQuestEbookCentral":"\"43d02eed79ffd7e3761807b1e60ee018\"","Professor Contact Information":"\"e6704ab5a87b9cb4f639c33a814675f0\"","Project 2 - Baby S":"\"3575804d84743414000cf440bd40d5e4\"","Project 2 - Baxter":"\"fc8f64f1b8a2497a03ab82fcc0f723d0\"","Project 2 - Dobbs":"\"cfd774f0b82fc174c7ee0a3025632aa1\"","Project 2 - Doe":"\"20be0c821f71279f5bdf2d9117d4b557\"","Project 2 - Glucksburg":"\"fe3b4938819ceb43233374433235015d\"","Project 2 - Gomez":"\"73567b101d218892c5e33678021771cd\"","Project 2 - Hodgson":"\"603f14bd8c6b5699225b324599d6d406\"","Project 2 - Johnson":"\"751b2279bd7dbf79b76ee209b2b758ea\"","Project 2 - KG":"\"93f3325a33c2d394b35b149608f06226\"","Project 2 - Myers":"\"be8095cddcbeae03e8f9ca3ef9f9c2f1\"","Project 2 - Quill":"\"db20b7921347ac7306dba26cda7780a8\"","Project 2 - Ravin":"\"9fef8e11ad6a8d7ed3ec5b87520081de\"","Project 2 - Right to Choose":"\"a703e5f3d68136167f45da7569411d43\"","Project 2 - Sampson":"\"e447d89bee628a5c03f1f2b37f025451\"","Project 2 - Women's Medical":"\"65038f1f627afbb6bc260e71130bbc14\"","Project 2 Cases selected (to date)":"\"d44dcc6780ab62d6c131e4c0c856ec3e\"","Project 2 Revised":"\"35f33bccb103745c4737bd532e5e8404\"","Project 2 Revised 1":"\"0748aa0eab9e3cc849339059a9842ae4\"","Project 2: Abortion":"\"c4a9a78203410518a99a839b8db907a2\"","Project 2: Assisted Reproduction":"\"9819f12a47743cc9277455170c892756\"","Project 2: Assisted Suicide":"\"fdd1909fe00add6fbb5689d1e1b8fcfa\"","Project 2: Case Selection":"\"10d4a409f7542c6c5b2d462f698bd122\"","Project 2: Decision":"\"a1aa86d9eabd1c996f878a0dfd221789\"","Project 2: Introduction":"\"82330b7b41faed06ca7a2c0a76c4f301\"","Project 2: Legislation":"\"8ebf96b1f2d34850cfaff58eb24dd846\"","Project 2: Litigation":"\"99cc1d811928ebd9f40a1f816c3fa2a0\"","Questions from Jan 31":"\"15f03ee761659348177706e496a0a76d\"","RaymondTallisAssisted":"\"efebee974207c38b8e6ab48fe80e1449\"","Readings for Philosophical Approaches":"\"9735b1a376c3f998012e0e33b4ee568f\"","Reflection form template":"\"9b12fbd5e90f8dac13df748891e312b5\"","Reflection on Thu 02 Feb 23":"\"666afdf79054b160a17298d80fbb2d19\"","Reflection on Thu 02 Mar 23":"\"31a4a411bf7df1c50b924edbf361e73d\"","Reflection on Thu 06 Apr 23":"\"0a0fde0cc3efebdfeba49cb106169c47\"","Reflection on Thu 09 Feb 23":"\"b38c121e4f2b03fddf78ee937e8bf929\"","Reflection on Thu 09 Mar 23":"\"e8c202ab732c0d51d117f220c8a9a279\"","Reflection on Thu 13 Apr 23":"\"9b58f4595aed4db8c5053d19f057cdf0\"","Reflection on Thu 16 Feb 23":"\"858897ac9ecce647555ee929132a0c95\"","Reflection on Thu 16 Mar 23":"\"296af85718406f4dc4e5de3464ce2df4\"","Reflection on Thu 19 Jan 23":"\"9d042559b34e13dbb47fa13fa0286459\"","Reflection on Thu 20 Apr 23":"\"0aa1d704b8f26b9077ee7612f2f7b954\"","Reflection on Thu 23 Feb 23":"\"87d71905c096908472b5df143510f41a\"","Reflection on Thu 23 Mar 23":"\"4029758fe2e610ce501cf42a87bc6b0e\"","Reflection on Thu 26 Jan 23":"\"45bfefb6ca79a98741b7e37112561c28\"","Reflection on Thu 27 Apr 23":"\"884ca9dada2c1bad38b313301665e60b\"","Reflection on Thu 30 Mar 23":"\"55fe65200afb54fa476daef314c41e71\"","Reflection on Tue 04 Apr 23":"\"527e9518119dbaa011d2449c48540822\"","Reflection on Tue 07 Feb 23":"\"0658597c324b13c7f7e8a63d0a7bcf7e\"","Reflection on Tue 07 Mar 23":"\"31e730b995d5b91e2d7dfd55142224c0\"","Reflection on Tue 11 Apr 23":"\"5c4fdce5bb864a9c227be94dc41c7a23\"","Reflection on Tue 14 Feb 23":"\"daee053cb8df1527f119a51309b5dbd1\"","Reflection on Tue 14 Mar 23":"\"6bb46a642226ac642b5c7d4b2a97c818\"","Reflection on Tue 17 Jan 23":"\"95c792c69ccab9cc3439676097670a73\"","Reflection on Tue 18 Apr 23":"\"6d75b8e6c586a94d4bd67e0a8c0e7701\"","Reflection on Tue 21 Feb 23":"\"70fd7f5b5ebd215ff3da96c7de926689\"","Reflection on Tue 21 Mar 23":"\"0e7b768c3997010ff1f6d08cf3a40597\"","Reflection on Tue 24 Jan 23":"\"e28854e876bcc8063510d6e9bff205c1\"","Reflection on Tue 25 Apr 23":"\"2dbc2b8c2ff033033a6c98120ee65629\"","Reflection on Tue 28 Feb 23":"\"567359601430bf1d40bc4794101af2cf\"","Reflection on Tue 28 Mar 23":"\"37d456661f2834d7ecbf242ade10df92\"","Reflection on Tue 31 Jan 23":"\"0f74721be3fb89cf736b6da933051d22\"","RenameTags":"\"f2aa40a1c9bea4bfc48c9dfaf2459a4a\"","ReproductiveTechnologies1012007":"\"54e4e86228f953f9d06a180570a02302\"","Responses to Part 0":"\"14d8b846d82ebe45a7e9f6791f25d61e\"","RightsWrongsAbortion":"\"2fcce2c380c4143981c3189cfe2e0fac\"","Schloendorff v. Society of New York Hospital":"\"ef4035182c517a71f81fff731db6a1d4\"","Schloendorff v. Society of New York Hospital (1914)":"\"7bec920ffaa73f867907114da2e5b704\"","ScottSignsBill2022":"\"509d96c7988b720e865f31508725c53b\"","Semester Calendar":"\"7f85714db36662c11ed8783d34a485a5\"","ShouldEuthanasiaBe":"\"0a1874f2206414d9babd95b33b1cd573\"","ShouldWeAllow":"\"93a9da6e76a381c38cce9f0b79472ae7\"","State & National Policy Overview":"\"81b2bcf4268024212bf73f3ed172b7d9\"","State & National Policy Overview By Issue":"\"f6fbcf351fe610a66120593d501f182f\"","Student Learning Outcomes":"\"f7b365ff5e2d77945a67fe7e600b3db4\"","SuicideDocumentGale":"\"41584b02a993982dcaadc42fdace9935\"","SuicideDocumentGale-notes":"\"7bea46cc1b89cadf53a97169cb3e319a\"","Summary Essay: Three Issues":"\"31d5b5bbcc8ddd3656aced63ffc266d2\"","Summary Essay: Three Issues-description":"\"126d4e756532c575a57ef188dfd1b2a3\"","Summary: POS 252 Assignments":"\"e11900dd0dd1e6b5f987d5f830f576ba\"","Surrogacy Regulation in the United States":"\"156897d56b687f23ea365c2c6f4726dd\"","Surrogacy and Assisted Reproduction Legislation Globally":"\"f016abd140dbde69ba408d2a00fe6a88\"","Surrogacy and Assisted Reproduction Legislation in the United States":"\"a71a84a921da83118c88526e9d410b6d\"","Surrogacy contracts enforceable and pre-birth parentage orders allowed":"\"aa34d9f9c3e1bc61a8e3552c85a0aadf\"","Surrogacy contracts enforceable under specific conditions":"\"ca84f5ae39d78d716c361b2c95b345f5\"","Surrogacy laws and the best interests of the child":"\"c135e3e9ee9824bfc08575563d315a22\"","Surrogate who provided egg and carried child considered legal mother":"\"d047bd8de54dbcc866085bd8eeaa5310\"","Synthesis Essay: Philosphical Approaches":"\"933f914c818701efb27a93ea30df7b6a\"","Synthesis Essay: Philosphical Approaches-description":"\"2c49f705474d66e1d36be6b43069cc86\"","Synthesis Essay: Political Policies":"\"39920cc4bedc66b42c4b03e366f6a175\"","Synthesis Essay: Political Policies-description":"\"e59d1d4a8e69769b1924cb1b1cf55d38\"","Talking":"\"daf1506bf9bf4d07cf67e034798e8829\"","Telmiger Details Styles":"\"d72ffcee476392389e664774dbfbd6a5\"","The Dobbs Effect":"\"44c6352857619d23fcb8fe777c9dd92e\"","The Yuk Factor":"\"e11cd7a45474593e0ba0fe230d474dee\"","The ethics of uterus transplantation":"\"49f7465e938861de8146f35b629db93e\"","This Week":"\"57d68fa3aaa98f4e937b953c23db6847\"","This is an example of a tiddler in Classes":"\"19b1f1b331cb5fc0d93fc93ca763ce68\"","ThisWeek":"\"d5f970f0bd577d3923b180f8907d6f9c\"","Thu 02 Feb 23":"\"7c529076087e86d179f6f65d32f89143\"","Thu 02 Mar 23":"\"047121f88be2830c300760a0a906e939\"","Thu 02 Mar 23 Topics":"\"fbf6f48cf3760bc422eb0b51c02226ad\"","Thu 06 Apr 23":"\"467088dceabb0353e20470cfc4978cb1\"","Thu 09 Feb 23":"\"8d664967d0b1f8fa1ec209213f69e04e\"","Thu 09 Mar 23":"\"f0118c5c76abfc29e03d65ebf9a579cd\"","Thu 09 Mar 23 Topics":"\"1f34454efe83b629265aef6b2edf1adb\"","Thu 13 Apr 23":"\"db374c3e0e7cb1bbe92c7fb8b56f974b\"","Thu 16 Feb 23":"\"f4fbffde97e69e2046dbc43496b5ef02\"","Thu 16 Mar 23":"\"33049d9222fe78fe333929e0b05dca2f\"","Thu 19 Jan 23":"\"ba86d0d778bb97e55e601ca6f3597b52\"","Thu 20 Apr 23":"\"aa5798870549c26bd67cf0d642b2f1da\"","Thu 23 Feb 23":"\"03db551bd3d82ff22a9b83ef09c5c7c2\"","Thu 23 Feb 23 Topics":"\"761252b6dd7311f7921791d9656ea24b\"","Thu 23 Mar 23":"\"bfbccf08e200356f21a23dfff69e90da\"","Thu 23 Mar 23 Topics":"\"d5caa6cac3dee760827c12258b650164\"","Thu 26 Jan 23":"\"4433069f5962283f953c3bf0847f8d57\"","Thu 27 Apr 23":"\"d48839266426088a87280587e5ecbd2a\"","Thu 30 Mar 23":"\"cc0dc0c4cee1430e18b8cd0e6d318b1f\"","TiddlyCampus":"\"dc3689dca8541332d04a8eafa5010874\"","TiddlyClass":"\"ca631247d7c9eb04e797db2e58ee1134\"","Topic-By-Topic Calendar":"\"3f0ffa5182152622a76037124c85df45\"","Tue 02 May 23":"\"3b7464d4d2964a87abf9805302c79c47\"","Tue 04 Apr 23":"\"f56880f7376d82f8c7bb2e7bc84e49c8\"","Tue 07 Feb 23":"\"18fa99548e3d37a18702ab138b61f9df\"","Tue 07 Mar 23":"\"c4cb901622e406d51929f4a1c44c9f58\"","Tue 07 Mar 23 Topics":"\"94d94f543859fe978e791b0ed93eb57d\"","Tue 11 Apr 23":"\"bade7eaca58d7a157e90c230fb8a09be\"","Tue 14 Feb 23":"\"731f3c3a1aabb23da5a22ce3078cc02a\"","Tue 14 Mar 23":"\"cd724670dc761047680b6ad04dbb0b20\"","Tue 17 Jan 23":"\"76885cdfaece97275ec2a52c7926739b\"","Tue 17 Jan 23-insight":"\"5a941b019576b5cc1746ec0526241fe1\"","Tue 17 Jan 23-question":"\"34c8af53d7a6432f62d87df60d38b08c\"","Tue 18 Apr 23":"\"60cd727ea4aa8aba027946ed1da1bef3\"","Tue 21 Feb 23":"\"0f9bb3e3856d6bd278f03e3d60c8e64d\"","Tue 21 Feb 23 Topics":"\"4410ebfd78e1b5e9678ad1a054abaf01\"","Tue 21 Mar 23":"\"d938af2e021c0da9167551de1bd35243\"","Tue 21 Mar 23 Topics":"\"c92593c9eb34f59b5a19ad6c0f7d5708\"","Tue 24 Jan 23":"\"eb99fcb8e92e1686e3473ff6869abedb\"","Tue 24 Jan 23--presentation":"\"b89c4bda853a6504f3c28eef4ecf50bc\"","Tue 25 Apr 23":"\"a019214a97a9b04822fe2f23244ec869\"","Tue 28 Feb 23":"\"3dfaacce3770f56a548763375cf6a449\"","Tue 28 Feb 23 Topics":"\"e507b2823efaefa20e008493891662e4\"","Tue 28 Mar 23":"\"c857a48ff01694d3edbf9184d660d7ce\"","Tue 28 Mar 23 Topics":"\"746572f4e09096de768ce7d135816499\"","Tue 31 Jan 23":"\"a3b8f949b7476fb12082616ace66030c\"","Types of Morality Policy":"\"d378bf1f4f5863a13f04b70bfaba73d0\"","Untitled":"\"edb9f88b42b4bc21bfba75ef46a23a0b\"","Untitled 1":"\"cfc4c41c0b9bb7ee940ab1298311e79c\"","Upcoming Classes (07 Mar - 06 Apr)":"\"1dd527e00d7fe749995f6b71192d655e\"","Vacco v. Quill":"\"1bb0ce81d2f781f12a5c67b20acafe16\"","Vacco v. Quill (1997)":"\"bc551b71c14ea28498ef8df7871f450e\"","Validity of pre-birth parentage orders":"\"ebd98caab6dd0826419873b579d16637\"","Validity of surrogacy contracts and genetic relationship to determine legal parentage":"\"af799af988452dd597b0de1cb5f05005\"","VideoAudioMoral":"\"93492e4a458fa5be4c77d98cc3dc1096\"","Washington v. Glucksberg":"\"92ae5920fa1dfa3f8d9db2a0942fa0b2\"","Washington v. Glucksberg (1997)":"\"4208f742fd74d8f3a9614d81b3cbc1c4\"","Washington v. Harper":"\"c5b1c9c495cae5a3288b77e797498d75\"","Washington v. Harper (1990)":"\"045ef36da36ee6bb70661bcf08838113\"","Week 1 Readings, Videos & Podcasts":"\"3fd18bd722948fca7c67391d30ceb36a\"","Week 10: Philosophical Approaches & Political Policies":"\"124de9f3460224f1be9c5ef276786722\"","Week 11: Philosophical Approaches & Political Policies":"\"5bba1d983df9756bcb509851b06e1256\"","Week 12: Philosophical Approaches & Political Policies":"\"293170bcb0ac89246f36c8827a50b791\"","Week 13: Personal Perspectives":"\"6094d21041b73728c4d7b3df08d9a917\"","Week 14: Anticipating the future":"\"88ce76934f55cbf54b9badf82109544f\"","Week 15: The Politics of Life and Death":"\"8e772ddd108f276e32a3d272f3096552\"","Week 16: Finals Week":"\"9574a19cc21c800c6340cbef82b754ea\"","Week 1: Morality Policy":"\"13922e5cbcee7f1baef6e9041246fd2d\"","Week 2: Philosophical Approaches":"\"1cd41375d5e275c9de99a0ad2c7caab5\"","Week 3: Philosophical Approaches":"\"3a39f411a5c07823469f968fb101eaf3\"","Week 4: Philosophical Approaches":"\"38404647ae66db7f1a20455008a72d83\"","Week 5: Policy Types":"\"96f0cf31c1919b3eac80237ea858f809\"","Week 6: Policy Types":"\"5316dddfe8dc53df6db02eee52527811\"","Week 7: Policy Types":"\"9295efbe38af3e66756e66e070d71e6f\"","Week 8: Personal Perspectives":"\"de4ecfcd17311704d0ae5eba0c63cd59\"","Week 9: Spring Break":"\"06d0c61a32c238352b121063e9ff31a3\"","Welcome":"\"e68625ef313b8789c24cd43f25e9ce02\"","Welcome to The Politics of Life & Death":"\"2cb63f96c0c9afb1d342531252574596\"","What is Morality Policy?":"\"029bc441084a4f7b35f3ca70f97add3c\"","What is a HyFlex Course?":"\"f419672644c46cab43cf6b8000bc656c\"","What is the basis for state / national legislation? Rights or within the responsibilities of the state?":"\"65305db269a3908536c45c1f4f90bf06\"","What is this class about?":"\"97c2bfe06959793cda2ee3313a44946b\"","What's Next":"\"67a5135c1437cf9d86765dd4d1168c14\"","What's next: Thursday, January 19":"\"3ca66ffc9a96f6c052bd83c6dd54df5c\"","WhoseRightsAre":"\"80226eb841481f9f0f26551427ae0804\"","Why would people object to genetic engineering of human embryos that are brought to term?":"\"999791f17a8a10c811b8c31286096f9c\"","WisdomRepugnance2022a":"\"7d41744f551612f8e321bd18c7ccfcb0\"","Xememex and the syllabus":"\"94712d20ad8b34089f2ea14e0a449d47\"","Zoom Link for Classes":"\"efa02c23d3592381363ca3068afe84e6\"","ZoteroGroupsForClasses":"\"44a3711ade09aa58ed910e634bc734e9\"","almondAbortionControversy2007":"\"9df143bf9fd54633e1745962adf0a6fd\"","altersDeathDyingEndoflife2013":"\"af3c17ae71a482aa651bdb0d8131d24f\"","anderssenCanadaWillSoon2022":"\"731df50187d608fcdeb2b4eae310fbff\"","article":"\"5bbea57c4d2b50752a7a4b2d56d2e623\"","attend":"\"bc81ac6bae3e177c84e3717972e19bba\"","audio":"\"d82687c540dc84d05aca7781afaf8459\"","batemanExploringReproductionIt2020":"\"c1d42543c0b428e83c294730dae1fcfb\"","battenDeathDying2010":"\"8e70bb400cce70e60b179730e9eca03a\"","battenEuthanasia2010":"\"40b2adc975d92c8728b3df2c3e866dae\"","battenIllegitimacy2010":"\"8c4c4365a991d1a27d16701822a3827d\"","battenPatientsRights2010":"\"6739253f62ab306cbcc5b41702028ea4\"","battenReproduction2010":"\"ad379ce9a3e66bc0737d74ee23b62241\"","battinSuicide2006a":"\"6081f61232f198d893ed8ecf8ca1fed7\"","bernsteinDisasterDoubtOrigins2022":"\"789b45b02e4cf1b6e011d1c754a518ce\"","bib-macros":"\"c894137d019d2f4fe1bf4803e96e4411\"","bibtex-entry-template":"\"577d80465dabbbd960fb681b0cb07c34\"","bibtex-field-template":"\"1d0c4ee9bdd89556344fe0bced729288\"","bitesSarahFranklinSociology":"\"f79792128db90ed88eea1a3ec398d6ba\"","bitesSarahFranklinSociology-Exercise3Annotation":"\"05887dc4d32902cf95d6236525038108\"","book":"\"3d2e7e3931c3022e77dbd318c26c656d\"","bradleyLifeDominionReview2014":"\"2778ed9810ec9531edfc8102a7584ac5\"","brakeParenthoodProcreation2012":"\"21b56cf5acb0fcd736f72adc72220c0f\"","brakeParenthoodProcreation2012-notes":"\"79a2317c0a34ff15ee08cbe9b0510fac\"","bushWeMayThink1999":"\"985d1fa457fe7ad5cdc98a927f57e7d7\"","bushWeMayThink1999-001":"\"c8eb7f562a0547478639b28c3ea6b94f\"","bushWeMayThink1999-Exercise3Annotation":"\"c94118d8c7a47be4bf8da4ed3f045052\"","cholbiEuthanasiaAssistedSuicide2017":"\"53e2c6bc71461d2f1947ac5d38b42966\"","christmanAutonomyMoralPolitical2020":"\"5f95d434ba97b836f8caecdbad85b683\"","christmanAutonomyMoralPolitical2020-notes":"\"93aeea2fa6dfd34a4b5f16381afb3ed2\"","clarkeSanctityLifeSacred2023":"\"19126cf2a7e26b2c7abe39942a303587\"","colbyUnpluggedReclaimingOur2006":"\"0cda4a75e8431e177a31e9f9b55ee255\"","colkerAbortionDialogueProchoice1992":"\"abba20c849f7f0b9cccaa8d42dc14a90\"","daarNewEugenicsSelective2018":"\"91cfb411563e33ba3ac128f2e02b603d\"","dameResolvedLegalAccess":"\"b3c1dd2729746b6805291d225ce64dc1\"","degraziaDefinitionDeath2007":"\"836aeb8a9b1b74d27f2ec525b2e9c377\"","degraziaDefinitionDeath2007-notes":"\"fabd2a7f41226d6e2ef28845769661e4\"","devon-project2":"\"1b71501113695a51ace7ab40bbf21e49\"","dombrinkSinNoMore2007":"\"9ae2b2b759576dbdeef3d4a8f3f9344e\"","dubois-pedainFreedomResponsibilityReproductive2006":"\"972b1fc63f0c8e93a941e432ac414a2b\"","erteltMinnesotaLegislaturePasses2023":"\"afda7fe0eb710bf94a80d4339c768760\"","euchnerMoralityPolicy2019":"\"c0006bf19a7e79f32c46eb990fc1488d\"","ex3-annotation template":"\"37720cd6dd99fcc3a50796bd7d7a772d\"","gammeltoftHauntingImagesCultural2014":"\"ce2597272663b9d56c63eaf8c2ce800e\"","gertDefinitionMorality2002":"\"eba9a318ab6f70259cfcb57d7932bde6\"","gertDefinitionMorality2002-notes":"\"e337df75c78510fddce9f4de4e9fa72e\"","gertEuthanasia2006":"\"2b9bfc3204568f46a6742c49f35925ac\"","gorsuchFutureAssistedSuicide2006":"\"d07f96d63e7b37de67f23660758ec253\"","hacking2008SuicideWeapon":"\"cb34104f01e12f50086c560ec9947441\"","hampshireAssistedReproductiveTechnologies2015":"\"907607b80ccf69903a237c84fc1795e7\"","harrisEthicsEuthanasia2005":"\"d8323e2b9c7daec979b96523a31d06be\"","healeyReproductiveEthics2019":"\"e749f93c9f599ad45ecf5ada71ef87af\"","incollection":"\"c70f61768ce50e50382b902ce136abb6\"","inproceedings":"\"1c3d9041368c37a1f8546fed964ab6fc\"","inreference":"\"5c4589e151697aa48f00ff65755623f9\"","jacksonRegulatingReproductionLaw2001":"\"936e5fa3d0ce13396773e4985953479d\"","kaczorDisputesBioethicsAbortion2020":"\"7c8b11c4aefb7bac568dd589d0fa7cc9\"","kaczorDisputesBioethicsAbortion2020a":"\"793127b6ef98b83c951ae511e876ea38\"","kaczorEthicsAbortionWomen2015":"\"4a5733631c2fb1f2016a200fdedfd7c2\"","kahanePainEthicalSignificance2006":"\"b2071c53871d572308499c662eabf8b5\"","kammBioethicalPrescriptionsCreate2013":"\"a225118e9e71eb22f43520d3588f3aaa\"","kassWisdomRepugnance1997a":"\"5cba0db44c2dae73adee7ee5e287463a\"","keywordToSearchFor":"\"ea9c454feeccb9f1fc807f0b9b62ec3b\"","keywordsToChooseFrom":"\"8c4c5191b090665d3d63073844827e10\"","macguiganAbortionConscienceDemocracy1994":"\"8aee54518efcc732d500d3ae1d9dd134\"","macklinGeneticsReproductiveTechnologies2006":"\"795e13ec956ed4fb240da840abb82a22\"","mariscalLife2021":"\"9eb84ed345633553a9d05c479b1dffaf\"","masonBabiesTechnologyAssisted2017":"\"f9d325c68f1fa8cc1896602d9e2060f5\"","mccarthyWhySexSelection2001":"\"883bbbd92682d0649e55fb3c610a86db\"","new today":"\"e5da69c0a05b0ed1ae0a3e0d78d57bfb\"","novakSanctityHumanLife2007":"\"0f67421f6aa28a0c4c08cc251971daba\"","online":"\"bf30c0dfc8811b19e03b79a430def2f4\"","philosophyNewBooksPhilosophy":"\"394e9557adba504d19b9242413012346\"","philosophyNewBooksPhilosophya":"\"cac0099ceff8e24b91a150c13ad5a03b\"","philosophyNewBooksPhilosophya-notes":"\"91458939236b27701b1c38c5dbd571cf\"","project 2 case template":"\"ac5bfdaf39c888a52e0e1a6163b51e23\"","pubPoliticsPubState":"\"e6064ea671b1e9049993b7bdf3970f61\"","schenkerEthicalDilemmasAssisted2011":"\"b9698d086025cc9f2a247756562cbdf4\"","schwarzUnderstandingAbortionMixed2012":"\"41ed60dfc6640d94712e0cb93ec0d1e0\"","shapiroLawGoverningLGBTQparent2020":"\"54af1fceb662fb20af18234096ce5f3e\"","shawProvidingMedicalAssistance2018":"\"ff5d6fc1b583550babf86ae7d832668d\"","software":"\"eeef9ab8b07acaec335fbf85499c2c51\"","stavrianakisLeavingNarrativeAssisted2020":"\"f72283154dc07431c2fb36c748c2518c\"","t1.tid":"\"e118b9a684d520aaf0b299b9b6ecbe9a\"","t1.tid.rtf":"\"de9730d92af9065fe66a5727097f2eeb\"","t2.tid.rtf":"\"97ef76cea1ec0efbb12178ddc4404685\"","t3.tid.rtf":"\"40b32efb0d073935665c223389a56322\"","t4.tid.rtf":"\"a22e6050c353f23bbc8a8cb50d325620\"","t5.tid.rtf":"\"c4f1342c9a5f8f9004868cfa423058bf\"","t6.tid.rtf":"\"60e6ee812d463c1dd439acca41038309\"","t7.tid.rtf":"\"6af66d746399c9aa7a8aea5516585c0d\"","t8.tid.rtf":"\"349a12a077aae2dbe4bbf84f32cfd4bb\"","t9.tid.rtf":"\"bf754e7105fadb2196e6f610d590cf6b\"","takeTakeExpansionAssisted":"\"9d70e0172e9407eca1138da148e35531\"","takeTakeExpansionAssisteda":"\"cec3d3b9749ff333e562fe7e760a171f\"","takeTakeExpansionAssisteda-notes":"\"f65c5eefb5ea0707ee5aef856281d867\"","technologiesMoralPsychology21":"\"39c420b46da83fb56277b89bd794f4c6\"","technologiesMoralPsychology21b":"\"1136c2a8d493d6a233af53d33adaea2e\"","technologiesMoralPsychology21b-notes":"\"3e695c490242d50c967171afbb8558ff\"","tyrkusAbortion2022":"\"5ec5e6634fd0a9da7021014a9120a561\"","tyrkusArtificialInsemination2022":"\"62a19f5f74d9b4ee491365dbec7e7686\"","tyrkusAssistedSuicide2022":"\"f9638a8087968453523c75132bf8bbb8\"","universityAssistedSuicide":"\"47d28d761adf956eb8746bfb9401e23d\"","universityAssistedSuicide-notes":"\"20f310ebb1b9f366a14d604562b1c5c5\"","unpublished":"\"9a4526e0bc28776cfb3f7671b159c1a1\"","video":"\"490135caf838c6de5c549f58b36b018b\"","walkerBioethics2006":"\"07dfa3a9e9780afded6d4f7f16300c65\"","walkerMostAbortionBans2023":"\"6c224b07ee493b9304199b656e4a5df7\"","warnockMakingBabiesThere2002":"\"191f1e34d96cfbc08f7a2d3fa26f35b6\"","warrenMoralStatusObligations1997":"\"389db1846494b29042310d0695e937ce\"","watsonScarletEthicsLaw2018":"\"bf1b5a0be01aa87de695d62e13e00a06\"","wikipedia macro":"\"4db387e88923747d72076b6a4e1e94da\"","xxxbattenDeathDying2010":"\"4be7210b74c41d5a0b14f8f426ec994d\"","yalomMatterDeathLife2021":"\"eb8c3e10715088c61ceee834de24494f\"","youngBREAKINGKamalaHarris":"\"dc8a4b190b4530d75381ec3d254e0cff\"","youngMedicallyAssistedDeath2007":"\"b247f6008caf221500407292d1b19dfe\"","youngVoluntaryEuthanasia1996":"\"2d284bae31bd960bddbd16dbbd236562\"","youngVoluntaryEuthanasia1996-notes":"\"562f00e15f7099603e304d73e2d17d9a\"","zotero-bbt-annotation-macros":"\"495e65a7f2ba54da96409925fa6fa941\"","zotero-bbt-macros":"\"c48e90f90c256b3e7326ebb0d0c724a0\"","zotero-bbt-macros (depreciated)":"\"070ccb9e9032a9d949cce0597b41aa2e\"","zotero-resource template":"\"7f8ef9e96296546fb5acd16092f2a777\""}
https://3ra8f69t8l.execute-api.eu-west-2.amazonaws.com/prod/
7dt020qa8e7mu1oqeqqc0sdss4
eu-west-2:a8912c43-2425-4dc8-b508-26f00b4c2342
tiddlyclass-class-pos252-hilljb
/*\
title: $:/.tb/modules/startup/hide-sidebar.js
type: application/javascript
module-type: startup
created: 20151010151732122
creator: Tobias Beer
modified: 20151010151750739
Hides the sidebar on startup when the config tiddler [[$:/config/hide-sidebar-on-startup]] contains "yes"
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
// Export name and synchronous status
exports.name = "hide-sidebar-on-startup";
exports.platforms = ["browser"];
exports.after = ["startup"];
exports.synchronous = true;
exports.startup = function() {
var conf = $tw.wiki.getTiddler("$:/config/HideSidebarOnStartup"),
value = (conf ? conf.getFieldString("text") : "").toLowerCase(),
state = value == "yes" ? "no" : "yes";
$tw.wiki.setText("$:/state/sidebar", "text", undefined, state);
};
})();
{
"tiddlers": {
"image.png": {
"title": "image.png",
"text": "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F/p44D37W37opCp/8av927ulE0/s39I9P67v331D6fJLb3i6LE+uvXJh3V43z2aXXdzfYNf+4g2lK35eT89ZXzHnXeINFTtPbtMpX94pKxIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECERgSAL16UdXxSTe1q+v8gM6ibJ0l/j1Vi8J1LR/zm9XjT86PjWXJvYO6O8nidRTPti/falKf/Om6mmyJVDD+PRjavsbX1vx0kuWasT+fh4xXuVPrOvfntKPzq9nT31qxbe9peLJ7664b69i7qX6W+11/puWgK2983/stX7T8rvn1LPFvg5JbKffLRUXOu582823/ofWlcDzJio+/fkVX/fGite1DG7uCXzv8dqecd77zip7JECAAAECBAgQIECAAAECBAgQIECAAAECBAgQGFEgl+hdP1MN3j41YsNOte69OS9q/e2+e6figOKol1zNJXNzidJc4vTu7RKsA7rfZPP4eG3aZZdNdvVteF/zyD1TL5+t3Rm/e2/OvsZLUMgleHPp4lG7XL26al7TmW+cu/3M9xK+/9Bc4hCnbr+DynvvXXsOP7y/Ri41nH4Tdx20VLO/+Q2lHGfav6nN94YKnSererUh9ROHXcL3lOn+dsMu4du9F2zurVu9bPqY8/MDHe+cj8dPVptvzlS8Yrbi84/btC9bCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEbiyww40LG5+veVw9zwrFN3Qusbqx5uafven4/v236lX5936rf/tiS+vPrR5y5d0VrcNX/209GZZoXLmy6r2zJaQG1X9uS0AdNVH1H/3Qii96QcU8PnWinq1Zky1LG2/Tq/4efOT8+j399Kr/5XX97a7oLw4t7TDgvPn2Of1NnzhR5Qd2EqL9tTaWXvBH9fzhj9q4zbNNBXZqS55X9mrfKesq/r/2Pt2ximOvae+/Q1bVhhNf33YIBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC8xP4r+mq/+UW59d6Y+1brqzn3RWP356p7VnpurFF/7P3T1U5K//e2sr9tTaW/rFTP+0+NF117tirmATgES2x99m2PysUN/ZYz+7f6l05W+UndBKjSbh+ovWTcX8yU/Vv37nEcLf/+ZavbfP4ShvvdvuO1kNWbJ7b5pV5/lbneNJbVvCmXuKhbWVv+kuiONu7r/fP2nx/u42Tdrfdp0Z63nEV43twZ+XwvVbX/oyfuE9rn/kOi/M9n3I8GS/xjr3Nj/TJ9rqk/gmTm6//xOaS+hfObL7+G6Zqf+pnhe7mW9lLgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwb4EXtERWEjO5ROi8O2oNkljMJUnTb+IrWmIplyTNOGn31ZZISv0kOlOvG/dvicok7NKuG3NJ02z/aRtnv04iMitwM/9Tp7sj9pfv1hJ/6Tfxc63dqJcu7u9101ISqOn/7Db/x7dEXFbUZqXiUePVx0faPNLu31o53t2RMt9cEjntcjyfbu2f086btH/NZD1L/W68arb2X9di9g9KNCbxmnqJ3UR2xu/GHN98z6fupXUzbjy748Q7l1hO/WGXMn7J2uop9RMHJYjPnOmvn9cn5/H32/5c0jeJ9o9OV7skzIf9AUPV9kiAAAECBAgQIECAAAECBAgQIECAAAECBAgQuBkKfL2TkEkCJzEJm6zYHEaUe4leMKTf9J97oz7i4ur5G0PandH2P6CtDO3O56CWyEziKON047daP4et7u8hKy8vma3taXd1K3cThmmdeaV+N/5PGy8+aTffeFmbx4lT1fJL0xWTSEti8tJWL/PIytBXT1b9PfYcbeT/2+qn36wUfetUtU+CMr2l/Cdra0vcMo/E9Jd7hHYTev/c+s94aZeYROyHpzNyf8x5MN/z6Y1t3EGJ+Itna5xXTla8XzsPfzRT5cyvG3M+5t6ySUQP8vlh6+9pE9VvHn+3lbv9z7eclazpVyRAgAABAgQIECBAgAABAgQIECBAgAABAgQIEFhx8yBY1avjvHtLlM6cWeUzv1Pxuusqbi+PvzpeM/34uv4Z51K+92kJvaxE/X473jNavLglqvtbDy9lReS111bdUfvJStZ737/a7daG+u9v1JOLLmwbhJEEkrg+qFfVn/ikirdulzTOpbN3b9B7r6z9+7b4tGOqfMh4xdvtWvHq3ES4ih4JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCw7QocO1Fzy0rTQSuwhx3BQ8arRlbS5tLDw9rZT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgW1GYKZzieDXTtbURk2A/tK+Vf/z0xVf19pvMwdoIgQIECBAgAABAgQIECBAgAABAgQIECBAgACBrS5wM7mE71Z3NgECSyBw0lR1csxEf2cXrK/y9LqK51cY27HFO/XqyVHjFf/lpIrHPKuiS/eWg0cCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLYjgV12qck+c6Li12cqXj9bMZf2TfxZ2/656dqfBGqVPBIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOAmKLDrrnVQBx5Scf8DboIH6ZAIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYHsQWFGTvMMBFffec7RJX9eqXXJZPbnwgopXXz1a+2G1dtihahx4UMVfPqTiXVdXvPjiiv/1hYpf+0rFq66quNjHO/WqhwePV7zrnSp+95yKp61r5fUV99234oMPr/j+D1Zc6sfbt9fpIY+onlf1Kq5fX/Hz6yqes77iQh9vs0+13LfFYf2cf2HV+GmLg+pvqfkPGt92AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAiMJPGOiqn1xuuLs7PziVa3+Z1v7e7dEZ/Uy+uODxqvuN2cqXt/6PauV/7X1f3orX932X9HiHx9X7Va0xHCVRn986dqqe2XrLw5ntPF+2mK2n9fKX2/xXVOjjzWfms+cqNqXzVbM+N2Y1yHHMZ8xblx3enrz43THPWbixq03fb6l57/pDGwhQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsAiBf2iJwG6i7OHj1emBbUXo705UOQnO1E9i8wUtoVm1Bj++vo2XhOmPZqruEW1F56CWWSn6pU7C7+OtfLu2MnRQ+2x/bptn5v/l1v7u7ThTLytjx8dr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dPWVdv/WyjmuTUcabctee1e9z3T6zzjzjW+cmnvcC2dqe/pLgvala2v7mnb8f9fa5/U5ZqL2D3rcUvMfNL7tBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBYlkITjJbPVTRJqg+LpLfH2K0MujTvfSR16SLWYnq54RZtPEqpntHEvb9tz79EvtfoPGp/viFX/stbfiVNVTn/Xt+25FPClrRyXjP/qyWqXFZcLm8XGVm9o88g4i433H/A6vWRtjRnn7ji5xPIp01Xv7u312TjTuZ9tqfnPPbqtBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBYqsGKhDbdMu6z4PPQeNd6hvYoz51f82lcqXnVVxYU+ZiXrx9f195BL+d6nJSCzEvX7Z1a9M1q8+OL+dttbKSt873Xvmvll7Xi+eVaVk1jd3o7LfAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC26jAHQ6oid39kNHiIa3e7Vu7XXbZRg9skdM67rjq4JyZis+YWGSHN9PmK1bUgR85XvF5zfX5LT6sbd9xx9q/vT/ea3UdwWPWbO9HMtr899mn6n1x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IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECwwRWbL7CPvvU/kc9tuIdehW/d3rFz3yh4o/Or7jYxz9bWz08+MiKj3poxT32rNg7oOJCH39ycbW8YMT57r571f/eGRWf/NSK69ZVzOPt27we8ojasqpXcf36ip9fV/Gc9RXn+7ilX4f5zk99AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAjdpgaPG6/Aunq04OyBm/6+tWRqOb81UP3+ytr+/yVYeNI9Rt79qsr/fYaXfasf1s3b8u+7a3+KZE1W+bIBP5nVV2//Stf3th5W21uswbF72EyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIELhZCGSl449m6nDXTVd82WTF01o5icHE9a3+DjssjOmw1dUu/d25V+Udd6x4bus/+xcaHzpe/Y36+IGpqvn3Labd+Hg9u2624rUtxutj0/3bu/N9znG1f9Dj1nodBs3HdgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQI3S4H3tURhEqaDEP58be3pJgYfNl7b5/v48slq8aWWeEz7x7cVoNfM1pbntsTjoYdUOStCd965yt14xkxtP7/FURO8e+1d7a5o4z6mzaO2jo19ZrqefbrF27ZLHWd/4q8cXs8ubf3E68KZ1Jg7bq3XYe7Z2EqAAAECBAgQIECAAAECBAgQIECAAAECue3KnAAAQABJREFUBAgQIEDgZirwwJbwG3b4++1bNbICM4nB+43Yvtv/t1tC8YWdlZn/OFU1f3ei22Lz5YNbgjXzenPrZ/OtNu7NeBe1eSUxm8TqT9v2Xm9jm809e3E7rswn8U4D2m+t12Fzx2AfAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIDBJJIzKVrz2kJxRUrBjQYsPleq2tH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QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg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6J+sre3rZyr+dUs8dROZSTj+oNXLOBe08olT1T733PyfTr3U/9x01XtLq//clsDK/oy/U0uMVu2xsSQ6U+8NrX32J2al7M9ma0vqd+MVnf0/nan6SSimv/nGzPvHrb+M+76pzff0krW1P/UT9+nc6/XZHa/UO3W62r+1jZPjv3y2v9+zZqo80+KBLZH6m2v666Xf8fHa3n3M+fEf0/3tPt7K3fopP3rAOFlRnHqJr5msZ5lPN141W/uvazH7T2jt0k83vmiA431Wd2sqEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIbJcCSUB9arqmnwRaEkqD4ukzVT+J1mEH//sTVePc1i79Xj1b2/9qsmJWtF7Stl/f4nunav/OO1dMAjWJsPSXhO5np6veta19EnS3WlnbBz0e1BKDX2nt0283fmumejhskYmz+7WVrD9q/XXHSTnzuW+rn4Ry/FIv8Yetv6dN1Dxz3Ke04+omDr/R6qf/tWurXfpLwvth47X9DVMV8zqlXmIS4W9r9dLuO22c1OvGuD6ojfOPrf3PZ2u8bv2cr6+YrP15TKI2if5BTnF4eWu/Y3dpbDpscWKinmQeOb9W9Wq7RwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgW1VINcunef8smL04IOq4WEtofg/F1d5/fkVc0ngeXY/lgTVPdo9Sr/97erhip/395R7lO7VLpl63nlz78/W3AP1kLvVln3bytmzz6zyt1pM/VHjql7VvHtLlM60fs78Tm3PJYCrtP08HtAurbxjW7F7zvq5535we/2/e3btv/bauett61tzaep7379mulub8H9/o55cdOH8juDww6v+j9v7YWb9/NqrTYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE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BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEa9N9UAAABuBJREFUEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBD4JAr8f7ddfpOn1M5gAAAAAElFTkSuQmCC",
"type": "image/png"
}
}
}
{
"tiddlers": {
"image.png": {
"title": "image.png",
"text": "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tnan4c4ldWidpK53V9quzt1Bu5vqHeo379HZU7EX7JXsfb4vfd/1/RH7Ww8wDtQftDxYfYh2qLwBaZjW0N+Y3djdlNLU1Rze3Nri03LosOPh7UdMj1Qd1T665BjlWOmxwePFxwdOiE70ncw6+ah1YuudU2NPXW2Lbes4HXH63JmQM6fOMs8eP+d77sh57/PNFxgXGi96XGxod28/9Lv774c6PDoaLnleaur06mzpGt117LL/5ZNXgq6cucq+evFa1LWu64nXb95Iu9F9k3fz2a28W69uF93+fGfOXcLd8nvq9yrvG96v+cP2jz3dHt1HHwQ9aH8Y//DOI+6jF48LHn/pKX1CfVL51ORp7TOXZ0d6Q3o7n4973vNC9OJzX9mfGn9Wv7R5efCvgL/a+8f297wSvxp8veiN/pvtb93etg7EDNx/l//u8/vyD/ofdnxkfDz7KfnT089TvpC+rPlq+7XlW8S3u4P5g4Mijpgj+xXAYEMzMwF4vR0AagoANLg/o4yT7/9khsj3rDIE/hOW7xFl5gFAPfx/j+2Dfzc3ANi7FW6/oL5aGgAxVAASvADq6jrchvZqsn2l1IhwH7CJ/TUjPwP8G5PvOX/I++czkKq6gZ/P/wLmAnxMnrjSiAAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAADqKADAAQAAAABAAAAtAAAAAAd0pgNAABAAElEQVR4AeydB5yUxd3H/9e5o1eRIguxIEZBoxF9k9fFuJZYABNbFNmTROxIYoppHDFvjIkGS2yx3BGsiYmgxmjWhDUaS9QIKogaZVUQlA7H9fL+/s888+ztc7fulWfhkN9zn9t5Zp555pn5Tp//FBFeJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJJCeQF76R3xCArs7gX79DIGDJhi1psao1VW7O5nshL9nL+PuvmOMWlNn1Lra7HyPrpIACZAACZAACZAACZAACZAA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ruDG8h/rxoN/691M7qR7bgWZlm//fulsGnMbLx2NV5uu7ZmU6b5i071V09mz5p31j33fqnsMNXcT3HS2V8jorfvWnl+1zzvKw7pjw3mAG6+23LDPrdpZ93d2Prbhs6oNTzrVht+GN509v7m1bwXk/ud+/TB363HL3f+eFZR31/TqDw/1JEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACLQiMDhmNXSllBaj2bM4WVnlLAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp9tAvZsUCs4fXbxZzu8DB0JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMCOJNDBrWZ3pNfa+ta4kDF9P2HUG28wKn9JgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAR2AwI5u0EYd4sgjptVujR2bkmJNEuTVI/YS7ZIo1R/+MHy+eWHRh6rrmovhHGXlL4U+8ZeISmQEunT1LB8XvkBkdtWrWrv+7RHAiRAAiRAAiRAAiTQNoGg2mttu05TEiCB3ZEAy5XdMdYZ5o4S4DhHR4nRPgmQAAmQAAmQAAmQgBLItxjGfQ8CuEvHhKReekjewRMgfquS1a+vWH5j+cGRP769wtqj2k0JFEiR7HXvzdIgNfLhlKj0RgwO/Olc49uryjL5etzlpS/GZk2YAHsFsvnVVyVHtsqqBhl3eundsWOK8pb/ofy8yFNNTZnc4XMSIAESIIHuTQADSK/HZgwfgdK+SHI/vzd8u1XqViQwYebQyPz3E9nyPeqZ52PRE6egdsqV/FyRj2WZJP7yCOuXbBGnu92SQIb2GvPJp8fa7tJf2Vnl9KfT59NuSyBDudJt/U2PkcAOIMBxjh0AmZ/YZQjsLu2o7hIhmOC0LDb1qDD63TlSiP7vB/KCbHj6n+z/dpcYoj9IgARIoH0EPAEqVi4Wy/YLpkOtksbvlkkehjiLf1dhnJlZ2j7naGtHEzAzjgcNgth0i6w/MQqReJHjBwyLy7q/PdFu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7aVTvf5TJ9uBad21R0J0sD6x7gWVrqx7frWz9Z11ByvW34pd/rUpaK9Vy6aHHoZqJu7qRMqP9xzsTQy1L7hqUOWKx0d3nMnZnpQUOhNzhu2JXvU22bxpM8q3HpK/71j4qqdsX7/eroDzeSutNuj8ElR9ZT3scOjE+IN9v6OqVy50sv734q2b9B/ShR/pu0P1jd+dzsZz0OMcnj862L/x6s+A+6mWU2fLD/t+OrXL8dbVdkoX+7PpwtVRc288zn2xq/Vkpu93tR+fzv2O1lOdTu92/CvDuG+L8svxcqZ2rFd/dLCfbnl4Rxx1tX/Uwfzvff97aEdfOiaktbvU1zVg3Dllhxqv39QL7ePa/IL2thM997va/+tqfu3g+159WwseexcXZxwntUektDP+vfQSUPt8R6dXG69USYAEdj0CngB11/N62z7OJBhp+63uY+pVCLqF2P6J91DNmi3E3BURGJD6fGTB3RWZfAyB86uxC2dEzUDPneXoEGONyvsJ+aYKaEaPaTGTJ5NTfE4CnzkCu3o58ZmLEAaIBEiABLJMAAKrN2OX4Qxg3YFhy+Vl+BymQK3VlbRVknPkJGxtenDkVswYdy9saYl21GhdcZonlQ8vhnFyZWf17RUyExOSNl54nrPlaxfaa/Z7O0v1BvR6Y6CjauMmhNKc8e5MuJs7FwNClZJ/9dV2AhMEA5gQlZcHsQvOhr34UrRSsUPFDfPA0axI1q3bhw3fEwNI2BJzjTdRaGeFj98lgZ1JAAIWbLn+hJYfZueAfAgqRy6swADq2MjPp7aauBFUP9CG2RsYTCNAZT61pKjuSgR2l3GOjpYfu1Ic0q8kQAIkQAIkQAIksCsRyEHDbElsejOWMPAiARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARJoDwHs4DEhMj/nM7dQrT1hpx0S+KwTcPbo+qwHkuEjARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggf9vh44FAAAAAAb5W49hfyFkwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGHgDAf54or4eT7iUAAAAAElFTkSuQmCC",
"type": "image/png"
}
}
}
! <<tag "Presentation-17 Jan 23">>
<<list-tagged-draggable tag:"Presentation-17 Jan 23">>
! <<tag "Contents">>
<<list-tagged-draggable tag:"Contents">>
! <<tag "Learning Objectives">>
<<list-tagged-draggable tag:"Learning Objectives">>
! <<tag "Student Learning Outcomes">>
<<list-tagged-draggable tag:"Student Learning Outcomes">>
A Place for <$transclude tiddler="$:/status/UserName"/> to work
<$transclude tiddler="SiteTitle">POS 252</$transclude>
\define thePresentationResource() $(thisPresentation)$===$(thisResource)$
\define theResourceNote() $(thisResource)$===$(thisNoteTitle)$
\define authenticated-doi-lookup-link() https://libkey.io/libraries/$(libraryID)$/$(doi)$
\define generic-doi-lookup-link() https://doi.org/$(doi)$
\define show-resource-notes(thisResource)
<$vars thisResource=$thisResource$ >
<$list filter="[resource<thisResource>resource-object[resource-note]]">
<$link/><br>
</$list>
</$vars>
\end
\define resource-note(thisResource)
<$vars thisResource=$thisResource$ thisNoteTitle="Note: ">
<$button>
<$action-sendmessage $message="tm-new-tiddler" title=<<theResourceNote>> resource-note-date=<<now "YYYYMMDDHHMMSS">> resource-object="resource-note" resource=<<thisResource>> text="<$link to={{!!resource}}/><br>"/>
New Note
</$button>
</$vars>
\end
\define link-resource(thisResource)
<$vars thisResource=$thisResource$>
<$list filter="[course-designer[course-presentation]nsort[week-num]]">
<$vars thisPresentation={{!!title}}>
<$link/>
<$button>
Link
<$action-setfield $tiddler=<<thePresentationResource>> presentation=<<thisPresentation>> resource=<<thisResource>>/>
</$button>
<$button>
<$action-deletetiddler $tiddler=<<thePresentationResource>>/>
Unlink
</$button>
<br>
<<thePresentationResource>>
<$list filter="[title<thePresentationResource>]" emptyMessage="No links">
<$link/>^^linked to {{!!presentation}}^^<br>
</$list>
</$vars>
</$list></$vars>
\end
\define presentation-resource0(thisResource)
<$list filter="[course-designer[course-presentation]]">
\end
\define presentation-resource(thisPresentation,thisResource)
<$vars thisPresentation=$thisPresentation$ thisResource=$thisResource$>
<$button>
<$action-createtiddler $basetitle=<<thePresentationResource>> $overwrite="yes" presentation=$thisPresentation$ resource=$thisResource$ />
Link<br>$thisResource$ <br> with<br>$thisPresentation$
</$button>
<br>
<$link to=<<presentationResource>>>Link</$link>
\end
\define show-resource(thisResource)
<$vars libraryID="2121">
<$list filter="[title[$thisResource$]]">
<$link/><br>
<$vars doi={{!!bibtex-doi}} isbn={{!!bibtex-isbn}}>
Title: ''{{!!bibtex-title}}''<br>
Abstract <$appear>{{!!bibtex-abstract}}</$appear><br>
Author-Date: {{!!bibtex-author}}, {{!!bibtex-date}}<br>
{{!!bibtex-url}}: <a href={{!!bibtex-url}} target="_blank">Link</a><br>
{{!!bibtex-doi}} :
<a href=<<authenticated-doi-lookup-link>> target="_blank">SUNY Poly via ~LibKey</a> || <a href=<<generic-doi-lookup-link>> target="_blank">doi.org</a><br>
ISBN: {{!!bibtex-isbn}}<br>
^^Tiddler: <$link/>^^
</$vars>
</$list>
</$vars>
\end
```
<$macrocall $name="show-resource-notes" thisResource="haas2022DougEngelbartEdge"/>
```
<$macrocall $name="show-resource-notes" thisResource="haas2022DougEngelbartEdge"/>
```
<$macrocall $name="resource-note" thisResource="haas2022DougEngelbartEdge"/>
```
<$macrocall $name="resource-note" thisResource="haas2022DougEngelbartEdge"/>
```
<$macrocall $name="show-resource" title="haas2022DougEngelbartEdge"/>
```
<$macrocall $name="show-resource" thisResource="haas2022DougEngelbartEdge" thisPresentation=<<thisPresentation>>/>
<hr>
```
<$macrocall $name="link-resource" thisResource="haas2022DougEngelbartEdge"/>
```
<$macrocall $name="link-resource" thisResource="haas2022DougEngelbartEdge"/>
$:/_ExcelImporter/ImportSpecifiers/Workbook
AAABAAUAQEAAAAEAIAAoQgAAVgAAACAgAAABACAAqBAAAH5CAAAwMAAAAQAgAKglAAAmUwAAGBgAAAEAIACICQAAzngAABAQAAABACAAaAQAAFaCAAAoAAAAQAAAAIAAAAABACAAAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAAch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3EbXv9wGVz/bhdb/24WWv9uFlr/bxlc/3EbXv9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9zHmD/aQ9V/2UIUP9mCVH/ZglR/2YJUf9mCVH/ZglR/2YJUf9mCVH/ZglR/2YJUf9mCVH/ZglR/2YJUf9mCVH/ZglR/2YJUf9lCFD/aA1U/3IdX/9yHl//ch1f/3IdX/9yHV//bhda/2cLUv9lCFD/aA1U/24XW/9xHF7/cBtd/2oQVv9lCFD/ZglR/20VWf9yHV//ch1f/3IdX/9yHV//cx5g/28YW/9lCFD/ZglR/2YJUf9mCVH/ZglR/2YJUf9mCVH/ZglR/2YJUf9mCVH/ZglR/2YJUf9mCVH/ZglR/2YJUf9mCVH/ZglR/2UIUP9uF1v/cx9g/3IdX/9xHF7/bxhb/5JQg/+jbJf/oGaT/59mk/+fZpP/n2aT/59mk/+fZpP/n2aT/59mk/+fZpP/n2aT/59mk/+fZpP/n2aT/59mk/+gZpP/omuW/5dZif9xG17/cRte/3MeYP9wGl3/ZQhQ/20VWf+XWIn/wp26/9rD1f/n2OP/7eLr/+vf6f/eytn/y6zE/6Jqlv9yHV//ZQhQ/3EbXv9yHl//ch1f/28YW/99L2z/omqW/6BnlP+fZpP/n2aT/59mk/+fZpP/n2aT/59mk/+fZpP/n2aT/59mk/+fZpP/n2aT/59mk/+fZpP/n2aT/6Bnk/+jbJf/gDRv/24XW/9yHV//cBlc/2gMU//gzNv////////////////////////////////////////////////////////////////////////////////////////////x6fD/bhdb/24XW/9uF1v/ZAZP/51ikP/v5e3/////////////////////////////////////////////////9e/0/5dZif9jBU7/cRtd/3IdX/9mClL/ml6N/////////////////////////////////////////////////////////////////////////////////////////////////6Jrlv9lCVH/ch1f/3AaXf9oDFP/177R////////////////////////////////////////////////////////////////////////////////////////////6dzm/28YXP9sE1j/ZQhQ/8GbuP//////////////////////////////////////////////////////////////////////qnee/2IDTf9xHF7/ZwxT/5dZif////////////////////////////////////////////////////////////////////////////////////////////////+fZZL/ZgpS/3IdX/9wGl3/ZgpR/9G1yv///////////////////////////////////////////////////////////////////////////////////////////+fZ5P9vGFv/XwBK/7CApf/////////////+/v/////////////////////////////////////////////////+/v7///////////+MRnz/aAxT/2kOVf+NSH3/////////////////////////////////////////////////////////////////////////////////////////////////n2WR/2YKUv9yHV//cRtd/2YKUf/KqsP////////////////////////////////////////////////////////////////////////////////////////////n2eT/aA1U/3clZf///v////////7+/v////////////////////////////////////////////////////////////7+/v//////3MfX/2YJUf9pD1X/fS9s/////////////////////////////////////////////////////////////////////////////////////////////////59lkf9mClL/ch1f/3EcXv9mClH/rXuh////////////////////////////////////////////////////////////////////////////////////////////59nl/2IETf+mcZr///////////////////////////////////7////////////////////+//////////////////////////////////+FPHX/ZQhQ/3EcXv/y6vD///////////////////////////////////////////////////////////////////////////////////////////+fZZL/ZgpS/3IdX/9yHV//ag9V/4Y9dv///////////////////////////////////////v3+//////////////////////////////////////////////////Dn7v9iA03/y6vE//////////////////////////////7//////////////fv8/////////////v7+////////////////////////////rXui/2QGT/9lCFD/z7LJ///////////////////////////////////+////////////////////////////////////////////////////////omuW/2UJUf9yHV//ch1f/28YXP9rEVb/59nk///////////////////////////////////////hzt3/vJOz/8Wjvv/For7/xaK9/8Wivf/For3/xaK+/8urxP+yhKj/ZQhQ/9a+0f//////////////////////////////////////wJm3/2sVV/+pdp7//////////////////////////////////////82vxv9lCFD/ZQhQ/51jkP///////////////////////////////////////v3+/8Ofu//Cnbr/xaO+/8Wivf/For3/xaK9/8Wivf/GpL//y6zF/4tEe/9rElj/ch1f/3IdX/9yHV//ZAdQ/6RtmP//////////////////////////////////////7OHq/2YJUf9fAEn/ZgpR/2YJUf9mCVH/ZglR/2YJUf9lCFD/ZAdP/20WWv/k0+D//////////////////////////////////Pr7/3MfYf9fAEr/aA1T/+3i6//////////////////////////////////k0+D/bRRZ/2sRV/9sE1j/7uPr/////////v////////////////////////////+lb5n/VQA+/2UJUf9mCVH/ZglR/2YJUf9mCVH/ZglR/2UIUP9uF1v/cx9g/3IdX/9yHV//ch1f/24WWv9sE1j/7OHq/////////v7////////////////////////////DoLv/XwBJ/28ZXP9xG17/cRte/3EbXv9xG17/cRtd/24WWv9tFlr/5NTg/////////////////////////////////+/l7f9wGl3/axJX/2gNVP/YwdP/////////////////////////////////8uvx/3MfYf9tFVn/ZAdP/6Nsl////////////////////////////////////////////3wtav9mCVH/cRxe/3EbXv9xG17/cRte/3EbXv9xG13/chxf/3IdX/9yHV//ch1f/3IdX/9yHV//ZQhQ/5NRhP/////////////+/////////////////////////////5NThf9iBE3/ch1f/3IdX/9yHV//ch1f/3IdX/9vF1v/bRVa/+PT4P/////////////////////////////////m2OP/bhdb/2wUWP9nDFP/1rzQ//////////////////////////////////n2+f92JGT/bRRZ/28YXP9mClH/3srZ/////////v7///////////////////7////////cx9f/ZQlR/20WWv9yHl//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3EbXf9iBE3/w5+7/////////////////////////////v7+///////7+fv/eipo/2cMU/9zHmD/ch1f/3IdX/9yHV//bxdb/20VWv/j0+D/////////////////////////////////49Pg/20VWv9sFFn/aA1T/9e+0f/////////////////////////////////7+fv/eCdm/2wTWP9yHl//aA1U/38xbf////////////7+/v///////////////////////////7yUs/9gAUv/cBpd/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHl//bRRZ/2kOVf/k1OH///////7+/v/////////////////+/v7//////+XW4v9qEFb/bBNY/3IeYP9yHV//ch1f/24XW/9tFVn/6t7o/////////////////////////////////+vf6P9tFlr/bBRY/2gNU//XvtH//////////////////////////////////fz9/30vbP9rElf/ch1f/3IdX/9iA03/nGGP//////////////7///////////////7+////////////nmOR/2EDTP9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3MeYP9nDFP/eyxp//38/f///////v7+////////////////////////////x6W//2ECTP9wGVz/ch1f/3IdX/9vGVz/bRVa/9C0yv/y6vD/6t3n/+nd5//p3ef/6t3n//Lq8P/Rtcv/bRZa/20VWf9oDVP/177R//////////////////////////////////////+DOXP/ahFW/3IdX/9yHV//cBpd/2ABS/++l7b////////////////////////////+/v7///////////+BNXD/ZgpR/3MeYP9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/2IDTf+XWYn//////////////v7//////////////v////////////+jbJf/YQJM/3IdX/9yHV//ch1f/3IdX/9vGVz/cBlc/3AaXf9wGl3/cBpd/3AaXf9wGVz/bxlc/3IdX/9wGl3/aA1T/9e+0f//////////////////////////////////////hDt0/2oQVv9yHV//ch1f/3IeX/9tFVn/ZwtS/9/M2/////////7///////////////////7+/v//////6t7o/2wTWP9rElf/ch5g/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9xG17/YABL/7mPsP////////////////////////////7+/v///////////4M5c/9mCVH/cx5g/3IdX/9yHl//bxhb/2oPVf9pD1X/ahBV/2oQVf9qEFX/aQ9V/2wTWP9yHmD/cBpd/2gMU//WvdD//////////////////////////////////fz9/34wbP9rElf/ch1f/3IdX/9yHV//cx5g/2gNVP94Jmb/+vf5///////+/v7////////////////////////////KqsP/YgNN/3AZXP9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch5f/24WWv9mCVH/3MbX/////////v///////////////////v7+///////t4ur/bhZa/2wUWf9yHV//ch1f/3IdX/9xG13/cRte/3EbXv9xG17/cRte/3EcXv9wGl3/cRxe/3AaXf9oDlT/2MDS//////////////////////////////////v5+/94JmX/bBRY/3IdX/9yHV//ch1f/3IdX/9yHl//YwRN/5NThf/////////////+/v/////////////+/////////////6Vvmf9jBE7/ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9zHmD/aQ5U/3YjY//38/b///////7+/v///////////////////////////72VtP9iA03/cRxe/20VWv92I2P/59nk//Hp7//s4er/7OHq/+zh6v/28PT/zK3F/2kPVf9tFVn/bBNY/+LR3v/////////////////////////////////48/f/dSJj/20UWf9yHV//ch1f/3IdX/9yHV//ch1f/3EbXv9gAEv/toqs/////////////////////////////v7+/////////v//eCdm/2oQVv9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IeX/9iA03/l1iI//////////////////////////////7/////////////gzhy/2kPVf9sFFj/dyVl//////////////////////////////////by9f9qEFb/YQFL/20VWf/17vP/////////////////////////////////69/o/3AaXf9uFlr/ch1f/3IdX/9yHV//ch1f/3IdX/9yHl//bhZa/2YJUf/hz93////////+/////////////////////////////8qrw/9kB0//cRtd/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//cBpd/2IETf/QtMr//////////////////////////////////////8mowf9jBU7/axJX/3ckZP/69/n/////////////////////////////////tIeq/2YOUv+ufaP//////////////////////////////////////9S6zv9mClL/cBpd/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IeX/9mClH/hz93////////////////////////////////////////////gDRv/2oQVf9yHV//ch1f/3IdX/9yHl//bhZa/2sSWP9sE1j/bBNY/2wTWP9sE1j/bBNY/20VWf9oDFP/gjdx///////////////////////////////////////9+/z/eilo/2YJUf93JWT/+vf5/////////////////////////v7////////////7+Pr//////////////v7///////////////////////////+1iKv/ZQhQ/3AZXP9rE1j/bBNY/2wTWP9sE1j/bBNY/2wTWP9rE1j/bhdb/2IDTf/MrcX//////////////////////////////////////7yUs/9kB1D/cRxe/3IdX/9yHV//cRxe/3YkZP96KWj/eShn/3koZ/95KGf/eShn/3kpZ/94J2b/cBpd/2QGT//Stsv//////////////////////////////////////6Rsl/9gAEr/diRk//r3+f/////////////////////////////+/////////////////////v7/////////////////////////////////iEB4/2gOVP9zH2H/eSln/3kpZ/95KGf/eShn/3koZ/95KGf/eilo/3UiYv9nC1L/iEF5///////////////////////////////////////u5Oz/bRZa/24XW/9yHV//bxlc/2oRVv/YwdP///////v5+//7+fv/+/n7//v5+///////8+zx/3UiY/9gAEr/m1+O///////////////////////////////////////JqcL/XwBK/3UiY//69/n////////////////////////////////////////////////////////////////////////+/v//////38va/2cLUv9lCFD/mFuL///////9/P3/+/n7//v5+//7+fv//Pv8//////+wgab/YwVO/2gNVP/l1uL//////////////////////////////////////4M4cv9qEVb/ch1f/24XW/9tFVn/59jk//////////////////////////////////z7/P92I2P/ZglR/3oqaf/8+vz/////////////////////////////////6Nrl/2gOVP9zHmD/+vf5/////////////////////////////////////////////////////////////////////////////////4c/d/9oDFP/ZgpR/59kkv//////////////////////////////////////tYms/2QHUP9jBk//vpa1//////////////////////////////////////+eZZL/ZgpS/3IdX/9uF1v/bhda/+XV4f/////////////////////////////////38vb/dSJj/2kOVf9uFlr/6dvm//////////////////////////////////bx9f9vGVz/cRxe//r3+f////////////////////////////38/f///////////////////////////////////////////55jkf9kBk//chxf/2YKUf+eY5H//////////////////////////////////////7OFqf9mCVH/ZQhQ/51ikP//////////////////////////////////////rHqh/2YKUf9xHF7/bxhb/2wUWP/hztz/////////////////////////////////9/L2/3UiY/9qEVb/aQ5U/9nC1P/////////////////////////////////69vn/cRtd/3EbXv/69/n////////////////////////////w5+7/oGeU/+ve6P/////////////////59vn/z7HI/4Y8df9jBU7/cRxe/3IdX/9mClL/nGGP//////////////////////////////////////+yg6f/ZglR/2YKUv+XWYr//////////////////////////////////////7yTsv9mClL/cRte/3AZXP9oDVT/17/S//////////////////////////////////fz9v90IGH/axNY/2QHT//Oscf//////////////////////////////////Pr7/3QgYf9xG13/+vf5////////////////////////////9vH1/2kPVf9pD1X/ikR6/5RUhv+CN3L/dCBh/2YKUf9pDlT/ch1f/3IdX/9yHV//ZwtS/5haiv//////////////////////////////////////tYmr/2UJUf9nDFP/kEyA///////////////////////////////////////Hpb//ZgpS/3EbXf9wGl3/ZgpR/9C0yv/////////////////////////////////9/P3/dyVl/2cKUv9kB1D/28bW//////////////////////////////////v4+v9yHV//cRte//r3+f////////////////////////////bx9f9zH2D/ZwtS/2cLU/9mCVH/aA5U/2sRV/9uF1v/cBpd/3AaXf9wGl3/ch1f/2kPVf+KRHr//////////////////////////////////////8Sgu/9hAkz/YwRN/5RUhv//////////////////////////////////////wJq4/2YKUv9xG17/cRte/2YKUf++l7X//////////////////////////////////////6t4n/9TADz/gTRw///////////////////////////////////////49Pf/cBpd/3EcXv/69/n////////////////////////////28PT/axFX/2IDTP9nDFP/ZwxT/2cMU/9nDFP/ZwxT/2cMU/9nC1L/ZwxT/3EcXv9sFFn/eCdm//z6+//////////////////////////////////t4+v/axJX/1kAQ//HpL///////////////////////////////////////7GBpv9mClH/cRxe/3IdX/9mClL/oGeT///////////////////////////////////////+/f7/z7TJ//Hp7/////////7/////////////////////////////4tDe/2UJUf90IGH/+vf5/////////////////////////////fv8/9a90P/Uuc7/1bzP/9W8z//VvM//1bzP/9W8z//VvM//2cLU/9K3zP93JWX/ahBW/24WWv/q3ef//////////////////////////////////////+TT4P/WvdD///////////////////////////////////////////+aXYz/ZwtS/3IdX/9yHV//axFX/4E2cP/////////////////////////////////+/v7//////////////////v7+/////////////////////////////////7+Zt/9eAEn/diNj//r3+f///////////////////////v7+////////////////////////////////////////////////////////////eitp/2oQVv9kB1D/yKfB//////////////////////////////7////////////////////////+/v7////////////////////////////+/v7/eiln/2wTWP9yHV//ch1f/3AZXP9oDVP/4M7c/////////v///////////////////////////////////////////////////////////////v////////////+GPXb/YwZO/3ckZP/69/n//////////////////////////////////////////////////////////////////////////////////Pr7/3oqaP9sE1j/ZwtS/5VVh///////////////////////////////////////////////////////////////////////////////////////z7LJ/2UJUP9wG13/ch1f/3IdX/9yHV//ZgpR/5lbi//////////////+///////////////////////////////////////////////////////////////////KqsP/ZAdP/2sSV/93JWT/+vf5//////////////////////////////////////////////////////////////////////////////////v5+/96KWj/bBNY/28YXP9pD1X/5NPg/////////v7///////////////////////////////////////////////////////7+/v///////////4M5c/9pDlT/ch1f/3IdX/9yHV//ch1f/3AaXf9kB0//yajC///////////////////////////////////////////////////////////////////////o2uX/bhdb/2wUWP9tFFn/dyRk//r3+f/////////////////////////////////////////////////////////////////////////////////7+fv/eilo/2wTWP9yHV//aA1T/4Q6dP///////////////////////////////////////////////////////////////////////////6Nsl/9jBE7/ch1f/3IdX/9yHV//ch1f/3IdX/9yHmD/bRVZ/2gNVP/HpsD////////////////////////////////////////////////////////////VvND/cRxe/2kPVf9zHmD/bBRY/3clZP/+/f3//////////////////////////////////////////////////////////////////////////////////////3oqaP9sE1j/ch1f/3IdX/9kB0//jUh9//fy9v///////////////////////////////////////////////////////v7+/55jkP9jBE3/cRte/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3MeYP9tFVr/ZAdP/5RThf/VvND/+PX4////////////////////////////+fX4/9jA0v+YWYr/ZgpS/2sRV/9zHmD/ch1f/2wUWP93JGT//v3+//////////////////////////////////////////////////////////////////////////////////////96KWj/bBNY/3IdX/9yHV//ch1f/2UJUf90IGH/uI2u/+vf6P/////////////////////////////////s4en/u5Kx/3gnZv9kB0//cRte/3IeX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch5g/3AaXf9nC1L/ZgtS/3QgYf+JQXn/mFqL/5xhj/+YWor/i0Z8/3YjY/9nC1L/ZgpS/3AZXP9yHmD/ch1f/3IdX/9xG17/ch5f/4tFe/+OSn//jUh+/41Ifv+NSH7/jUh+/41Ifv+NSH7/jUh+/41Ifv+NSH7/jUh+/41Ifv+NSH7/jUh+/45Kf/+MRnz/cx5g/3EbXv9yHV//ch1f/3IdX/9yHl//bBRY/2QHT/9tFVn/fS5r/5NShP+bXo3/m1+O/5NShP+BNHD/bRVZ/2QHT/9rElf/ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3AaXf9tFVn/aQ9V/2cLUv9mClL/ZwtS/2kOVf9sFFn/cBpd/3IdX/9yHV//ch1f/3IdX/9yHV//ch5f/3IdX/9pD1X/aA1U/2kOVP9pDlT/aQ5U/2kOVP9pDlT/aQ5U/2kOVP9pDlT/aQ5U/2kOVP9pDlT/aQ5U/2kOVP9oDVT/aQ9V/3IcX/9yHl//ch1f/3IdX/9yHV//ch1f/3IdX/9xHF7/bhdb/2sSV/9oDVP/ZwtS/2YKUv9oDVP/axFX/24XW/9xHF7/ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAACAEAAAAAAAAAAAAAAAAAAAAAAAAHIdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//cRtd/3AaXf9wGl3/cBpd/3AaXf9wGl3/cBpd/3AaXf9wGl3/cRxe/3IdX/9yHV//cRxe/28YW/9tFVn/bRZa/3AZXP9yHV//ch1f/3IdX/9xG17/cBpd/3AaXf9wGl3/cBpd/3AaXf9wGl3/cBpd/3AaXf9xG17/ch1f/3IeX/9pDlT/ZglR/2YKUv9mClL/ZgpS/2YKUv9mClL/ZgpS/2UJUf9tFVr/dB9h/2wTWP9kB1D/bBNY/3QgYf9yHV//aA1U/2cLUv9xHF7/dB9h/2sRV/9lCVH/ZgpS/2YKUv9mClL/ZgpS/2YKUv9mClL/ZQlR/2oRVv9zH2D/bxhc/8CauP/Xv9L/0bbL/9G2y//Rtsv/0bbL/9G2y//St8z/2sPV/5pejf9gA0r/diNk/7+Zt//p3Of/9e7z//Ps8f/gzdz/m16N/2QHT/9pDlX/sICl/9rD1P/Rtsv/0bbL/9G2y//Rtsv/0bbL/9G2y//Zw9T/r3+l/2oQVv9sFFn/7+bt////////////////////////////////////////////q3mg/20ZWv/17vP/////////////////////////////////pnCa/1gAQf/Stsz////////////////////////////////////////////Vu8//ZQhQ/2kOVP/cx9f///////////////////////////////////////////+lbpn/vpa1/////////////////////////////v39///////69/r/ZgxS/7WIqv///////////////////////////////////////////9O5zf9lCFD/ZAZP/7aJrP/////////////////38vb/28XW/+LR3v/j0t//6Nvm/5tfjv/i0d7/////////////////yqrD/+bW4v////////////////+MR33/iEB4//////////////////79/v/eydn/4c7d/+PR3//s4On/upCw/2gNVP9qEVb/fC1q//////////////////7+/v98LGr/XgBI/2sSV/9mCVH/bhdb//Hp7/////////////j09/9gAEr/oGaT/////////////////618ov9dAEf/5tfj/////////////////55kkf9ZAEL/axFX/2oRVv9tFVr/cx5g/3IdX/9jBU7/sYKn/////////////////+PS3/9mClL/aQ9V/2sRV/9wGl3/9vH1////////////9vD0/2MGTv+cYI7/////////////////upCx/1kAQ/+NSH3//////////////////fv8/3sraf9jBU7/bxlc/3AaXf9yHV//ch1f/28YW/9lCFD/2MDS/////////////////8inwf9hAkz/bBNY/3EcXv/j0+D/+fX4//n1+P/j0t//ZQhQ/59lkv////////////////+/mbf/ZQdQ/2AASv+zhaj/////////////////6t7n/2sSV/9sE1j/cx5g/3IdX/9yHV//cx5g/2kPVf9yHV//9e/z/////////////////6Vumf9iA03/cx5g/2wUWf9lCFD/ZQlR/2cLUv9mCVH/omqW/////////////////8CZt/9lCVH/bhZa/2MFTv/VvND/////////////////yqrD/2IETf9wGl3/ch1f/3IdX/9yHV//cx5g/2QGT/+LRXv//////////////////////4E0cP9jCk7/jUh9/7GCpv+wgKX/omqV/1wARv+haJT/////////////////uY+w/2UIUP9yHV//ahBW/3EbXv/z7PH/////////////////oWmV/2QHUP9yHV//ch1f/20VWf9sE1j/axJX/1oAQ/+2iqz/////////////////1LrO/1cAQP+9lbT/////////////////fS5r/8CZt/////////////////+qd5//YQJM/2sSV/9sFFn/XQBH/49MgP/////////////////28PX/cRte/20VWf9yHF7/dyVl/3koZ/95KWf/ch1f/3AaXf/17/P/////////////////cx5h/7GCp////////////////////////////////////////////4g/eP9tFVn/eSln/3koZ/93JWX/ZAZP/9a90P////////////////+gZ5T/ZQhQ/3AaXf/l1eH////////////z6/H/ZwtS/7+Ytv////////////////+ZW4v/rHqh///////////////////////////////////////YwdP/XABG/8mpwv///////fz9//////+DOXP/lFOF/////////////////8elwP9lB1D/cRxe//Dm7v////////////37/P9pDlT/n2WS/////////////////6x6of+reKD////////////38vb/49Lf////////////1r3Q/3MfYP9fAkr/1bzP/////////////////4lCef95KGf/////////////////2cLU/2kOVP9tFVn/5dbi////////////+vf6/2ECTP+VVYf/////////////////r36k/6t4oP////////////Xu8/9mClL/cRte/28YW/9bAEX/XwBJ/2YJUf/Lq8P/////////////////hz93/28YXP/////////////////fzNv/axFX/2cMU//XvtH/////////////////s4Wp/9W7z/////////////////+lbpn/q3ig////////////+/j6/6Jplf+WV4j/nF+O/6Jqlf+gZ5P/ZwtS/7OFqf/////////////////KqsP/u5Ky/////////////////9O4zf9mClL/ZAZP/7KDp/////////////////////////////79/f///////////30ua/+vf6T///////////////////////////////////////////9vGVz/iUJ5/////////////v3+/////////////v7+////////////q3if/2QHT/9sE1j/diNj//jz9//////////////////////////////////HpsD/WABB/7mPsP///////////////////////////////////////////3clZf9iA0z/2MHT/////////////////////////////////+rd5/9vGFz/bRZa/3MeYP9oDVT/gjZx/93J2f/////////////////28fX/t4yt/2kOVP9hA0v/uY+w///////////////////////////////////////7+Pr/eSln/2YKUf9wGl3/yqnC//z6/P////////////z6/P/Nr8f/dSJi/2oQVv9zHmD/ch1f/3MeYP9qD1X/aAxT/3ssav+JQXn/hTt0/3EcXv9lB1D/bxhb/3EbXv95KWf/gzhy/4E2cf+BNnH/gTZx/4E2cf+BNnH/gjdx/4E1cP9zHmD/ch1f/20VWf9lCVH/diNk/4c/d/+HP3f/dyVl/2UJUf9sE1j/cx5g/3IdX/9yHV//ch1f/3IdX/9wGVz/axJY/2kPVf9qEFb/bRVa/3EcXv9yHV//cx5g/24XW/9qEFb/ahFW/2oRVv9qEVb/ahFW/2oRVv9qEFb/axFX/3IcX/9yHl//ch1f/3EbXf9sFFn/aQ9V/2kPVf9sFFj/cRtd/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAByHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IcXv9yHF//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHmD/cRtd/2wTWP9sFFj/bBRY/2wUWP9sFFj/bBRY/2wUWP9sFFj/bBRY/2wUWP9sFFj/bBRY/2wTWP9uF1v/ch5g/3IdX/9yHV//chxe/24WWv9oDVT/ZgpR/2UJUf9mCVH/ZwtS/2sSV/9xG13/ch1f/3IdX/9yHV//ch1f/20VWf9sE1j/bBRY/2wUWP9sFFj/bBRY/2wUWP9sFFj/bBRY/2wUWP9sFFj/bBRY/2wTWP9sFFn/ch1f/3IdX/9yHF//cx9g/3gmZf93JmX/dyVl/3clZf93JWX/dyVl/3clZf93JWX/dyVl/3clZf93JWX/dyVl/3gmZf91ImP/chxf/3MeYP9uF1v/ZAdP/3AaXf+NSH7/omqV/618ov+qd57/mFmK/3wua/9lCFD/bBNY/3MeYP9yHV//ch1f/3clZP94JmX/dyVl/3clZf93JWX/dyVl/3clZf93JWX/dyVl/3clZf93JWX/dyVl/3cmZf93JWX/ch1f/3IdX/9nC1L/llaI///////8+vv/+vf5//r3+f/69/n/+vf5//r3+f/69/n/+vf5//r3+f/69/n/+vf5///////IqMH/aAxT/2oPVf9qEFb/soSo//Ps8f/////////////////////////////////Lq8T/ch1f/2kPVf9uFlr/dCFh/+/m7f//////+vf5//r3+f/69/n/+vf5//r3+f/69/n/+vf5//r3+f/69/n/+vf5///////07fL/diRk/2wUWf9mClH/l1iJ///////////////////////////////////////////////////////////////////////QtMr/YQRM/2wTWP/dydn/////////////////////////////////////////////////7OHq/3EcXv9nC1L/dCBh//j09///////////////////////////////////////////////////////////////////////dyVl/2wTWP9nC1P/kU+D///////////////////////////////////////////////////////////////////////LrMT/WQBD/8Gcuf///////////////////////////////////////////////////////////8mpwv9gAUv/bBNZ/+nc5v/////////////////////////////////////////////////////////////////59vj/dyVk/2wTWP9qEFb/gTZw///////////////////////////////////////////////////////////////////////Ip8H/bRVa//37/P/////////////////+/v7//////////////////v7+//////////////////////96KWj/YAJL/9jB0//////////////////////////////////////////////////////////////////8+/z/dyVk/2wTWP9vGFv/axJX/+nb5v////////////////////////////37/P/////////////////////////////////Fob3/hz93/////////////////////////////////+TT4P/59vn///////////////////////////+haZX/WABC/7GDp/////////////////////////////79/v/////////////////////////////////+/v7/dyVk/2wTWP9yHF7/ZQhQ/7GCpv///////////////////////////+fY5P+DOHL/ikN6/41Ifv+NSH7/jUh+/49LgP92JGT/nmOQ////////////////////////////0bXL/1gAQf+ZW4v////////////////////////////Amrf/XQBI/30vbP////////////////////////////////+eY5H/gzhy/41Jfv+NSH7/jUh+/45Kf/+LRXz/cx5g/3EbXv9yHV//bBRZ/3MeYP/49Pf////////+/v////////////////+YWor/VwBA/2kOVP9pDlT/aA5U/2cMU/9gAEv/pnCa////////////////////////////rHqh/1oAQ/95KGf//v39///////////////////////Vu8//ZgpS/2ECTP/Go77////////////////////////////St8z/WQBD/2UIUP9pDlX/aA5U/2gNVP9pD1X/ch1f/3IeX/9yHV//ch1f/2MFTv+iapX///////////////////7////////8+vz/eipo/2cLUv9zHmD/ch1f/3IcX/9mClH/pG6Y////////////////////////////pnCa/2AASv95KWf/+/n6///////////////////////dyNj/aA5U/2kOVP90IWL/+vf5///////+/v7/////////////////q3if/2AASv9xHF7/ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3AZXP9jBU7/zrDH//////////////////7+/v//////5dbi/2kPVf9sE1j/cx5g/3IcX/9lCVH/p3Kb////////////////////////////p3Kb/18ASf96Kmn//Pr7///////////////////////gzdz/ahBW/3AZXP9jBk//l1iJ//////////////7////+/v///////////41Iff9jBk//ch5g/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3MeYP9rElf/bRVZ/+3i6v///////v7+/////////////////8emwP9hAkz/cBlc/3IdX/9oDFP/nWKQ//j09//v5u3/7uTs/+/m7f/49Pf/nWOQ/2ECTP97K2n//Pr7///////////////////////l1uL/bRVZ/28YW/9xG17/YABL/7iOr//////////////////+/v7///////jz9/91IWL/aQ5U/3MeYP9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9zHmD/ZQlR/4I3cf////////////7+/v///v////////////+kbZj/YQFL/3IdX/9yHV//cRxe/3AZXP9vGVz/bxlc/28ZXP9vGFz/cRtd/2wTWP97K2n//Pn7///////////////////////m1+P/bRVZ/28XW/9yHl//bhZa/2UIUP/axNb////////////////////////////bxtb/ZQhQ/24WWv9yHl//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/2EBS/+haJT//////////////v///v7+////////////hDp0/2cLUv9zH2D/cRxe/2UIUP9iA03/YwRO/2IETf9hAkz/bBRZ/20VWf96Kmj/+/n7///////////////////////gztz/ahBW/28ZXP9yHV//cx5g/2kOVf90IGH/9/L2///////+/v7/////////////////uI2u/2IDTP9xHF7/ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3AaXf9hAUv/xaK9//////////////////7+/v//////6Nnk/2kPVf9tFFn/bBNY/7mPr//YwNL/0bXK/9K3zP/YwNL/i0V7/2EETP9/MW3////////////////////////////cx9f/aA1U/3AZXP9yHV//ch1f/3IeYP9jBU7/jkp////////////////////+/////////////4tGfP9nC1L/ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IeYP9sE1j/axJX/+7k7P///////////////////////////6l1nf9hAkz/ZwxT/+bX4v//////////////////////uY6v/0wANP+QTYH////////////////////////////Nrsb/ZgpS/3AaXf9yHV//ch1f/3IdX/9xHF7/XwBK/7mPsP///////////////////v///////+LR3v9oDVP/bxlc/3IdX/9yHmD/cBpd/2sTWP9sE1j/bBNY/2wTWP9sE1j/YAFL/5hZiv///////////////////////////+3j6/9qEVb/ZQdQ/93J2P//////////////////////+vf6/7iOr//m1+P///////////////////////////+wgab/ZAdQ/2wTWP9sE1j/bBNY/2wTWP9sE1j/ZwtT/20WWv/y6vD///////////////////////////+SUIP/aAxT/3IdX/9xHF7/cx9g/3kpZ/95KGf/eShn/3koZ/96KWj/ch1f/2cMU//l1eH///////////////////////////+PTID/XgBI/93I2P/////////////////+/v7//////////////////v3+//////////////////////+IQHj/aQ5V/3gnZv95KWf/eShn/3koZ/95KWf/dyZl/2IDTf+ufaP////////////////////////////Lq8P/ZQlR/3EbXv9mClL/m1+N///////8+/z/+/j6//v5+///////s4Wp/1YAP/+vfqT///////////////////////////+1iav/WwBF/9zH1////////////////////////////////////////////////////////////97J2f9iA03/cx5g//Lq8P//////+/j6//v4+v//////5NTh/2YKUv95KGf////////////////////////////s4er/bhdb/24XWv9lCFD/pW+Z////////////////////////////uI6v/1oARP+MR3z////////////////////////////TuM3/XgBI/9vF1v/////////////////+/f7//////////////////////////////////fz9/4A0b/9jBU7/dyVl//79/v//////////////////////7eLq/2sSV/9mClH/5NTg///////////////////////9/P3/eipo/2sSV/9mCVH/oWiU////////////////////////////tYir/14ASP98LWr//fz9///////////////////////bxdb/XwBJ/9vE1f//////////////////////z7LI/9/M2/////////////z6/P/Vu8//fzJu/2YKUv9tFVn/dyRk//j09///////////////////////59nk/2wTWP9jBU7/1bzQ////////////////////////////hjx1/2kPVf9mClL/l1iJ////////////////////////////s4ap/10ASP9yHl//+fX4///////////////////////dydj/YABK/9rE1f//////////////////////rHuh/18ASf+GPnb/hz53/3YjY/9mCVH/aQ5V/3IdX/9tFVn/dCBh//Pt8v//////////////////////6t7o/2sSV/9hAUv/zrHI////////////////////////////jUh+/2gNVP9oDFP/jkl+////////////////////////////za/H/1AAOf+DOXP////////////////////////////cx9f/XwBJ/9vE1f//////////////////////rn2j/1MAO/9bAEX/XABG/18ASv9jBU7/ZQdQ/2UJUf9uF1v/bBRZ/+bW4v///////////////////////Pr8/3AaXf9aAEP/49Lf////////////////////////////hTx1/2kPVf9rElf/eipo//38/f///////////////////////////7yUs//i0d7////////////////////////////KqsP/XABG/9vG1v//////////////////////3MfX/7aJq/+8k7L/vJOz/7yTs/+8k7P/v5i2/7mPsP90IGH/YwVO/9G2y////////////////////////////9W7z//Fob3////////////////////////////69/n/dyRk/2wTWP9vGFz/ahBW/+TT4P/////////////////+/v7//////////////////v3+//////////////////////+haZT/XABG/93I2P/////////////////+/f7///////////////////////////////////////////96KWj/XgBI/6x5oP///////////////////////v7+//////////////////7+/v/////////////////cx9f/aA1T/3AZXP9yHF//ZQhQ/6p3n//////////////////////////////////////////////////+/v7///////Xv9P9uF1v/ZAZP/93I2P////////////////////////////////////////////////////////////v5+/95KWf/ZQhQ/3opaP////////////7+/v///////////////////////////////////v////////////+aXYz/ZgtS/3IdX/9yHV//bhdb/2sRV//j0t///////////////////////////////////////////////////////5NThf9jBU7/aQ5U/93J2P////////////////////////////////////////////////////////////v5+/95KWf/bBNY/2QGT/+seqH//////////////////////////////////////////////////////8inwf9lCFD/cBpd/3IdX/9yHV//cx5g/2oQVv9zHmD/2MHT///////////////////////////////////////y6vD/klGE/2MGTv9vGFz/aAxT/+bX4/////////////////////////////////////////////////////////////////96Kmj/bBNY/3AaXf9kB1D/r3+k////////////////////////////////////////////u5Gx/2cLUv9uFlr/cx5g/3IdX/9yHV//ch1f/3MeYP9rElf/ZwtS/49MgP+5kLD/0rfM/9vF1v/WvdD/w5+7/51ikP9vGFv/ZglR/3IdX/9xG17/bBNY/7aKrP/Tuc7/zK7G/8yuxv/Mrsb/zK7G/8yuxv/Mrsb/zK7G/8yuxv/Mrsb/0LTK/8mpwv92JGT/bhdb/3MeYP9wGl3/ZAZP/30ua/+se6H/yqvD/9nC1P/ZwtT/zK7G/659o/9/MW3/ZAZP/28XW/9zHmD/ch1f/3IdX/9yHV//ch1f/3IdX/9yHl//cBlc/2gNU/9kB1D/ZwtS/2gNVP9nDFP/ZQhQ/2YKUf9uFlr/ch1f/3IdX/9yHV//cx5g/2kPVf9mCVH/ZwtS/2cLUv9nC1L/ZwtS/2cLUv9nC1L/ZwtS/2cLUv9nC1L/ZgpS/2cLUv9xHF7/cx5g/3IdX/9yHV//chxf/2sRV/9lCFD/ZglR/2gNVP9oDVT/ZgpR/2UIUP9rEVf/cRxe/3IeX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9xHF7/cBpd/3AZXP9wGl3/cRte/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3EbXv9wGl3/cBpd/3AaXf9wGl3/cBpd/3AaXf9wGl3/cBpd/3AaXf9wGl3/cBpd/3AaXf9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHF//cRtd/3AZXP9wGVz/cBtd/3IcX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3EcXv9xHF7/cRxe/3EcXv9xHF7/cRxe/3EcXv9yHV//ch1f/3EcXv9wGl3/cBpd/3IcXv9yHV//ch1f/3EcXv9xHF7/cRxe/3EcXv9xHF7/cRxe/3EcXv9yHV//cBpd/2UIUP9kB1D/ZQhQ/2UIUP9lCFD/ZAZP/2cMU/9zH2D/axJX/2QHUP9nDFP/ZgpS/2UIUP9wGVz/ch5f/2YJUf9kB0//ZQhQ/2UIUP9lCFD/ZAdP/2YJUf9xHF7/fS9s/7iNrv+6kbH/uI6v/7mOr/+5jq//vZa0/6x6of9lCFD/fC5r/7+Ztv/ZwtT/1r7R/6x7of9oDlT/cRte/7WJrP+8k7L/uI6v/7mOr/+5jq//u5Oy/7OFqf91ImL/iUJ5/////////////////////////////////+zg6f98Lmv/+vj6///////////////////////Dn7v/aQ5U//////////////////////////////////////94J2b/dyVl//fy9v////////////r3+v///////////9nC1P+/mbf////////////59fj//Pv8////////////eSln/97L2v////////////v4+v///v////////Xv9P94JmX/ZAdP/8ajvv///////////8akvv9wGl3/gDNv/3MfYP/Vu8////////////+NSH3/u5Ky////////////kU6C/6Bmk////////////97K2v9zH2H/fzJu/4A0b/9zHmD/axFX/3clZf/7+Pr///////////+HP3f/WQBC/2ABS//dyNj///////////98LWr/rXui////////////pG6Y/10BSP/l1uL///////////+haZX/WABC/2sRV/9yHV//ch5g/2QGT/+TUoX////////////59fj/dSJj/2UJUf+ZXIv/qnif/6Zxmv9tFVn/tout////////////rXui/1sARP98LWv/////////////////ikR7/2UJUf9zHmD/ch1f/3AaXf9fAEn/tYmr////////////28bW/2QGT/93JWX/l1iJ/5RThv9gAEr/toqs////////////qHSd/2UHUP9gAUv/mVyM////////////8+vx/3EbXv9sFFj/cBlc/2UIUP9fAEn/XABG/+TT4P///////////49MgP+eY5D///////////+xgqf/1r3R////////////mFmK/1oARP9iA03/VAA9/8mowf///////////7eLrf9kBk//fjFt/7mPsP/BnLn/mVuL/5VVh////////////8qqw/+bX43////////////////////////////59vn/dyZl/7CBpv/Bm7j/qHSd/4E0cP///////////+re6P9uFlr/j0yA////////////3MjY/2wTWP/6+Pr//////+HP3f+iapX////////////t4ur///////Xv9P+QToH/bRVZ////////////+fX4/2cMU//l1uL///////r2+f9+MGz/hj12////////////2sTV/24XW//59vj//////+TU4P+jbJf///////////+KQ3r/bBNY/2gOVP9aAET/dCBh//fy9v//////9O3y/20VWv/k1OH///////37/P+CN3H/dCBh//Xv8////////Pr7/+rd5////////////9S6z/+cYY/////////////j0t//1LrO/97K2f/Xv9L/bhdb/9/L2v///////////+nc5v/9/P3///////Pr8f9yHV//ZAdQ/7yTs////////////////////////////4xHfP+eZJH/////////////////////////////////bRZa/5xgj////////////////////////////7GCp/9lCFD/bxhb/2wTWP+1iaz/6Nrk/+7l7P/dydn/mFmK/1wARv+cYI7/8Obu/+bY4//l1uL/5dbi/+re5//hz93/diRk/2IETf+lb5n/49Lf/+/l7f/k0+D/qHSd/2gNVP9wGl3/cx5g/28ZXP9lCFD/ahFW/24XW/9oDFP/ZwtS/3IdX/9wGl3/axJX/2wTWP9sE1j/bBNY/2wTWP9sFFj/ch1f/3EcXv9mClH/aQ5V/28XW/9pD1X/ZQlR/3AaXf9zHmD/ch1f/3IdX/9xHF7/bxhb/24XW/9wGVz/ch1f/3IeX/9xG17/bhdb/28YW/9vGFv/bxhb/28YW/9vGFv/ch1f/3IdX/9yHF//bxlc/24XWv9vGVz/chxf/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAHIdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//cRxe/3IcXv9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//bRVZ/2UJUf9mClH/ZglR/2YJUf9wGVz/ahFW/2QHT/9kB0//bRZa/28ZXP9lCFD/ZglR/2YJUf9mCVH/bhZa/4hAeP+iapb/oGeT/6Jqlv+kbZj/cx9h/4I3cf+2iqz/sIGm/3QgYf98LWr/pG6Y/6BnlP+iaZX/o2yX/4I2cf+0h6r//////////////////////6t5oP/49Pf////////////aw9X/mVyL//////////////////////+qdp7/iEF4////////////qnef/5lfjP/Cnrr//////8yuxv/fzNv//////5RThf/59vn//////7OFqf+lbpj/hj11/2MFTv+8lLT//////7qRsf9IADD/qHSd//////+XWIn/xKC8//////+KRHr/oWiU///////Oscj/WABB/2oQVv9qEVb/YAFL/+DO3P//////oWiU/20WWv+YWor/bhdb/86xx///////lFOF/1AAOP/Nr8b//////7SGqv9jBU7/diNj/24WWv+CN3H///////Lq8P+VVof//////+PT4P/17/P//////4lCef9oD1T/diNj//z7/P//////fzJu/7OGqf//////oWmV/8usxP//////toms///////+/v7//Pv8/7OFqf+WV4j//////7KEqP+3jK7//////6dym/+xgqf//////8elv//VvM///////7mPsP//////x6bA/4pDev92I2P/ml6N///////WvdD/x6bA//////+seqH/gzlz/////////////////+jb5f+aXo3//////////////////////34xbf/z6/H////////////7+Pr/gDRv/2kPVf+OSn//yKbA/8Cat/96Kmj/fS9s/8ShvP/Cnrr/xqS//8Cat/9uFlr/gjdy/8SgvP/Fob3/hz93/2kPVf9yHl//aQ5V/2QHT/9kB0//bBNY/3AZXP9kB0//ZQhQ/2QHUP9mCVH/ch1f/2oRVv9kBk//ZAdP/2oQVv9yHmD/ch1f/3IdX/9xG17/cRxe/3IdX/9yHV//cRte/3EbXv9xG17/cRxe/3IdX/9yHV//cRxe/3EcXv9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/9yHV//ch1f/3IdX/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
State & National Policy Overview
$:/palettes/VanillaPOS252
menubar-foreground: white
menubar-background: #5f1d72
alert-background: #ffe476
alert-border: #b99e2f
alert-highlight: #881122
alert-muted-foreground: #b99e2f
background: #ffffff
blockquote-bar: <<colour muted-foreground>>
button-background:
button-foreground:
button-border:
code-background: #f7f7f9
code-border: #e1e1e8
code-foreground: #dd1144
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>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #fff
dropdown-tab-background: #ececec
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #0000aa
external-link-foreground: #0000ee
foreground: #333333
highlight-background: #ffff00
highlight-foreground: #000000
message-background: #ecf2ff
message-border: #cfd6e6
message-foreground: #547599
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: #999999
modal-footer-background: #f5f5f5
modal-footer-border: #dddddd
modal-header-border: #eeeeee
muted-foreground: #bbb
notification-background: #ffffdd
notification-border: #999999
page-background: #f4f4f4
pre-background: #f5f5f5
pre-border: #cccccc
primary: #5778d8
selection-background:
selection-foreground:
select-tag-background:
select-tag-foreground:
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: #000000
sidebar-controls-foreground: #aaaaaa
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
sidebar-foreground: #acacac
sidebar-muted-foreground-hover: #444444
sidebar-muted-foreground: #c0c0c0
sidebar-tab-background-selected: #f4f4f4
sidebar-tab-background: #e0e0e0
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: <<colour tab-border>>
sidebar-tab-divider: #e4e4e4
sidebar-tab-foreground-selected:
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-tiddler-link-foreground-hover: #444444
sidebar-tiddler-link-foreground: #999999
site-title-foreground: <<colour tiddler-title-foreground>>
static-alert-foreground: #aaaaaa
tab-background-selected: #ffffff
tab-background: #d8d8d8
tab-border-selected: #d8d8d8
tab-border: #cccccc
tab-divider: #d8d8d8
tab-foreground-selected: <<colour tab-foreground>>
tab-foreground: #666666
table-border: #dddddd
table-footer-background: #a8a8a8
table-header-background: #f0f0f0
tag-background: #ec6
tag-foreground: #ffffff
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-controls-foreground: #cccccc
tiddler-editor-background: #f8f8f8
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-background: #f8f8f8
tiddler-info-border: #dddddd
tiddler-info-tab-background: #f8f8f8
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: #c0c0c0
tiddler-title-foreground: #182955
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
wikilist-background: #e5e5e5
wikilist-item: #fff
wikilist-info: #000
wikilist-title: #666
wikilist-title-svg: <<colour wikilist-title>>
wikilist-url: #aaa
wikilist-button-open: #4fb82b
wikilist-button-open-hover: green
wikilist-button-reveal: #5778d8
wikilist-button-reveal-hover: blue
wikilist-button-remove: #d85778
wikilist-button-remove-hover: red
wikilist-toolbar-background: #d3d3d3
wikilist-toolbar-foreground: #888
wikilist-droplink-dragover: rgba(255,192,192,0.5)
wikilist-button-background: #acacac
wikilist-button-foreground: #000
menubar-foreground: white
menubar-background: #000000
alert-background: #ffe476
alert-border: #b99e2f
alert-highlight: #881122
alert-muted-foreground: #b99e2f
background: #ffffff
blockquote-bar: <<colour muted-foreground>>
button-background:
button-foreground:
button-border:
code-background: #f7f7f9
code-border: #e1e1e8
code-foreground: #dd1144
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>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #fff
dropdown-tab-background: #ececec
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #0000aa
external-link-foreground: #0000ee
foreground: #333333
highlight-background: #ffff00
highlight-foreground: #000000
message-background: #ecf2ff
message-border: #cfd6e6
message-foreground: #547599
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: #999999
modal-footer-background: #f5f5f5
modal-footer-border: #dddddd
modal-header-border: #eeeeee
muted-foreground: #bbb
notification-background: #ffffdd
notification-border: #999999
page-background: #f4f4f4
pre-background: #f5f5f5
pre-border: #cccccc
primary: #5778d8
selection-background:
selection-foreground:
select-tag-background:
select-tag-foreground:
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: #000000
sidebar-controls-foreground: #aaaaaa
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
sidebar-foreground: #acacac
sidebar-muted-foreground-hover: #444444
sidebar-muted-foreground: #c0c0c0
sidebar-tab-background-selected: #f4f4f4
sidebar-tab-background: #e0e0e0
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: <<colour tab-border>>
sidebar-tab-divider: #e4e4e4
sidebar-tab-foreground-selected:
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-tiddler-link-foreground-hover: #444444
sidebar-tiddler-link-foreground: #999999
site-title-foreground: <<colour tiddler-title-foreground>>
static-alert-foreground: #aaaaaa
tab-background-selected: #ffffff
tab-background: #d8d8d8
tab-border-selected: #d8d8d8
tab-border: #cccccc
tab-divider: #d8d8d8
tab-foreground-selected: <<colour tab-foreground>>
tab-foreground: #666666
table-border: #dddddd
table-footer-background: #a8a8a8
table-header-background: #f0f0f0
tag-background: #ec6
tag-foreground: #ffffff
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-controls-foreground: #cccccc
tiddler-editor-background: #f8f8f8
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-background: #f8f8f8
tiddler-info-border: #dddddd
tiddler-info-tab-background: #f8f8f8
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: #c0c0c0
tiddler-title-foreground: #182955
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
wikilist-background: #e5e5e5
wikilist-item: #fff
wikilist-info: #000
wikilist-title: #666
wikilist-title-svg: <<colour wikilist-title>>
wikilist-url: #aaa
wikilist-button-open: #4fb82b
wikilist-button-open-hover: green
wikilist-button-reveal: #5778d8
wikilist-button-reveal-hover: blue
wikilist-button-remove: #d85778
wikilist-button-remove-hover: red
wikilist-toolbar-background: #d3d3d3
wikilist-toolbar-foreground: #888
wikilist-droplink-dragover: rgba(255,192,192,0.5)
wikilist-button-background: #acacac
wikilist-button-foreground: #000
menubar-foreground: white
menubar-background: #a50d0d
alert-background: #ffe476
alert-border: #b99e2f
alert-highlight: #881122
alert-muted-foreground: #b99e2f
background: #ffffff
blockquote-bar: <<colour muted-foreground>>
button-background:
button-foreground:
button-border:
code-background: #f7f7f9
code-border: #e1e1e8
code-foreground: #dd1144
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>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #fff
dropdown-tab-background: #ececec
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #0000aa
external-link-foreground: #0000ee
foreground: #333333
highlight-background: #ffff00
highlight-foreground: #000000
message-background: #ecf2ff
message-border: #cfd6e6
message-foreground: #547599
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: #999999
modal-footer-background: #f5f5f5
modal-footer-border: #dddddd
modal-header-border: #eeeeee
muted-foreground: #bbb
notification-background: #ffffdd
notification-border: #999999
page-background: #f4f4f4
pre-background: #f5f5f5
pre-border: #cccccc
primary: #5778d8
selection-background:
selection-foreground:
select-tag-background:
select-tag-foreground:
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: #000000
sidebar-controls-foreground: #aaaaaa
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
sidebar-foreground: #acacac
sidebar-muted-foreground-hover: #444444
sidebar-muted-foreground: #c0c0c0
sidebar-tab-background-selected: #f4f4f4
sidebar-tab-background: #e0e0e0
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: <<colour tab-border>>
sidebar-tab-divider: #e4e4e4
sidebar-tab-foreground-selected:
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-tiddler-link-foreground-hover: #444444
sidebar-tiddler-link-foreground: #999999
site-title-foreground: <<colour tiddler-title-foreground>>
static-alert-foreground: #aaaaaa
tab-background-selected: #ffffff
tab-background: #d8d8d8
tab-border-selected: #d8d8d8
tab-border: #cccccc
tab-divider: #d8d8d8
tab-foreground-selected: <<colour tab-foreground>>
tab-foreground: #666666
table-border: #dddddd
table-footer-background: #a8a8a8
table-header-background: #f0f0f0
tag-background: #ec6
tag-foreground: #ffffff
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-controls-foreground: #cccccc
tiddler-editor-background: #f8f8f8
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-background: #f8f8f8
tiddler-info-border: #dddddd
tiddler-info-tab-background: #f8f8f8
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: #c0c0c0
tiddler-title-foreground: #182955
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
wikilist-background: #e5e5e5
wikilist-item: #fff
wikilist-info: #000
wikilist-title: #666
wikilist-title-svg: <<colour wikilist-title>>
wikilist-url: #aaa
wikilist-button-open: #4fb82b
wikilist-button-open-hover: green
wikilist-button-reveal: #5778d8
wikilist-button-reveal-hover: blue
wikilist-button-remove: #d85778
wikilist-button-remove-hover: red
wikilist-toolbar-background: #d3d3d3
wikilist-toolbar-foreground: #888
wikilist-droplink-dragover: rgba(255,192,192,0.5)
wikilist-button-background: #acacac
wikilist-button-foreground: #000
{"tiddlers":{"$:/plugins/eucaly/popuptagger/config":{"_active":"on","created":"20140913215723814","creator":"EucalyJ","modified":"20140923134103805","modifier":"EucalyJ","tags":"$:/_popuptagger $:/_macros","title":"$:/plugins/eucaly/popuptagger/config","type":"text/vnd.tiddlywiki","text":"$:/plugins/eucaly/popuptagger/TagBar"},"$:/plugins/eucaly/popuptagger/ControlPage":{"created":"20140913163723059","creator":"EucalyJ","modified":"20140922055743981","modifier":"EucalyJ","tags":"$:/_macros $:/_popuptagger $:/_UI","title":"$:/plugins/eucaly/popuptagger/ControlPage","type":"text/vnd.tiddlywiki","text":"\\define if-match-else(A,B,C=\"\",D,E)\n<$reveal type=\"match\" state=\"$A$\" text=$B$ default=$C$>\n\t$D$\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$A$\" text=$B$ default=$C$>\n\t$E$\n</$reveal>\n\\end\n\n\\define if-matchB-blank-default(A,B,C=\"\",D)\n<$reveal type=\"match\" state=\"$A$\" text=\"$B$\" default=\"\">\n\t$D$\n</$reveal>\n\\end\n\n* `**` In this tiddler, all PopupTagger(s) are displayed (view filters are ignored).\n\n<$reveal state=\"$:/plugins/eucaly/popuptagger/config!!_active\" type=\"nomatch\" text=\"off\" default=\"\">\n~PopupTagger ''Enabled''\n</$reveal>\n<$reveal state=\"$:/plugins/eucaly/popuptagger/config!!_active\" type=\"match\" text=\"off\" default=\"\">\n~PopupTagger `Disabled`\n</$reveal> <<PopupTaggerSwitch>>\n\n<h3> Available ~PopupTagger(s)</h3>\n<table>\n<tr align=\"center\">\n<th>Debug</th>\n<th>Active</th>\n<th>Tag<br/>Edit</th>\n<th>Tag<br/>Table</th>\n<th>Tag<br/>Bar</th>\n<th>\n\t<p>~PopupTagger(s) <$button message=\"tm-new-tiddler\" param=\"$:/plugins/eucaly/popuptagger/TagBar\">Add</$button></p>\n</th></tr>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]tag[$:/_popuptagger]]\" >\n<tr>\n\t<$list filter=\"_debug _active _edittag _tagtable _tagpopup\"] variable=\"field\">\n<td align=\"center\">\n\t\t<$checkbox field=<<field>> checked=\"on\" unchecked=\"off\" default=\"on\"/>\n</td>\n\t</$list>\n<td>\n\t<p><$radio tiddler=\"$:/plugins/eucaly/popuptagger/config\" value={{!!title}}/> <$link to={{!!title}}><$text text={{!!title}}/></$link>\n\t<$macrocall $name=\"if-matchB-blank-default\" \nA=\"$:/plugins/eucaly/popuptagger/config\" \nB={{!!title}}\nD=\"<br/>@@color:red;=>@@ Configure as below\" \n/>\n<$reveal type=\"nomatch\" state=\"$:/plugins/eucaly/popuptagger/config\" text={{!!title}} default=\"\">\n<br/>Parent Tags : ''<$view field=\"taggroup\"/>''\n<br/>View Filter : ''<$view field=\"view-filter\"/>''\n<br/>List After : ''<$view field=\"list-after\"/>''\n</$reveal>\n</p>\n</td></tr>\n</$list>\n</table><br/>\n\n<$list filter=\"[title{$:/plugins/eucaly/popuptagger/config}]\" >\n<h3> Configure ~PopupTagger -- [ <$text text={{!!title}}/> ]</h3>\n\n<ul>\n<li> Parent Tags : ''<$view field=\"taggroup\"/>''\n<$linkcatcher message=\"tm-navigate\" set=<<qualify $:/state/tab>> setTo=\"$:/plugins/eucaly/popuptagger/tab-taggroup\">\n\t<$button set=\"$:/temp/pptg-taggroup!!tags\" setTo={{!!taggroup}} to=<<InPlace>> >Verify</$button>\n</$linkcatcher>\n</li>\n<ul><li>\n\t<$reveal type=\"nomatch\" state=<<qualify $:/state/tab>> text=\"$:/plugins/eucaly/popuptagger/tab-taggroup\" default=\"\">\n\t\tconfig with <$button set=<<qualify $:/state/tab>> setTo=\"$:/plugins/eucaly/popuptagger/tab-taggroup\"> \n Parent Tags </$button> tab below\n\t</$reveal>\n\t<$reveal type=\"match\" state=<<qualify $:/state/tab>> text=\"$:/plugins/eucaly/popuptagger/tab-taggroup\" default=\"\">\n\t\tnew value -- \n\t\t<<if-match-else \"!!taggroup\" {{$:/temp/pptg-taggroup!!tags}} {{!!taggroup}}\n\t\t\"@@color:blue;no changed@@ --\"\n\t\t\"\"\"@@color:blue;<$text text={{$:/temp/pptg-taggroup!!tags}}/>@@ --\n\t\t<$list filter=\"[{$:/temp/pptg-taggroup!!tags}regexp[\\S]first[]]\" variable=\"text1\">\t<!-- not empty -->\n\t\t\t<$button set=\"!!taggroup\" setTo={{$:/temp/pptg-taggroup!!tags}}>Proceed</$button>\n\t\t</$list>\n\t\t\"\"\">>\n\t</$reveal>\n</li></ul><br/>\n\n<li> View Filter : ''<$text text={{!!view-filter}}/>''\n<$linkcatcher message=\"tm-navigate\" set=<<qualify $:/state/tab>> setTo=\"$:/core/ui/AdvancedSearch/Filter\">\n\t<$button set=\"$:/temp/advancedsearch\" setTo={{!!view-filter}} to=<<InPlace>> >Verify</$button>\n</$linkcatcher>\n</li>\n<ul><li>\n\t<$reveal type=\"nomatch\" state=<<qualify $:/state/tab>> text=\"$:/core/ui/AdvancedSearch/Filter\" default=\"\">\n\t\tconfig and verify with <$button set=<<qualify $:/state/tab>> setTo=\"$:/core/ui/AdvancedSearch/Filter\"> \n Filter </$button> tab below\n\t</$reveal>\n\t<$reveal type=\"match\" state=<<qualify $:/state/tab>> text=\"$:/core/ui/AdvancedSearch/Filter\" default=\"\">\n\t\tnew value -- \n\t\t<<if-match-else \"!!view-filter\" {{$:/temp/advancedsearch}} {{$(pptg-tool-base)$!!view-filter}} \n\t\t\"@@color:blue;no changed@@ --\"\n\t\t\"\"\"@@color:blue;{{$:/temp/advancedsearch}}@@ --\n\t\t<$list filter=\"[{$:/temp/advancedsearch}regexp[\\S]first[]]\" variable=\"text1\">\t<!-- not empty -->\n\t\t\t<$button set=\"!!view-filter\" setTo={{$:/temp/advancedsearch}}>Proceed</$button>\n\t\t</$list> \n\t\t\"\"\">>\n\t</$reveal>\n</li></ul><br/>\n\n<li> Location -- list after :\n<$select field=\"list-after\" default=\"\">\n\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]] -[[$(pptg-tool-base)$]]\">\n\t\t<option value=<<currentTiddler>>><$view field=\"title\"/></option>\n\t</$list>\n\t<option value=\"\">== none ==</option>\n</$select></li>\n</ul>\n</$list>\n<<tabs \"$:/plugins/eucaly/popuptagger/readme $:/plugins/eucaly/popuptagger/tab-taggroup $:/core/ui/AdvancedSearch/Filter\" \"$:/plugins/eucaly/popuptagger/readme\" \"$:/state/tab\">>"},"$:/plugins/eucaly/popuptagger/history":{"caption":"History","created":"20140905163101231","creator":"EucalyJ","lastupdate":"20141004","modified":"20141004021938843","modifier":"EucalyJ","tags":"$:/_readme $:/_popuptagger","title":"$:/plugins/eucaly/popuptagger/history","type":"text/vnd.tiddlywiki","text":"!!!History\n* 20141004 / ''0.1.4'' \n** add `Verify` button for Parent Tags in [[ControlPage|$:/plugins/eucaly/popuptagger/ControlPage]]\n** fix `New Tag` button when parent tag contains `!`\n* 20140921 / update icons\n* 20140914 / ''0.1.3'' ( 32K / 17.8K )\n** Global switch `<<PopupTaggerSwitch>>`\n** Reshape with central [[ControlPage|$:/plugins/eucaly/popuptagger/ControlPage]]\n** No need user-provided \"pptg-tool-base\"\n** ==== coding details ====\n** only necessary macros are global\n** `InPlace.js` -- extended from TitleMe\n* 20140913 / ''0.1.2'' ( 24K / 11.4K ) -- for 5.0.17-beta ~\n** stylesheet tagged with {{$:/tags/Stylesheet||$:/core/ui/TagTemplate}}\n** sync ''~TagBar'' / ''~TagTable'' with the same column layout\n** add \"edit button\" for child tag\n** change to <$button to=\"\" class=<<tv-config-toolbar-class>>> {{$:/core/images/options-button}} </$button> [[$:/core/images/options-button]]\n** show PopupTagger config in one place\n** ==== coding details ====\n** Change ButtonWidget `title` attribute to `tooltip`\n** reduce `<$list>` use\n** use `listItem` to detect body / tagbar\n** use `storyTiddler`, `transclusion`, `listItem` variable for debug\n* 20140908 / ''0.1.1'' ( 14.8K / 10.2K )\n** Add ''~TagTable''\n** `<<PopupTaggerAuto>>` provides handy setup process\n** Each element can be enabled / disabled\n* 20140906 / ''0.0.1'' ( 4.5K / 2.2K ) -- not released\n** `<<PopupTaggerBar>>` -- global for all tiddlers\n** `<<PopupTaggerBarIf>>` -- selective, but might need some tweak for filter setup\n* 20140905 -- working draft\n"},"$:/plugins/eucaly/popuptagger/icon":{"created":"20140921105653585","creator":"EucalyJ","modified":"20140921105712528","modifier":"EucalyJ","ref":"tagx3-ON.svg","tags":"$:/tags/Image $:/_popuptagger","title":"$:/plugins/eucaly/popuptagger/icon","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-close-all-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g transform=\"translate(0,-924.36)\">\n\t\t<path d=\"m115.92 980.32a4.0004 4.0004 0 0 0 -2.75 1.21l-60 60.07a4.0004 4.0004 0 0 0 -0.01 0c-1.774 1.8-5.403 3.1-9.16 3.1s-7.385-1.3-9.16-3.1a4.0004 4.0004 0 0 0 -0.01 0l-24-24a4.0004 4.0004 0 1 0 -5.6561 5.6l23.988 24c3.882 3.9 9.425 5.5 14.84 5.5s10.959-1.6 14.84-5.5l59.99-60.01a4.0004 4.0004 0 0 0 -2.91 -6.87z\"/>\n\t\t<path d=\"m115.92 998.36a4.0004 4.0004 0 0 0 -2.75 1.21l-43.998 44.03a4.0004 4.0004 0 1 0 5.656 5.6l44.002-44a4.0004 4.0004 0 0 0 -2.91 -6.84z\"/>\n\t\t<path d=\"m83.105 0.5c-3.975 0-7.795 1.5904-10.605 4.4004l-60.504 60.539c-5.7851 5.79-5.7851 15.402 0 21.202l21.393 21.399c5.795 5.8 15.423 5.8 21.218 0l60.503-60.55c2.81-2.81 4.4-6.629 4.4-10.599v-21.391c0-8.2-6.81-15-15-15h-10.51-10.883zm10.895 15c5.847 0 10.43 4.548 10.49 10.379v0.242c-0.06 5.831-4.643 10.379-10.49 10.379-5.888 0-10.5-4.61-10.5-10.5s4.612-10.5 10.5-10.5z\" transform=\"translate(0,924.36)\"/>\n\t</g>\n</svg>\n\n"},"$:/plugins/eucaly/popuptagger/img/tag-tree.png":{"created":"20140909162119303","creator":"EucalyJ","modified":"20140909162542278","modifier":"EucalyJ","title":"$:/plugins/eucaly/popuptagger/img/tag-tree.png","type":"image/png","text":"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"},"$:/plugins/eucaly/popuptagger/img/tagOff":{"created":"20140915084600827","creator":"EucalyJ","modified":"20140921110223817","modifier":"EucalyJ","ref":"tagx3-OFFsvg","tags":"$:/tags/Image $:/_popuptagger","title":"$:/plugins/eucaly/popuptagger/img/tagOff","type":"text/vnd.tiddlywiki","text":"<svg class=\"tc-close-all-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<path d=\"M 79.105 4.5 C 75.131 4.5 71.312 6.0842 68.502 8.8945 L 12 65.395 C 6.2043 71.19 6.2043 80.814 12 86.609 L 41.395 115.99 C 47.19 121.79 56.81 121.79 62.605 115.99 L 119.1 59.504 C 121.91 56.694 123.5 52.873 123.5 48.896 L 123.5 30 L 123.5 19.504 C 123.5 11.309 116.69 4.5048 108.5 4.5039 L 98.154 4.5039 C 98.103 4.5036 98.052 4.5 98 4.5 C 97.948 4.5 97.897 4.5036 97.846 4.5039 L 79.107 4.5039 L 79.105 4.5 z M 98 19.5 C 103.86 19.5 108.45 24.071 108.5 29.92 L 108.5 30.08 C 108.45 35.929 103.86 40.5 98 40.5 C 92.112 40.5 87.5 35.888 87.5 30 C 87.5 24.112 92.112 19.5 98 19.5 z M 72.869 25.736 C 72.631 27.125 72.5 28.548 72.5 30 C 72.5 43.994 84.006 55.5 98 55.5 C 99.449 55.5 100.87 55.37 102.25 55.133 L 52 105.39 L 22.605 76.002 L 72.869 25.736 z \"/>\n</svg>\n\n"},"$:/plugins/eucaly/popuptagger/img/tagOn":{"created":"20140915084642817","creator":"EucalyJ","modified":"20140921105742282","modifier":"EucalyJ","ref":"tagx3-ON.svg","tags":"$:/tags/Image $:/_popuptagger","title":"$:/plugins/eucaly/popuptagger/img/tagOn","type":"text/vnd.tiddlywiki","text":"{{$:/plugins/eucaly/popuptagger/icon}}"},"$:/plugins/eucaly/popuptagger/inplace.js":{"created":"20140913152220978","creator":"EucalyJ","modified":"20140913154217527","modifier":"EucalyJ","module-type":"macro","tags":"$:/_js $:/_popuptagger","title":"$:/plugins/eucaly/popuptagger/inplace.js","type":"application/javascript","text":"/*\\\n$:/plugins/eucaly/popuptagger/inplace.js\ntype: application/javascript\nmodule-type: macro\n\n!!! Feature\nThis InPlace macro returns in-place field vaule of source tiddler (even in a transclude hierarchy)\n\n!!! Usage\n<<InPlace fieldName:\"title\">>\n* returns the field vaule of source tiddler\n* default field is title\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"InPlace\";\n\nexports.params = [{ name: \"fieldName\" }\n];\n\n/*\nRun the macro\n*/\nexports.run = function(fieldName) {\n var output = \"\",\n\tvariable_name = \"transclusion\",\n meRegex = /\\{[^|]*\\|([^|]*)\\|/,\n p = this,\n v0 = \"\";\n while (p)\n {\n var v = p.getVariable(variable_name);\n\t\tif ( v && v!=v0 )\n {\n \tvar match = meRegex.exec(v);\n if (match && match.length>1)\n {\n\t\t\t\toutput = match[1];\n if (fieldName)\n {\nvar tiddler = this.wiki.getTiddler(output);\nif(tiddler) {\n\toutput = tiddler.getFieldString(fieldName);\n}\n }\n break;\n\t\t\t}\n\t\t}\n\t\tp = p.parentWidget;\n }\n\treturn output;\n};\n\n})();"},"$:/plugins/eucaly/popuptagger/macros/auto":{"created":"20140907013822226","creator":"EucalyJ","modified":"20140914012228717","modifier":"EucalyJ","tags":"$:/_macros $:/_popuptagger","title":"$:/plugins/eucaly/popuptagger/macros/auto","type":"text/vnd.tiddlywiki","text":"\\define pptg-debug(src)\n<$reveal type=\"nomatch\" state=\"$(pptg-tool-base)$!!_debug\" text=\"off\" default=\"on\">\n^^<$link to=\"\" tooltip=<<TitleMe>> >me</$link>\n<$link to=\"\" tooltip=<<trace-variable \"storyTiddler\">> >story</$link>\n<$link to=\"\" tooltip=<<trace-variable \"currentTiddler\">> >current</$link>\n<$link to=\"\" tooltip=<<trace-variable \"transclusion\" \"<br/>\">> >trans</$link>\n<$link to=\"\" tooltip=<<trace-variable \"listItem\">> >listItem</$link>^^\n\t$src$ \n</$reveal>\n\\end\n\n\\define pptg-tagbar()\n<!-- is tool-base itself -->\n<$reveal type=\"match\" state=\"$(pptg-tool-base)$!!title\" text=<<storyTiddler>> default=\"\">\n\t<<pptg-debug \"\"\"@@color:orange;(21-tool-base)@@ ^^@@color:#860;<$text text=\"$(pptg-tool-base)$\">@@^^\"\"\">> \n\t<<PopupTagger>>\n</$reveal>\n<!-- NOT tool-base itself -->\n<$reveal type=\"nomatch\" state=\"$(pptg-tool-base)$!!title\" text=<<storyTiddler>> default=\"\">\n\t<<pptg-debug \"\"\"@@color:#080;(26-tagbar)@@ ^^<$text text=\"$(pptg-tool-base)$\">^^\"\"\">>\n\t<!-- if ControlPage -->\n\t<$reveal type=\"match\" state=\"!!title\" text=\"$:/plugins/eucaly/popuptagger/ControlPage\" default=\"\">\n\t\t<<PopupTagger>>\n\t</$reveal>\n\t<!-- normal tillders -->\n\t<$reveal type=\"nomatch\" state=\"!!title\" text=\"$:/plugins/eucaly/popuptagger/ControlPage\" default=\"\">\n\t\t<<PopupTaggerIf>>\n</$reveal></$reveal>\n\\end\n\n\\define pptg-body()\n<!-- is tool-base itself -->\n<$reveal type=\"match\" state=\"$(pptg-tool-base)$!!title\" text=<<storyTiddler>> default=\"\">\n<br/>\n\t<h3>This is a __~PopupTagger tiddler__, you can visit [[PopupTagger ControlPage|$:/plugins/eucaly/popuptagger/ControlPage]] to check the configuration.</h3>\n</$reveal>\n<!-- NOT tool-base itself -->\n<$reveal type=\"nomatch\" state=\"$(pptg-tool-base)$!!title\" text=<<storyTiddler>> default=\"\">\n\t<<pptg-tool-base-warning>>\n</$reveal>\n\\end\n\n\\define pptg-tool-base-warning()\n<<pptg-debug \"@@color:red;(58-tool-base-warning)@@<br/>\">>\n@@color:red;There's something wrong with ~popupTagger ...@@\n<ul>\n<li>`pptg-tool-base` -- <<InPlace>></li>\n<li>while `new title` -- <<storyTiddler>></li>\n</ul>\n\\end"},"$:/plugins/eucaly/popuptagger/macros/render":{"created":"20140914011146334","creator":"EucalyJ","modified":"20141004020308447","modifier":"EucalyJ","tags":"$:/_macros $:/_popuptagger","title":"$:/plugins/eucaly/popuptagger/macros/render","type":"text/vnd.tiddlywiki","text":"\\define pptg-tagPopup()\n<$button popup=<<qualify $:/temp/$(tagG)$>> tooltip=\"Select tags\" class=\"tc-btn-invisible\">\n ▼ $(tagG)$</$button>\n<$reveal type=popup state=<<qualify $:/temp/$(tagG)$>> >\n\t<div class=\"tc-popup tc-tiddler-info\">\n\t\t<<pptg-tagColumn>>\n\t</div>\n</$reveal>\n\\end\n\n\\define pptg-tagColumn()\n<!-- cannot use {{$(tagG)$||$:/core/ui/TagTemplate}} here, because of popup conflict -->\n<p>$(tagG)$ ( <$count filter=\"[[$(tagG)$]tagging[]!prefix[$:/temp]!has[draft.of]]\"/> )</p>\n<hr/>\n<p><$list filter=\"[tag[$(tagG)$]!prefix[$:/temp]!has[draft.of]sort[]]\" variable=\"tagA\">\n\t<$button message=\"tm-edit-tiddler\" param=<<tagA>> class=<<tv-config-toolbar-class>>>\n\t\t{{$:/core/images/edit-button}}</$button>\n\t<$checkbox tiddler=\"$(currentTiddler)$\" tag=<<tagA>>> <<tagA>></$checkbox><br/> \n</$list>\n<$list filter=\"[[$(tagG)$]regexp:title[!]]\" variable=\"test3\" emptyMessage=\"\"\"<$button set=\"new $(tagG)$ tag!!tags\" setTo=\"$(tagG)$\">New Tag</$button>\"\"\">\n<$button set=\"new tag!!tags\" setTo=\"$(tagG)$\">New Tag</$button>\n</$list></p>\n\\end\n\n\\define pptg-render()\n<div class=\"tc-popuptagger\">\n<!-- TagBar itself -->\n\t<$reveal type=\"match\" state=\"$(pptg-tool-base)$!!title\" text={{!!title}} default=\"\">\n\t\t@@color:red;=>@@\n\t</$reveal>\n<!-- in ControlPage & TagBar is selected -->\n\t<$reveal type=\"match\" state=\"$:/plugins/eucaly/popuptagger/ControlPage!!title\" text=<<storyTiddler>> default=\"\">\n\t\t<$reveal type=\"match\" state=\"$:/plugins/eucaly/popuptagger/config\" text=\"$(pptg-tool-base)$\" default=\"\">\n\t\t\t@@color:red;=>@@\n\t</$reveal></$reveal> \n<$reveal type=\"nomatch\" state=\"$(pptg-tool-base)$!!_active\" text=\"off\" default=\"on\">\n\t<$linkcatcher message=\"tm-navigate\" set=\"$:/plugins/eucaly/popuptagger/config\" setTo=<<InPlace>> >\n\t<$button to=\"$:/plugins/eucaly/popuptagger/ControlPage\" tooltip=\"Config PopupTagger - $(pptg-tool-base)$\" class=<<tv-config-toolbar-class>> >\n\t\t{{$:/core/images/options-button}}</$button>\n\t</$linkcatcher>\n\t<$reveal type=\"nomatch\" state=\"$(pptg-tool-base)$!!_edittag\" text=\"off\" default=\"on\">\n\t\t<$reveal type=\"nomatch\" state=\"$:/state/popuptagger/EditTags\" text=<<qualify $:/temp/EditTags>> default=\"\">\n\t\t\t<$button set=\"$:/state/popuptagger/EditTags\" setTo=<<qualify $:/temp/EditTags>> tooltip=\"Edit tags\">Edit Tags</$button>\n\t\t</$reveal>\n\t\t<$reveal type=\"match\" state=\"$:/state/popuptagger/EditTags\" text=<<qualify $:/temp/EditTags>> default=\"\">\n\t\t\t<$button tooltip=\"Hide tags\" set=\"$:/state/popuptagger/EditTags\" setTo=\"\">Hide Tags</$button>\n\t\t</$reveal>\n\t\t/\n\t</$reveal>\n\t<$reveal type=\"nomatch\" state=\"$(pptg-tool-base)$!!_tagtable\" text=\"off\" default=\"on\">\n\t\t<<pptg-tagTable>>\n\t</$reveal>\n\t<$reveal type=\"nomatch\" state=\"$(pptg-tool-base)$!!_tagpopup\" text=\"off\" default=\"on\">\n\t\t<$list filter=<<InPlace \"taggroup\">> variable=\"tagG\">\n\t\t\t<<pptg-tagPopup>>\n\t\t</$list>\n\t</$reveal>\n\t<$reveal type=\"nomatch\" state=\"$(pptg-tool-base)$!!_edittag\" text=\"off\" default=\"on\">\n\t\t<$reveal type=\"match\" state=\"$:/state/popuptagger/EditTags\" text=<<qualify $:/temp/EditTags>> default=\"\">\n\t\t\t<p><$edit field=\"tags\"/></p>\n\t</$reveal></$reveal>\n</$reveal>\n</div>\n\\end\n\n\\define pptg-tagTable()\n<$reveal type=popup state=<<qualify $:/temp/tagTable>> >\n<div class=\"tc-popup tc-tiddler-info\">\n\t<table><tr valign=\"top\">\n\t\t<$list filter=<<InPlace \"taggroup\">> variable=\"tagG\">\n\t\t\t<td><<pptg-tagColumn>></td>\n\t\t</$list>\n\t</tr></table>\n</div></$reveal> \n<$button popup=<<qualify $:/temp/tagTable>> tooltip=\"Tag Table\">Tag Table</$button>\n\\end"},"$:/plugins/eucaly/popuptagger/macros":{"created":"20140905060129591","creator":"EucalyJ","modified":"20140914024929144","modifier":"EucalyJ","tags":"$:/_macros $:/_popuptagger $:/tags/Macro","title":"$:/plugins/eucaly/popuptagger/macros","type":"text/vnd.tiddlywiki","text":"\\define PopupTagger()\n<$reveal state=\"$:/plugins/eucaly/popuptagger/config!!_active\" type=\"nomatch\" text=\"off\" default=\"\">\n<$importvariables filter=\"[all[shadows+tiddlers]prefix[$:/plugins/eucaly/popuptagger/macros/]]\">\n<$set name=\"pptg-tool-base\" value=<<InPlace>> >\n\t<<pptg-render>>\n</$set>\n</$importvariables>\n</$reveal>\n\\end\n\n\\define PopupTaggerIf()\n<$list filter=<<InPlace \"view-filter\">> variable=\"t1\">\n<$list filter=\"[<t1>is[current]!has[draft.of]first[]]\" variable=\"t2\">\n\t<<PopupTagger>>\n</$list></$list>\n\\end\n\n\\define PopupTaggerAuto()\n<$importvariables filter=\"[all[shadows+tiddlers]prefix[$:/plugins/eucaly/popuptagger/macros/]]\">\n<$set name=\"pptg-tool-base\" value=<<InPlace>> >\n<$list filter=\"[title<InPlace>!field:title<listItem>]\" variable=\"test14\">\n<div class=\"tc-popuptagger-body\">\t<!-- body only -->\n\t<<pptg-debug \"@@color:#080;(09-body-only)@@\">>\n\t<<pptg-body>>\n</div>\n</$list>\n\n<$list filter=\"[title<InPlace>field:title<listItem>]\" variable=\"test23\">\n<div class=\"tc-popuptagger\">\t\t<!-- tagbar only -->\n\t<<pptg-debug \"@@color:orange;(13-tagbar-only)@@\">>\n\t<<pptg-tagbar>>\n</div>\n</$list>\n</$set>\n</$importvariables>\n\\end\n\n\\define PopupTaggerSwitch()\n<span class=\"tc-popuptagger-switch\">\n<$reveal state=\"$:/plugins/eucaly/popuptagger/config!!_active\" type=\"nomatch\" text=\"off\" default=\"\">\n<$button set=\"$:/plugins/eucaly/popuptagger/config!!_active\" setTo=\"off\" tooltip=\"Hide PopupTagger\" class=<<tv-config-toolbar-class>> >{{$:/plugins/eucaly/popuptagger/img/tagOn}}</$button>\n</$reveal>\n<$reveal state=\"$:/plugins/eucaly/popuptagger/config!!_active\" type=\"match\" text=\"off\" default=\"\">\n<$button set=\"$:/plugins/eucaly/popuptagger/config!!_active\" setTo=\"on\" tooltip=\"Show PopupTagger\" class=<<tv-config-toolbar-class>> >{{$:/plugins/eucaly/popuptagger/img/tagOff}}</$button>\n</$reveal>\n</span>\n\\end\n"},"$:/plugins/eucaly/popuptagger/readme":{"caption":"~PopupTagger","created":"20140905151516651","creator":"EucalyJ","lastupdate":"20141004","modified":"20141004021911667","modifier":"EucalyJ","tags":"$:/_readme $:/_popuptagger","title":"$:/plugins/eucaly/popuptagger/readme","type":"text/vnd.tiddlywiki","text":"!![[PopupTagger Plugin|$:/plugins/eucaly/popuptagger/readme]]\n<hr>\n\nThis ''PopupTagger'' plugin provides ''~TagTable'' and ''~TagBar with popup list of tags'' for [[TiddlyWiki 5|http://tiddlywiki.com/]]. \n<p>** Inspired by [[MonkeyTaggerMacro|http://tiddlywiki.squize.org/#MonkeyTaggerMacro]] (~TiddlyWiki classic)</p>\n\n!!!Features\n\n# ''~TagBar'' with ''popup list of tags''\n# ''~TagTable'' for quick tagging \n# ''~TagEdit'' enables ''tag editing'' as in ~TiddlyWiki classic\n# Shortcut <$button class=<<tv-config-toolbar-class>>> {{$:/core/images/options-button}}</$button> for ''~PopupTagger'' setting\n# ''Global switch'' `<<PopupTaggerSwitch>>` <<PopupTaggerSwitch>>\n# ''Handy setup process'' -- central [[ControlPage|$:/plugins/eucaly/popuptagger/ControlPage]]\n#* Each element can be enabled / disabled\n#* ''Custom parent tags'' to generate ''~TagBar'' and ''~TagTable''\n#* ~PopupTagger could be ''selectively available'' for certain tiddlers only -- thanks to `<$list>` filter\n#* ''Custom ~PopupTagger location'' -- thanks to `list-after` field\n# ** all above tag operations is ''real-time'' in ''View Mode''\n\n!!!Install\n* Drag&Drop package -- [[$:/plugins/eucaly/popuptagger]] (with documentation)<!--, or\n* Drag&Drop the macros <$list filter=\"[all[shadows+tiddlers]tag[$:/_macros]tag[$:/_popuptagger]!has[draft.of]sort[]]\">\n\n* <$link to={{!!title}}>{{!!title}}</$link>\n</$list>-->\n\n!!!Usage\n\n* You may start with some tag trees like :\n<<<\n{{$:/plugins/eucaly/popuptagger/img/tag-tree.png}}\n<<<\n# Goto central [[ControlPage|$:/plugins/eucaly/popuptagger/ControlPage]] ( [[$:/plugins/eucaly/popuptagger/ControlPage]] )\n# Check for available ~PopupTagger, or\n# Press `Add` button\n#* Rename the new ~PopupTagger tiddler, in order not to overwrite the [[PopupTagger template|$:/plugins/eucaly/popuptagger/TagBar]]\n#* ~~Modify `\\define pptg-tool-base()` macro definition to sync with the new title~~\n#* ~~In addition to that,~~ please keep `<<PopupTaggerAuto>>` macro call there.\n# Follow the `Configure` section provided in [[ControlPage|$:/plugins/eucaly/popuptagger/ControlPage]]\n# ''Global switch'' `<<PopupTaggerSwitch>>` <<PopupTaggerSwitch>> is available in [[ControlPage|$:/plugins/eucaly/popuptagger/ControlPage]], and can be added to else where as you like.\n* ** If you like to conduct a ''manual setup'', you may try `<<PopupTagger>>` or `<<PopupTaggerIf>>` macro call, instead of `<<xxxAuto>>`\n\n!!!Filter Example\n\n| <p>[tag[`$:/_readme`]] [tag[`$:/_UI`]]</p> |tagged `$:/_readme` or `$:/_UI` |\n| <p>[tag[`$:/_macros`]tag[`$:/_popuptagger`]]</p> |tagged `$:/_macros` and `$:/_popuptagger` |\n| <p>[creator/`eucaly`/(i)]</p> |with creator name contains `eucaly` |\n\n"},"$:/plugins/eucaly/popuptagger/StyleSheet":{"created":"20140906125324508","creator":"EucalyJ","modified":"20140912233930702","modifier":"EucalyJ","tags":"$:/tags/Stylesheet $:/_popuptagger $:/_macros","title":"$:/plugins/eucaly/popuptagger/StyleSheet","type":"text/css","text":".tc-popuptagger\n{\n\tbackground-color: #eee;\n}\n\n.tc-tiddler-body .tc-popuptagger\n{\n\tdisplay:none;\n}\n\n.tc-popuptagger-body\n{\n\tdisplay:none;\n}\n\n.tc-tiddler-body .tc-popuptagger-body\n{\n\tdisplay:inline;\n}\n\n.tc-popuptagger-body input\n{\n\twidth: 60%\n}\n\n.tc-popuptagger-checked\n{\n\tbackground-color: #8f8;\n}"},"$:/plugins/eucaly/popuptagger/tab-taggroup":{"caption":"Parent Tags","created":"20140907071901381","creator":"EucalyJ","modified":"20140914012411928","modifier":"EucalyJ","tags":"$:/_macros $:/_popuptagger","title":"$:/plugins/eucaly/popuptagger/tab-taggroup","type":"text/vnd.tiddlywiki","text":"!!!!Parent Tags \n\n<table>\n\t<$list filter=\"[all[shadows+tiddlers]tags[]tags[]]\">\n\t\t<tr>\n\t\t<td><$checkbox tiddler=\"$:/temp/pptg-taggroup\" tag={{!!title}}/></td>\n\t\t<td align=\"left\">{{!!title}}\n ( <$count filter=\"[{!!title}tagging[]!prefix[$:/temp]!has[draft.of]]\"/> )</td>\n\t\t</tr>\n\t</$list>\n</table>\n\nor edit in below -- <$button set=\"$:/temp/pptg-taggroup!!tags\" setTo=\"\">Clear</$button>\n{{$:/temp/pptg-taggroup||$:/core/ui/EditTemplate/tags}}\n<$edit tiddler=\"$:/temp/pptg-taggroup\" field=\"tags\"/>\n\nIf below result looks OK, please press `Proceed` above.\n<table><tr valign=\"top\">\n\t<$list filter=\"[list[$:/temp/pptg-taggroup!!tags]]\">\n\t\t<td><p>''{{!!title}}'' ( <$count filter=\"[{!!title}tagging[]!prefix[$:/temp]]\"/> )</p>\n\t\t\t<$list filter=\"[{!!title}tagging[]!prefix[$:/temp]sort[]]\">\n\t\t\t\t{{!!title}}<br/>\n\t\t\t</$list></td>\n\t</$list>\n</tr></table>"},"$:/plugins/eucaly/popuptagger/TagBar":{"_active":"on","_debug":"off","_edittag":"on","_tagpopup":"off","_tagtable":"on","created":"20140905024853346","creator":"EucalyJ","list-after":"$:/core/ui/ViewTemplate/tags","modified":"20140921091502881","modifier":"EucalyJ","taggroup":"$:/plugins/eucaly $:/_doc-type $:/_doc-edition toc","tags":"$:/tags/ViewTemplate $:/_UI $:/_popuptagger $:/_macros","title":"$:/plugins/eucaly/popuptagger/TagBar","type":"text/vnd.tiddlywiki","view-filter":"[all[tiddlers+shadows]regexp:creator[eucaly(?i)]]","text":"<<PopupTaggerAuto>>"}}}
{"tiddlers":{"$:/plugins/flibbles/relink/js/bulkops.js":{"text":"/*\\\nmodule-type: startup\n\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\n\nThis is a startup instead of a wikimethods module-type because it's the only\nway to ensure this runs after the old relinkTiddler method is applied.\n\n\\*/\n(function(){\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\n\nexports.name = \"redefine-relinkTiddler\";\nexports.synchronous = true;\n// load-modules is when wikimethods are applied in\n// ``$:/core/modules/startup/load-modules.js``\nexports.after = ['load-modules'];\n// We come before commands because they may do renaming, or jasmine testing\nexports.before = ['commands'];\n\nexports.startup = function() {\n\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\n};\n\n/** Walks through all relinkable tiddlers and relinks them.\n * This replaces the existing function in core Tiddlywiki.\n */\nfunction relinkTiddler(fromTitle, toTitle, options) {\n\toptions = options || {};\n\tvar failures = [];\n\tvar indexer = utils.getIndexer(this);\n\tvar records = indexer.relinkLookup(fromTitle, toTitle, options);\n\tfor (var title in records) {\n\t\tvar entries = records[title],\n\t\t\tchanges = Object.create(null),\n\t\t\tupdate = false,\n\t\t\tfails = false;\n\t\tfor (var field in entries) {\n\t\t\tvar entry = entries[field];\n\t\t\tfails = fails || entry.impossible;\n\t\t\tif (entry.output !== undefined) {\n\t\t\t\tchanges[field] = entry.output;\n\t\t\t\tupdate = true;\n\t\t\t}\n\t\t}\n\t\tif (fails) {\n\t\t\tfailures.push(title);\n\t\t}\n\t\t// If any fields changed, update tiddler\n\t\tif (update) {\n\t\t\tconsole.log(\"Renaming '\"+fromTitle+\"' to '\"+toTitle+\"' in '\" + title + \"'\");\n\n\t\t\tvar tiddler = this.getTiddler(title);\n\t\t\tvar modifyField = utils.touchModifyField(this) ? this.getModificationFields() : undefined;\n\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,changes,modifyField)\n\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\tthis.addTiddler(newTiddler);\n\t\t\t// If the title changed, we need to perform a nested rename\n\t\t\tif (newTiddler.fields.title !== title) {\n\t\t\t\tthis.deleteTiddler(title);\n\t\t\t\tthis.relinkTiddler(title, newTiddler.fields.title,options);\n\t\t\t}\n\t\t}\n\t};\n\tif (failures.length > 0) {\n\t\tvar options = $tw.utils.extend(\n\t\t\t{ variables: {to: toTitle, from: fromTitle},\n\t\t\t wiki: this},\n\t\t\toptions );\n\t\tlanguage.reportFailures(failures, options);\n\t}\n};\n\n})();\n","module-type":"startup","title":"$:/plugins/flibbles/relink/js/bulkops.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/indexer.js":{"text":"/*\\\nmodule-type: indexer\n\nIndexes results from tiddler reference reports so we don't have to call them\nso much.\n\n\\*/\n\n\"use strict\";\n\nvar utils = require(\"./utils.js\");\nvar TiddlerContext = utils.getContext('tiddler');\n\nfunction Indexer(wiki) {\n\tthis.wiki = wiki;\n};\n\nIndexer.prototype.init = function() {\n\tthis.rebuild();\n};\n\nIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n\tthis.backIndex = null;\n\tthis.contexts = Object.create(null);\n\tthis.changedTiddlers = undefined;\n\tthis.lastRelinks = Object.create(null);\n};\n\nIndexer.prototype.update = function(updateDescriptor) {\n\tif (!this.index) {\n\t\treturn;\n\t}\n\tvar title;\n\tif (!this.changedTiddlers) {\n\t\tthis.changedTiddlers = Object.create(null);\n\t}\n\tif (updateDescriptor.old.exists) {\n\t\ttitle = updateDescriptor.old.tiddler.fields.title;\n\t\tthis.changedTiddlers[title] = {deleted: true};\n\t\tthis._purge(title);\n\t}\n\tif (updateDescriptor['new'].exists) {\n\t\t// If its the same tiddler as old, this overrides the 'deleted' entry\n\t\ttitle = updateDescriptor['new'].tiddler.fields.title;\n\t\tthis.changedTiddlers[title] = {modified: true};\n\t}\n};\n\nIndexer.prototype.lookup = function(title) {\n\tthis._upkeep();\n\treturn this.index[title];\n};\n\nIndexer.prototype.reverseLookup = function(title) {\n\tthis._upkeep();\n\treturn this.backIndex[title] || Object.create(null);\n};\n\nIndexer.prototype.relinkLookup = function(fromTitle, toTitle, options) {\n\tthis._upkeep();\n\tvar shortlist = undefined;\n\tvar lastRelink = this.lastRelinks[fromTitle];\n\tif (lastRelink) {\n\t\tif (lastRelink.to === toTitle) {\n\t\t\t// We need to reintroduce the relink cache, where temporary info\n\t\t\t// was stored.\n\t\t\toptions.cache = lastRelink.cache;\n\t\t\treturn lastRelink.results;\n\t\t}\n\t\tshortlist = buildShortlist(lastRelink);\n\t}\n\tvar results = utils.getRelinkResults(this.wiki, fromTitle, toTitle, this.context, shortlist, options);\n\tif (Object.keys(this.lastRelinks).length > 3) {\n\t\t// The cache got a little large. wipe it clean.\n\t\tthis.lastRelinks = Object.create(null);\n\t}\n\tthis.lastRelinks[fromTitle] = {\n\t\tfrom: fromTitle,\n\t\tresults: results,\n\t\tto: toTitle,\n\t\tcache: options.cache,\n\t\tmaybeRelevant: Object.create(null)};\n\treturn results;\n};\n\n// Returns all tiddlers that don't have anything referencing it.\nIndexer.prototype.orphans = function() {\n\tthis._upkeep();\n\tvar results = [];\n\tfor (var title in this.index) {\n\t\tif (!this.backIndex[title]\n\t\t|| Object.keys(this.backIndex[title]).length === 0) {\n\t\t\tresults.push(title);\n\t\t}\n\t}\n\treturn results;\n};\n\nIndexer.prototype._upkeep = function() {\n\tvar title;\n\tif (this.changedTiddlers && (this.context.changed(this.changedTiddlers) || this.context.parent.changed(this.changedTiddlers))) {\n\t\t// If global macro context or whitelist context changed, wipe all\n\t\tthis.rebuild();\n\t}\n\tif (!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tthis.backIndex = Object.create(null);\n\t\tthis.context = utils.getWikiContext(this.wiki);\n\t\tvar titles = this.wiki.getRelinkableTitles();\n\t\tfor (var i = 0; i < titles.length; i++) {\n\t\t\tthis._populate(titles[i]);\n\t\t};\n\t} else if (this.changedTiddlers) {\n\t\t// If there are cached changes, we apply them now.\n\t\tfor (title in this.contexts) {\n\t\t\tvar tiddlerContext = this.contexts[title];\n\t\t\tif (tiddlerContext.changed(this.changedTiddlers)) {\n\t\t\t\tthis._purge(title);\n\t\t\t\tthis._populate(title);\n\t\t\t\tthis._decacheRelink(title);\n\t\t\t\t// Wipe this change, so we don't risk updating it twice.\n\t\t\t\tthis.changedTiddlers[title] = undefined;\n\t\t\t}\n\t\t}\n\t\tfor (title in this.changedTiddlers) {\n\t\t\tvar change = this.changedTiddlers[title];\n\t\t\tif (change && change.modified) {\n\t\t\t\tthis._purge(title);\n\t\t\t\tthis._populate(title);\n\t\t\t\tthis._decacheRelink(title);\n\t\t\t}\n\t\t}\n\t\tthis.changedTiddlers = undefined;\n\t}\n};\n\nIndexer.prototype._purge = function(title) {\n\tfor (var entry in this.index[title]) {\n\t\tdelete this.backIndex[entry][title];\n\t}\n\tdelete this.contexts[title];\n\tdelete this.index[title];\n};\n\n// This drops the cached relink results if unsanctioned tiddlers were changed\nIndexer.prototype._decacheRelink = function(title) {\n\tvar tiddler = this.wiki.getTiddler(title);\n\tfor (var from in this.lastRelinks) {\n\t\tvar lastRelink = this.lastRelinks[from];\n\t\tif (title !== from\n\t\t&& title !== lastRelink.to\n\t\t&& (!tiddler\n\t\t|| !$tw.utils.hop(tiddler.fields, 'draft.of') // is a draft\n\t\t|| tiddler.fields['draft.of'] !== from// draft of target\n\t\t|| references(this.index[title], from))) { // draft references target\n\t\t\t// This is not the draft of the last relinked title,\n\t\t\t// so our cached results should be wiped.\n\t\t\tlastRelink.maybeRelevant[title] = true;\n\t\t\t// Force this cached relink to partially refresh when it comes time\n\t\t\tlastRelink.to = undefined;\n\t\t}\n\t}\n};\n\nfunction references(list, item) {\n\treturn list !== undefined && list[item];\n};\n\n// Compiles a short list of tiddlers we need to check for a rename.\n// This list will be much faster to relink again.\nfunction buildShortlist(lastRelink) {\n\tvar shortlist = Object.keys(lastRelink.results);\n\tfor (var title in lastRelink.maybeRelevant) {\n\t\tif (lastRelink.results[title] === undefined) {\n\t\t\tshortlist.push(title);\n\t\t}\n\t}\n\treturn shortlist;\n};\n\nIndexer.prototype._populate = function(title) {\n\t// Fetch the report for a title, and populate the indexes with result\n\tvar tiddlerContext = new TiddlerContext(this.wiki, this.context, title);\n\tvar references = utils.getTiddlerRelinkReferences(this.wiki, title, tiddlerContext);\n\tthis.index[title] = references;\n\tif (tiddlerContext.hasImports()) {\n\t\tthis.contexts[title] = tiddlerContext;\n\t}\n\tfor (var ref in references) {\n\t\tthis.backIndex[ref] = this.backIndex[ref] || Object.create(null);\n\t\tthis.backIndex[ref][title] = references[ref];\n\t}\n};\n\nexports.RelinkIndexer = Indexer;\n","module-type":"indexer","title":"$:/plugins/flibbles/relink/js/indexer.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/language.js":{"text":"/*\\\nmodule-type: library\n\nThis handles all logging and alerts Relink emits.\n\n\\*/\n\nexports.getString = function(outputType, title, options) {\n\ttitle = \"$:/plugins/flibbles/relink/language/\" + title;\n\treturn options.wiki.renderTiddler(outputType, title, options);\n};\n\nvar logger;\n\nexports.warn = function(string, options) {\n\tif (!logger) {\n\t\tlogger = new $tw.utils.Logger(\"Relinker\");\n\t}\n\tlogger.alert(string);\n};\n\nexports.reportFailures = function(failureList, options) {\n\tvar alertString = this.getString(\"text/html\", \"Error/ReportFailedRelinks\", options)\n\tvar alreadyReported = Object.create(null);\n\tvar reportList = [];\n\t$tw.utils.each(failureList, function(f) {\n\t\tif (!alreadyReported[f]) {\n\t\t\tif ($tw.browser) {\n\t\t\t\t// This might not make the link if the title is complicated.\n\t\t\t\t// Whatever.\n\t\t\t\treportList.push(\"\\n* [[\" + f + \"]]\");\n\t\t\t} else {\n\t\t\t\treportList.push(\"\\n* \" + f);\n\t\t\t}\n\t\t\talreadyReported[f] = true;\n\t\t}\n\t});\n\tthis.warn(alertString + \"\\n\" + reportList.join(\"\"));\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/language.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/mangler.js":{"text":"/*\\\nmodule-type: widget\n\nCreates a mangler widget for field validation. This isn't meant to be used\nby the user. It's only used in Relink configuration.\n\n\\*/\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nvar RelinkManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"relink-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"relink-add-operator\", handler: \"handleAddOperatorEvent\"},\n\t\t{type: \"relink-add-parameter\", handler: \"handleAddParameterEvent\"},\n\t\t{type: \"relink-add-attribute\", handler: \"handleAddAttributeEvent\"}\n\t]);\n};\n\nexports.relinkmangler = RelinkManglerWidget;\n\nRelinkManglerWidget.prototype = new Widget();\n\n// This wraps alert so it can be monkeypatched during testing.\nRelinkManglerWidget.prototype.alert = function(message) {\n\talert(message);\n};\n\nRelinkManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (typeof param !== \"object\" || !param.field) {\n\t\t// Can't handle it.\n\t\treturn true;\n\t}\n\tvar trimmedName = param.field.trim();\n\tif (!trimmedName) {\n\t\t// Still can't handle it, but don't warn.\n\t\treturn true;\n\t}\n\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\tthis.alert($tw.language.getString(\n\t\t\t\"InvalidFieldName\",\n\t\t\t{variables:\n\t\t\t\t{fieldName: trimmedName}\n\t\t\t}\n\t\t));\n\t} else {\n\t\tadd(this.wiki, \"fields\", trimmedName);\n\t}\n\treturn true;\n};\n\n/**Not much validation, even though there are definitely illegal\n * operator names. If you input on, Relink won't relink it, but it\n * won't choke on it either. Tiddlywiki will...\n */\nRelinkManglerWidget.prototype.handleAddOperatorEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param) {\n\t\tadd(this.wiki, \"operators\", param.operator);\n\t}\n\treturn true;\n};\n\nRelinkManglerWidget.prototype.handleAddParameterEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param && param.macro && param.parameter) {\n\t\tif (/\\s/.test(param.macro.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidMacroName\",\n\t\t\t\t{ variables: {macroName: param.macro},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else if (/[ \\/]/.test(param.parameter.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidParameterName\",\n\t\t\t\t{ variables: {parameterName: param.parameter},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else {\n\t\t\tadd(this.wiki, \"macros\", param.macro, param.parameter);\n\t\t}\n\t}\n\treturn true;\n};\n\nRelinkManglerWidget.prototype.handleAddAttributeEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param && param.element && param.attribute) {\n\t\tif (/[ \\/]/.test(param.element.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidElementName\",\n\t\t\t\t{ variables: {elementName: param.element},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else if (/[ \\/]/.test(param.attribute.trim())) {\n\t\t\tthis.alert(language.getString(\n\t\t\t\t\"text/plain\",\n\t\t\t\t\"Error/InvalidAttributeName\",\n\t\t\t\t{ variables: {attributeName: param.attribute},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else {\n\t\t\tadd(this.wiki, \"attributes\", param.element, param.attribute);\n\t\t}\n\t}\n\treturn true;\n};\n\nfunction add(wiki, category/*, path parts*/) {\n\tvar path = \"$:/config/flibbles/relink/\" + category;\n\tfor (var x = 2; x < arguments.length; x++) {\n\t\tvar part = arguments[x];\n\t\t// Abort if it's falsy, or only whitespace. Also, trim spaces\n\t\tif (!part || !(part = part.trim())) {\n\t\t\treturn;\n\t\t}\n\t\tpath = path + \"/\" + part;\n\t}\n\tvar def = utils.getDefaultType(wiki);\n\twiki.addTiddler({title: path, text: def});\n};\n","module-type":"widget","title":"$:/plugins/flibbles/relink/js/mangler.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/settings.js":{"text":"/*\\\nmodule-type: library\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar utils = require('./utils');\n\n///// Legacy. You used to be able to access the type from utils.\nexports.getType = utils.getType;\n/////\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/settings.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils.js":{"text":"/*\\\nmodule-type: library\n\nUtility methods for relink.\n\n\\*/\n\nvar macroFilter = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\n/**This works nearly identically to $tw.modules.getModulesByTypeAsHashmap\n * except that this also takes care of migrating V1 relink modules.\n */\nexports.getModulesByTypeAsHashmap = function(moduleType, nameField) {\n\tvar results = Object.create(null);\n\t$tw.modules.forEachModuleOfType(moduleType, function(title, module) {\n\t\tvar key = module[nameField];\n\t\tif (key !== undefined) {\n\t\t\tresults[key] = module;\n\t\t} else {\n\t\t\tfor (var entry in module) {\n\t\t\t\tresults[entry] = {\n\t\t\t\t\trelink: module[entry],\n\t\t\t\t\treport: function() {}};\n\t\t\t\tresults[entry][nameField] = entry;\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.getTiddlerRelinkReferences = function(wiki, title, context) {\n\tvar tiddler = wiki.getTiddler(title),\n\t\treferences = Object.create(null),\n\t\toptions = {settings: context, wiki: wiki};\n\tif (tiddler) {\n\t\ttry {\n\t\t\tfor (var relinker in getRelinkOperators()) {\n\t\t\t\tgetRelinkOperators()[relinker].report(tiddler, function(title, blurb) {\n\t\t\t\t\treferences[title] = references[title] || [];\n\t\t\t\t\treferences[title].push(blurb || '');\n\t\t\t\t}, options);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tif (e.message) {\n\t\t\t\te.message = e.message + \"\\nWhen reporting '\" + title + \"' Relink references\";\n\t\t\t}\n\t\t\tthrow e;\n\t\t}\n\t}\n\treturn references;\n};\n\n/** Returns a pair like this,\n * { title: {field: entry, ... }, ... }\n */\nexports.getRelinkResults = function(wiki, fromTitle, toTitle, context, tiddlerList, options) {\n\toptions = options || {};\n\toptions.wiki = options.wiki || wiki;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\tvar changeList = Object.create(null);\n\tif(fromTitle && toTitle !== undefined) {\n\t\tif (tiddlerList === undefined) {\n\t\t\ttiddlerList = wiki.getRelinkableTitles();\n\t\t}\n\t\tfor (var i = 0; i < tiddlerList.length; i++) {\n\t\t\tvar title = tiddlerList[i];\n\t\t\tvar tiddler = wiki.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\ttry {\n\t\t\t\t\tvar entries = Object.create(null),\n\t\t\t\t\t\toperators = getRelinkOperators();\n\t\t\t\t\toptions.settings = new Contexts.tiddler(wiki, context, title);\n\t\t\t\t\tfor (var operation in operators) {\n\t\t\t\t\t\toperators[operation].relink(tiddler, fromTitle, toTitle, entries, options);\n\t\t\t\t\t}\n\t\t\t\t\tfor (var field in entries) {\n\t\t\t\t\t\t// So long as there is one key,\n\t\t\t\t\t\t// add it to the change list.\n\t\t\t\t\t\tif (tiddler.fields[\"plugin-type\"]) {\n\t\t\t\t\t\t\t// We never change plugins, even if they have links\n\t\t\t\t\t\t\tchangeList[title] = {};\n\t\t\t\t\t\t\tchangeList[title][field] = {impossible: true};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tchangeList[title] = entries;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Should we test for instanceof Error instead?: yes\n\t\t\t\t\t// Does that work in the testing environment?: no\n\t\t\t\t\tif (e.message) {\n\t\t\t\t\t\te.message = e.message + \"\\nWhen relinking '\" + title + \"'\";\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn changeList;\n};\n\nvar Contexts = $tw.modules.applyMethods('relinkcontext');\n\nexports.getContext = function(name) {\n\treturn Contexts[name];\n};\n\nexports.getWikiContext = function(wiki) {\n\t// This gives a fresh context every time. It is up to the indexer or\n\t// the cache to preserve those contexts for as long as needed.\n\tvar whitelist = new Contexts.whitelist(wiki);\n\treturn new Contexts.import(wiki, whitelist, macroFilter);\n};\n\n/** Returns the Relink indexer, or a dummy object which pretends to be one.\n */\nexports.getIndexer = function(wiki) {\n\tif (!wiki._relink_indexer) {\n\t\twiki._relink_indexer = (wiki.getIndexer && wiki.getIndexer(\"RelinkIndexer\")) || new (require('$:/plugins/flibbles/relink/js/utils/backupIndexer.js'))(wiki);\n\t}\n\treturn wiki._relink_indexer;\n};\n\n/**Relinking supports a cache that persists throughout a whole relink op.\n * This is because the Tiddlywiki caches may get wiped multiple times\n * throughout the course of a relink.\n */\nexports.getCacheForRun = function(options, cacheName, initializer) {\n\toptions.cache = options.cache || Object.create(null);\n\tif (!$tw.utils.hop(options.cache, cacheName)) {\n\t\toptions.cache[cacheName] = initializer();\n\t}\n\treturn options.cache[cacheName];\n};\n\n/**Returns a specific relinker.\n * This is useful for wikitext rules which need to parse a filter or a list\n */\nexports.getType = function(name) {\n\tvar Handler = getFieldTypes()[name];\n\treturn Handler ? new Handler() : undefined;\n};\n\nexports.getTypes = function() {\n\t// We don't return fieldTypes, because we don't want it modified,\n\t// and we need to filter out legacy names.\n\tvar rtn = Object.create(null);\n\tfor (var type in getFieldTypes()) {\n\t\tvar typeObject = getFieldTypes()[type];\n\t\trtn[typeObject.typeName] = typeObject;\n\t}\n\treturn rtn;\n};\n\nexports.getDefaultType = function(wiki) {\n\tvar tiddler = wiki.getTiddler(\"$:/config/flibbles/relink/settings/default-type\");\n\tvar defaultType = tiddler && tiddler.fields.text;\n\t// make sure the default actually exists, otherwise default\n\treturn fieldTypes[defaultType] ? defaultType : \"title\";\n};\n\nexports.touchModifyField = function(wiki) {\n\tvar tiddler = wiki.getTiddler(\"$:/config/flibbles/relink/touch-modify\");\n\treturn tiddler && tiddler.fields.text.trim() === \"yes\";\n};\n\n/**Given some text, and a param or attribute within that text, this returns\n * what type of quotation that attribute is using.\n *\n * param: An object in the form {end:, ...}\n */\nexports.determineQuote = function(text, param) {\n\tvar pos = param.end-1;\n\tif (text[pos] === \"'\") {\n\t\treturn \"'\";\n\t}\n\tif (text[pos] === '\"') {\n\t\tif (text.substr(pos-2, 3) === '\"\"\"') {\n\t\t\treturn '\"\"\"';\n\t\t} else {\n\t\t\treturn '\"';\n\t\t}\n\t}\n\tif (text.substr(pos-1,2) === ']]' && text.substr((pos-param.value.length)-3, 2) === '[[') {\n\t\treturn \"[[\";\n\t}\n\treturn '';\n};\n\nvar fieldTypes;\n\nfunction getFieldTypes() {\n\tif (!fieldTypes) {\n\t\tfieldTypes = Object.create(null);\n\t\t$tw.modules.forEachModuleOfType(\"relinkfieldtype\", function(title, exports) {\n\t\t\tfunction NewType() {};\n\t\t\tNewType.prototype = exports;\n\t\t\tNewType.typeName = exports.name;\n\t\t\tfieldTypes[exports.name] = NewType;\n\t\t\t// For legacy, if the NewType doesn't have a report method, we add one\n\t\t\tif (!exports.report) {\n\t\t\t\texports.report = function() {};\n\t\t\t}\n\t\t\t// Also for legacy, some of the field types can go by other names\n\t\t\tif (exports.aliases) {\n\t\t\t\t$tw.utils.each(exports.aliases, function(alias) {\n\t\t\t\t\tfieldTypes[alias] = NewType;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\treturn fieldTypes;\n}\n\nvar relinkOperators;\n\nfunction getRelinkOperators() {\n\tif (!relinkOperators) {\n\t\trelinkOperators = exports.getModulesByTypeAsHashmap('relinkoperator', 'name');\n\t}\n\treturn relinkOperators;\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/wikimethods.js":{"text":"/*\\\nmodule-type: wikimethod\n\nIntroduces some utility methods used by Relink.\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.getTiddlerRelinkReferences = function(title) {\n\treturn utils.getIndexer(this).lookup(title);\n};\n\nexports.getTiddlerRelinkBackreferences = function(title) {\n\treturn utils.getIndexer(this).reverseLookup(title);\n};\n\nexports.getRelinkableTitles = function() {\n\tvar toUpdate = \"$:/config/flibbles/relink/to-update\";\n\tvar wiki = this;\n\treturn this.getCacheForTiddler(toUpdate, \"relink-toUpdate\", function() {\n\t\tvar tiddler = wiki.getTiddler(toUpdate);\n\t\tif (tiddler) {\n\t\t\treturn wiki.compileFilter(tiddler.fields.text);\n\t\t} else {\n\t\t\treturn wiki.allTitles;\n\t\t}\n\t})();\n};\n\nexports.getRelinkOrphans = function() {\n\treturn utils.getIndexer(this).orphans();\n};\n","module-type":"wikimethod","title":"$:/plugins/flibbles/relink/js/wikimethods.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js":{"text":"/*\\\nmodule-type: allfilteroperator\n\nFilter function for [all[relinkable]].\nReturns all tiddlers subject to relinking.\n\n\\*/\n\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.relinkable = function(source,prefix,options) {\n\treturn options.wiki.getRelinkableTitles();\n};\n\n})();\n","module-type":"allfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/orphans.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nFilter function for [relink:orphans[]].\nReturns all tiddlers which are not referenced in any way\n\n\\*/\n\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getRelinkOrphans();\n};\n\n})();\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/orphans.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/references.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns all non-shadow tiddlers that have any\nsort of updatable reference to it.\n\n`relink:backreferences[]]`\n`relink:references[]]`\n\nReturns all tiddlers that reference `fromTiddler` somewhere inside them.\n\nInput is ignored. Maybe it shouldn't do this.\n\\*/\n\nvar LinkedList = $tw.utils.LinkedList;\n\nif (!LinkedList) {\n\t/* If the linked list isn't available, make a quick crappy version. */\n\tLinkedList = function() {this.array=[];};\n\n\tLinkedList.prototype.pushTop = function(array) {\n\t\t$tw.utils.pushTop(this.array, array);\n\t};\n\n\tLinkedList.prototype.toArray = function() {\n\t\treturn this.array;\n\t};\n};\n\nexports.backreferences = function(source,operator,options) {\n\tvar results = new LinkedList();\n\tsource(function(tiddler,title) {\n\t\tresults.pushTop(Object.keys(options.wiki.getTiddlerRelinkBackreferences(title,options)));\n\t});\n\treturn results.toArray();\n};\n\nexports.references = function(source,operator,options) {\n\tvar results = new LinkedList();\n\tsource(function(tiddler,title) {\n\t\tvar refs = options.wiki.getTiddlerRelinkReferences(title,options);\n\t\tif (refs) {\n\t\t\tresults.pushTop(Object.keys(refs));\n\t\t}\n\t});\n\treturn results.toArray();\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/references.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/relink.js":{"text":"/*\\\nmodule-type: filteroperator\n\nThis filter acts as a namespace for several small, simple filters, such as\n\n`[relink:impossible[]]`\n\n\\*/\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nvar relinkFilterOperators;\n\nfunction getRelinkFilterOperators() {\n\tif(!relinkFilterOperators) {\n\t\trelinkFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"relinkfilteroperator\",\n\t\t relinkFilterOperators);\n\t}\n\treturn relinkFilterOperators;\n}\n\nexports.relink = function(source,operator,options) {\n\tvar suffixPair = parseSuffix(operator.suffix);\n\tvar relinkFilterOperator = getRelinkFilterOperators()[suffixPair[0]];\n\tif (relinkFilterOperator) {\n\t\tvar newOperator = $tw.utils.extend({}, operator);\n\t\tnewOperator.suffix = suffixPair[1];\n\t\treturn relinkFilterOperator(source, newOperator, options);\n\t} else {\n\t\treturn [language.getString(\"text/plain\", \"Error/RelinkFilterOperator\", options)];\n\t}\n};\n\nfunction parseSuffix(suffix) {\n\tvar index = suffix? suffix.indexOf(\":\"): -1;\n\tif (index >= 0) {\n\t\treturn [suffix.substr(0, index), suffix.substr(index+1)];\n\t} else {\n\t\treturn [suffix];\n\t}\n}\n","module-type":"filteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/relink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/report.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns a string for each occurrence of that title\nwithin each input title.\n\n[[title]] +[relink:report[fromTiddler]]`\n\nReturns string representation of fromTiddler occurrences in title.\n\\*/\n\nexports.report = function(source,operator,options) {\n\tvar fromTitle = operator.operand,\n\t\tresults = [];\n\tif (fromTitle) {\n\t\tvar blurbs = options.wiki.getTiddlerRelinkBackreferences(fromTitle);\n\t\tsource(function(tiddler, title) {\n\t\t\tif (blurbs[title]) {\n\t\t\t\tresults = results.concat(blurbs[title]);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/report.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/signatures.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nThis filter returns all input tiddlers which are a source of\nrelink configuration.\n\n`[all[tiddlers+system]relink:source[macros]]`\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nexports.signatures = function(source,operator,options) {\n\tvar plugin = operator.operand || null;\n\tvar set = getSet(options);\n\tif (plugin === \"$:/core\") {\n\t\t// Core doesn't actually have any settings. We mean Relink\n\t\tplugin = \"$:/plugins/flibbles/relink\";\n\t}\n\tvar signatures = [];\n\tfor (var signature in set) {\n\t\tvar source = set[signature].source;\n\t\tif (options.wiki.getShadowSource(source) === plugin) {\n\t\t\tsignatures.push(signature);\n\t\t}\n\t}\n\treturn signatures;\n};\n\nexports.type = function(source,operator,options) {\n\tvar results = [];\n\tvar set = getSet(options);\n\tsource(function(tiddler, signature) {\n\t\tif (set[signature]) {\n\t\t\tresults.push(set[signature].name);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.types = function(source,operator,options) {\n\tvar def = utils.getDefaultType(options.wiki);\n\tvar types = Object.keys(utils.getTypes());\n\ttypes.sort();\n\t// move default to front\n\ttypes.sort(function(x,y) { return x === def ? -1 : y === def ? 1 : 0; });\n\treturn types;\n};\n\nexports.source = function(source,operator,options) {\n\tvar results = [];\n\tvar category = operator.suffix;\n\tvar set = getSet(options);\n\tsource(function(tiddler, signature) {\n\t\tif (set[signature]) {\n\t\t\tresults.push(set[signature].source);\n\t\t}\n\t});\n\treturn results;\n};\n\nfunction getSet(options) {\n\treturn options.wiki.getGlobalCache(\"relink-signatures\", function() {\n\t\tvar config = utils.getWikiContext(options.wiki);\n\t\tvar set = Object.create(null);\n\t\tvar categories = {\n\t\t\tattributes: config.getAttributes(),\n\t\t\tfields: config.getFields(),\n\t\t\tmacros: config.getMacros(),\n\t\t\toperators: config.getOperators()};\n\t\t$tw.utils.each(categories, function(list, category) {\n\t\t\t$tw.utils.each(list, function(item, key) {\n\t\t\t\tset[category + \"/\" + key] = item;\n\t\t\t});\n\t\t});\n\t\treturn set;\n\t});\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/signatures.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js":{"text":"/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: relinkfilteroperator\n\nFilter operator that splits each result on the last occurance of the specified separator and returns the last bit.\n\nWhat does this have to do with relink? Nothing. I need this so I can render\nthe configuration menu. I //could// use [splitregexp[]], but then I'd be\nlimited to Tiddlywiki v5.1.20 or later.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitafter = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar index = title.lastIndexOf(operator.operand);\n\t\tif(index < 0) {\n\t\t\t$tw.utils.pushTop(results,title);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,title.substr(index+1));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n\n","title":"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js","type":"application/javascript","module-type":"relinkfilteroperator"},"$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js":{"text":"/*\\\nmodule-type: relinkfilteroperator\n\nwouldchange: Generator.\n\nGiven each input title, it returns all the tiddlers that would be changed if the currentTiddler were to be renamed to the operand.\n\nimpossible: filters all source titles for ones that encounter errors on failure.\n\nTHESE ARE INTERNAL FILTER OPERATOR AND ARE NOT INTENDED TO BE USED BY USERS.\n\n\\*/\n\nvar language = require(\"$:/plugins/flibbles/relink/js/language.js\");\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\n\nexports.wouldchange = function(source,operator,options) {\n\tvar from = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tto = operator.operand,\n\t\tindexer = utils.getIndexer(options.wiki),\n\t\trecords = indexer.relinkLookup(from, to, options);\n\treturn Object.keys(records);\n};\n\nexports.impossible = function(source,operator,options) {\n\tvar from = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tto = operator.operand,\n\t\tresults = [],\n\t\tindexer = utils.getIndexer(options.wiki),\n\t\trecords = indexer.relinkLookup(from, to, options);\n\tsource(function(tiddler, title) {\n\t\tvar fields = records[title];\n\t\tif (fields) {\n\t\t\tfor (var field in fields) {\n\t\t\t\tif (fields[field].impossible) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n","module-type":"relinkfilteroperator","title":"$:/plugins/flibbles/relink/js/filteroperators/wouldchange.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/settings/attributes.js":{"text":"/*\\\n\nFactory method for creating the attributes whitelist cache.\n\n\\*/\n\nvar utils = require('../utils');\n\nexports.name = \"attributes\";\n\nexports.generate = function(attributes, tiddler, key) {\n\tvar data = utils.getType(tiddler.fields.text.trim());\n\tif (data) {\n\t\tdata.source = tiddler.fields.title;\n\t\t// Secret feature. You can access a config tiddler's\n\t\t// fields from inside the fieldtype handler. Cool\n\t\t// tricks can be done with this.\n\t\tdata.fields = tiddler.fields;\n\t\tvar elem = root(key);\n\t\tvar attr = key.substr(elem.length+1);\n\t\tattributes[elem] = attributes[elem] || Object.create(null);\n\t\tattributes[elem][attr] = data;\n\t}\n};\n\n/* Returns first bit of a path. path/to/tiddler -> path\n */\nfunction root(string) {\n\tvar index = string.indexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n};\n\n","module-type":"relinksetting","title":"$:/plugins/flibbles/relink/js/settings/attributes.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/settings/fields.js":{"text":"/*\\\n\nFactory method for creating the fields whitelist cache.\n\n\\*/\n\nvar utils = require('../utils');\n\nexports.name = \"fields\";\n\nexports.generate = function(fields, tiddler, name) {\n\tvar data = utils.getType(tiddler.fields.text.trim());\n\tif (data) {\n\t\tdata.source = tiddler.fields.title;\n\t\t// Secret feature. You can access a config tiddler's\n\t\t// fields from inside the fieldtype handler. Cool\n\t\t// tricks can be done with this.\n\t\tdata.fields = tiddler.fields;\n\t\tfields[name] = data;\n\t}\n};\n","module-type":"relinksetting","title":"$:/plugins/flibbles/relink/js/settings/fields.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/settings/fieldwidgets.js":{"text":"/*\\\n\nFactory method for creating the fieldattributes regexp cache.\n\n\\*/\n\nexports.name = \"fieldattributes\";\n\nexports.generate = function(fieldattributes, tiddler, key) {\n\tfieldattributes[key] = new RegExp(tiddler.fields.text.trim());\n};\n","module-type":"relinksetting","title":"$:/plugins/flibbles/relink/js/settings/fieldwidgets.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/settings/macros.js":{"text":"/*\\\n\nFactory method for creating the macros whitelist cache.\n\n\\*/\n\nvar utils = require('../utils');\n\nexports.name = \"macros\";\n\nexports.generate = function(macros, tiddler, key) {\n\tvar data = utils.getType(tiddler.fields.text.trim());\n\tif (data) {\n\t\tdata.source = tiddler.fields.title;\n\t\t// Secret feature. You can access a config tiddler's\n\t\t// fields from inside the fieldtype handler. Cool\n\t\t// tricks can be done with this.\n\t\tdata.fields = tiddler.fields;\n\t\t// We take the last index, not the first, because macro\n\t\t// parameters can't have slashes, but macroNames can.\n\t\tvar name = dir(key);\n\t\tvar arg = key.substr(name.length+1);\n\t\tmacros[name] = macros[name] || Object.create(null);\n\t\tmacros[name][arg] = data;\n\t}\n};\n\n/* Returns all but the last bit of a path. path/to/tiddler -> path/to\n */\nfunction dir(string) {\n\tvar index = string.lastIndexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n}\n\n","module-type":"relinksetting","title":"$:/plugins/flibbles/relink/js/settings/macros.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/settings/operators.js":{"text":"/*\\\n\nFactory method for creating the operators whitelist cache.\n\n\\*/\n\nvar utils = require('../utils');\n\nexports.name = \"operators\";\n\nexports.generate = function(operators, tiddler, key) {\n\tvar data = utils.getType(tiddler.fields.text.trim());\n\tif (data) {\n\t\tdata.source = tiddler.fields.title;\n\t\t// Secret feature. You can access a config tiddler's\n\t\t// fields from inside the fieldtype handler. Cool\n\t\t// tricks can be done with this.\n\t\tdata.fields = tiddler.fields;\n\t\tvar pair = key.split('/');\n\t\tvar name = pair[0];\n\t\tdata.key = key;\n\t\toperators[name] = operators[name] || Object.create(null);\n\t\toperators[name][pair[1] || 1] = data;\n\t}\n};\n","module-type":"relinksetting","title":"$:/plugins/flibbles/relink/js/settings/operators.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/filter.js":{"text":"/*\\\n\nThis specifies logic for updating filters to reflect title changes.\n\n\\*/\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar filterRelinkers = utils.getModulesByTypeAsHashmap('relinkfilter', 'name');\n\nexports.name = \"filter\";\n\nexports.report = function(filter, callback, options) {\n\tif (filter) {\n\t\ttry {\n\t\t\tvar parseTree = options.wiki.parseFilter(filter);\n\t\t} catch (e) {\n\t\t\t// It must have been malformed. Return without doing anything.\n\t\t\treturn;\n\t\t}\n\t\tfor (var module in filterRelinkers) {\n\t\t\tfilterRelinkers[module].report(parseTree, callback, options);\n\t\t}\n\t}\n};\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(filter, fromTitle, toTitle, options) {\n\tvar changed = false;\n\tvar results = {};\n\tvar parseTree;\n\tif (filter) {\n\t\ttry {\n\t\t\tparseTree = options.wiki.parseFilter(filter);\n\t\t} catch (e) {\n\t\t\t// It must have been malformed. Return without doing anything.\n\t\t\treturn;\n\t\t}\n\t\tfor (var module in filterRelinkers) {\n\t\t\tvar entry = filterRelinkers[module].relink(parseTree, fromTitle, toTitle, options);\n\t\t\tif (entry) {\n\t\t\t\tif (entry.changed) {\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (entry.impossible) {\n\t\t\t\t\tresults.impossible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (changed) {\n\t\tbuilder = assembleFilterString(parseTree, filter, options);\n\t\tresults.output = builder.results();\n\t\tresults.impossible = results.impossible || builder.impossible;\n\t\treturn results;\n\t}\n\tif (results.impossible) {\n\t\treturn results;\n\t}\n\treturn undefined\n};\n\nfunction assembleFilterString(parseTree, oldFilter, options) {\n\tvar relinker = new Rebuilder(oldFilter),\n\t\twordBarrierRequired = false,\n\t\tp = 0;\n\tfor (var i = 0; i < parseTree.length; i++) {\n\t\tvar start = $tw.utils.skipWhiteSpace(oldFilter, p);\n\t\tif (start !== p) {\n\t\t\t// There's some breathing room between this run and the last.\n\t\t\t// We'll never need to insert space.\n\t\t\twordBarrierRequired = false;\n\t\t\tp = start;\n\t\t}\n\t\tvar run = parseTree[i];\n\t\tif (run.prefix) {\n\t\t\tif (wordBarrierRequired) {\n\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\twordBarrierRequired = false;\n\t\t\t}\n\t\t\tp += run.prefix.length;\n\t\t}\n\t\tif (oldFilter[p] !== '['\n\t\t|| (oldFilter[p+1] === '[' && run.operators.length === 1)) {\n\t\t\t// It's a string title\n\t\t\tvar text = run.operators[0].operands[0].text,\n\t\t\t\tend,\n\t\t\t\told;\n\t\t\tswitch (oldFilter[p]) {\n\t\t\tcase \"'\":\n\t\t\tcase '\"':\n\t\t\t\t// p + 1 to skip the first quote\n\t\t\t\t// indexOf() + 1 to skip the last\n\t\t\t\tend = oldFilter.indexOf(oldFilter[p], p+1) + 1;\n\t\t\t\told = oldFilter.substring(p+1, end-1);\n\t\t\t\tbreak;\n\t\t\tcase '[':\n\t\t\t\tend = oldFilter.indexOf(']', p);\n\t\t\t\told = oldFilter.substring(p+2, end);\n\t\t\t\t// +2 to get past the ']]'\n\t\t\t\tend += 2;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tend = skipWord(oldFilter, p);\n\t\t\t\told = oldFilter.substring(p, end);\n\t\t\t}\n\t\t\tif (old !== text) {\n\t\t\t\tvar wrapped = wrapTitle(text, oldFilter[p] !== \"[\" ? oldFilter[p] : '', options);\n\t\t\t\tif (wrapped !== undefined) {\n\t\t\t\t\t// This is a no-quote title. If breathing room is required,\n\t\t\t\t\t// add it. Also, we may need breathing room after it.\n\t\t\t\t\tif (wordBarrierRequired && wrapped[0] !== \"[\") {\n\t\t\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\t\t}\n\t\t\t\t\trelinker.add(wrapped, p, end);\n\t\t\t\t\twordBarrierRequired = wrapped === text;\n\t\t\t\t} else if (options.placeholder) {\n\t\t\t\t\tvar ph = options.placeholder.getPlaceholderFor(text);\n\t\t\t\t\trelinker.add('[<' + ph + '>]', p, end);\n\t\t\t\t} else {\n\t\t\t\t\trelinker.impossible = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (wordBarrierRequired && oldFilter[p] !== \"[\") {\n\t\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\t}\n\t\t\t\twordBarrierRequired = oldFilter.indexOf(text) === p;\n\t\t\t}\n\t\t\tp = end;\n\t\t} else {\n\t\t\twordBarrierRequired = false;\n\t\t\tp++;\n\t\t\tfor (var j = 0; j < run.operators.length; j++) {\n\t\t\t\tvar operator = run.operators[j];\n\t\t\t\tvar start = p;\n\t\t\t\tfor (var index = 0; index < operator.operands.length; index++) {\n\t\t\t\t\tvar operand = operator.operands[index],\n\t\t\t\t\t\tskip = false;\n\t\t\t\t\t\tend,\n\t\t\t\t\t\twrapped;\n\t\t\t\t\tif (operand.indirect) {\n\t\t\t\t\t\tp = oldFilter.indexOf('{', p);\n\t\t\t\t\t\tend = oldFilter.indexOf('}', p+1);\n\t\t\t\t\t\twrapped = '{' + operand.text + '}';\n\t\t\t\t\t} else if (operand.variable) {\n\t\t\t\t\t\tp = oldFilter.indexOf('<', p);\n\t\t\t\t\t\tend = oldFilter.indexOf('>', p+1);\n\t\t\t\t\t\twrapped = '<' + operand.text + '>';\n\t\t\t\t\t} else if (operator.regexp) {\n\t\t\t\t\t\tp = oldFilter.indexOf('/', p);\n\t\t\t\t\t\tend = oldFilter.indexOf('/', p+1);\n\t\t\t\t\t\tskip = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tp = oldFilter.indexOf('[', p);\n\t\t\t\t\t\tend = oldFilter.indexOf(']', p+1);\n\t\t\t\t\t\tif (!canBePrettyOperand(operand.text) || (options.inBraces && operand.text.indexOf('}}}') >= 0)) {\n\t\t\t\t\t\t\tif (options.placeholder) {\n\t\t\t\t\t\t\t\tvar ph = options.placeholder.getPlaceholderFor(operand.text, operand.handler);\n\t\t\t\t\t\t\t\twrapped = '<' + ph + '>';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tskip = true;\n\t\t\t\t\t\t\t\trelinker.impossible = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twrapped = '[' + operand.text + ']';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tend++; // skip the closing brace\n\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t// If this is the first operand, let's first recreate the operator signature in case it was changed at all.\n\t\t\t\t\t\trelinker.add(operatorSignature(operator, oldFilter, start), start, p);\n\t\t\t\t\t}\n\t\t\t\t\tif (!skip) {\n\t\t\t\t\t\trelinker.add(wrapped, p, end);\n\t\t\t\t\t}\n\t\t\t\t\tp = end;\n\t\t\t\t}\n\t\t\t}\n\t\t\tp++; // Skip the closing brace;\n\t\t}\n\t}\n\treturn relinker;\n};\n\nfunction operatorSignature(operator, oldText, start) {\n\t// If it's a title operand, try to determine if it was a shorthand.\n\tvar prefix = operator.prefix || '';\n\tvar signature = prefix + ((operator.operator === 'title' && oldText[start + prefix.length] !== 't')? '': operator.operator);\n\tif (operator.suffix) {\n\t\tsignature += ':' + operator.suffix;\n\t}\n\treturn signature;\n}\n\nfunction skipWord(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c !== \"\") && (c !== \" \") && (c !== \"\\f\") && (c !== \"\\n\")\n\t\t&& (c !== \"\\r\") && (c !== \"\\t\")\n\t\t&& (c !== \"\\v\")&& (c !== \"\\u00a0\") // Ignores obscure unicode spaces\n\t\t&& (c !== \"[\") && (c !== \"]\")) { // Ignore brackets\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/* Same as this.relink, except this has the added constraint that the return\n * value must be able to be wrapped in curly braces. (i.e. '{{{...}}}')\n */\nexports.relinkInBraces = function(filter, fromTitle, toTitle, options) {\n\tvar braceOptions = $tw.utils.extend({inBraces: true}, options);\n\tvar entry = this.relink(filter, fromTitle, toTitle, braceOptions);\n\tif (entry && entry.output && !canBeInBraces(entry.output)) {\n\t\t// It was possible, but it won't fit in braces, so we must give up\n\t\tdelete entry.output;\n\t\tentry.impossible = true;\n\t}\n\treturn entry;\n};\n\nfunction wrapTitle(value, preference, options) {\n\tvar choices = {\n\t\t\"\": function(v) {return /^[^\\s\\[\\]\\}\\+\\-\\~\\=\\:][^\\s\\[\\]]*[^\\s\\[\\]\\}]$/.test(v); },\n\t\t\"[\": canBePrettyOperand,\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; }\n\t};\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"[\": function(v) {return \"[[\"+v+\"]]\"; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; }\n\t};\n\tif (options.inBraces && value.indexOf('}}}') >= 0) {\n\t\t// In this particular case, it can't be wrapped in this filter,\n\t\t// even if it would have worked within the context of the filter itself\n\t\treturn undefined;\n\t}\n\tif (!choices[preference]) {\n\t\tpreference = '';\n\t}\n\tif (choices[preference](value)) {\n\t\treturn wrappers[preference](value);\n\t}\n\tfor (var quote in choices) {\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrappers[quote](value);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n}\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\nfunction canBeInBraces(value) {\n\treturn value.indexOf(\"}}}\") < 0 && value.substr(value.length-2) !== '}}';\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/filter.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/list.js":{"text":"/*\\\nThis manages replacing titles that occur within stringLists, like,\n\nTiddlerA [[Tiddler with spaces]] [[Another Title]]\n\\*/\n\nexports.name = \"list\";\n\nexports.report = function(value, callback, options) {\n\tvar list = $tw.utils.parseStringArray(value);\n\tfor (var i = 0; i < list.length; i++) {\n\t\tcallback(list[i]);\n\t}\n};\n\n/**Returns undefined if no change was made.\n * Parameter: value can literally be a list. This can happen for builtin\n * types 'list' and 'tag'. In those cases, we also return list.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar isModified = false,\n\t\tactualList = false,\n\t\tlist;\n\tif (typeof value !== \"string\") {\n\t\t// Not a string. Must be a list.\n\t\t// clone it, since we may make changes to this possibly\n\t\t// frozen list.\n\t\tlist = (value || []).slice(0);\n\t\tactualList = true;\n\t} else {\n\t\tlist = $tw.utils.parseStringArray(value || \"\");\n\t}\n\t$tw.utils.each(list,function (title,index) {\n\t\tif(title === fromTitle) {\n\t\t\tlist[index] = toTitle;\n\t\t\tisModified = true;\n\t\t}\n\t});\n\tif (isModified) {\n\t\tvar entry = {name: \"list\"};\n\t\t// It doesn't parse correctly alone, it won't\n\t\t// parse correctly in any list.\n\t\tif (!canBeListItem(toTitle)) {\n\t\t\tentry.impossible = true;\n\t\t} else if (actualList) {\n\t\t\tentry.output = list;\n\t\t} else {\n\t\t\tentry.output = $tw.utils.stringifyList(list);\n\t\t}\n\t\treturn entry;\n\t}\n\treturn undefined;\n};\n\nfunction canBeListItem(value) {\n\tvar regexp = /\\]\\][^\\S\\xA0]/m;\n\treturn !regexp.test(value);\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/list.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/reference.js":{"text":"/*\\\nThis manages replacing titles that occur inside text references,\n\ntiddlerTitle\ntiddlerTitle!!field\n!!field\ntiddlerTitle##propertyIndex\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar referenceOperators = utils.getModulesByTypeAsHashmap('relinkreference', 'name');\n\nexports.name = \"reference\";\n\nexports.report = function(value, callback, options) {\n\tif (value) {\n\t\tvar reference = $tw.utils.parseTextReference(value);\n\t\tfor (var operator in referenceOperators) {\n\t\t\treferenceOperators[operator].report(reference, callback, options);\n\t\t}\n\t}\n};\n\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar entry;\n\tif (value) {\n\t\tvar impossible = false;\n\t\tvar modified = false;\n\t\tvar reference = $tw.utils.parseTextReference(value);\n\t\tfor (var operator in referenceOperators) {\n\t\t\tvar result = referenceOperators[operator].relink(reference, fromTitle, toTitle, options);\n\t\t\tif (result) {\n\t\t\t\tif (result.impossible) {\n\t\t\t\t\timpossible = true;\n\t\t\t\t}\n\t\t\t\tif (result.output) {\n\t\t\t\t\tmodified = true;\n\t\t\t\t\treference = result.output;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (modified) {\n\t\t\tif (exports.canBePretty(reference.title)) {\n\t\t\t\tentry = {output: exports.toString(reference)};\n\t\t\t} else {\n\t\t\t\timpossible = true;\n\t\t\t}\n\t\t}\n\t\tif (impossible) {\n\t\t\tentry = entry || {};\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\n/* Same as this.relink, except this has the added constraint that the return\n * value must be able to be wrapped in curly braces.\n */\nexports.relinkInBraces = function(value, fromTitle, toTitle, options) {\n\tvar log = this.relink(value, fromTitle, toTitle, options);\n\tif (log && log.output && log.output.indexOf(\"}\") >= 0) {\n\t\tdelete log.output;\n\t\tlog.impossible = true;\n\t}\n\treturn log;\n};\n\nexports.toString = function(textReference) {\n\tvar title = textReference.title || '';\n\tif (textReference.field) {\n\t\treturn title + \"!!\" + textReference.field;\n\t} else if (textReference.index) {\n\t\treturn title + \"##\" + textReference.index;\n\t}\n\treturn title;\n};\n\nexports.canBePretty = function(title) {\n\treturn !title || (title.indexOf(\"!!\") < 0 && title.indexOf(\"##\") < 0);\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/reference.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/title.js":{"text":"/*\\\nThis specifies logic for replacing a single-tiddler field. This is the\nsimplest kind of field type. One title swaps out for the other.\n\\*/\n\n// NOTE TO MODDERS: If you're making your own field types, the name must be\n// alpha characters only.\nexports.name = 'title';\n\nexports.report = function(value, callback, options) {\n\tcallback(value);\n};\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tif (value === fromTitle) {\n\t\treturn {output: toTitle};\n\t}\n\treturn undefined;\n};\n\n// This is legacy support for when 'title' was known as 'field'\nexports.aliases = ['field', 'yes'];\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/title.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js":{"text":"/*\\\nThis specifies logic for updating filters to reflect title changes.\n\\*/\n\nexports.name = \"wikitext\";\n\nvar type = 'text/vnd.tiddlywiki';\n\nvar WikiParser = require(\"$:/core/modules/parsers/wikiparser/wikiparser.js\")[type];\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\");\nvar utils = require('$:/plugins/flibbles/relink/js/utils');\nvar WikitextContext = utils.getContext('wikitext');\n\nfunction collectRules() {\n\tvar rules = Object.create(null);\n\t$tw.modules.forEachModuleOfType(\"relinkwikitextrule\", function(title, exports) {\n\t\tvar names = exports.name;\n\t\tif (typeof names === \"string\") {\n\t\t\tnames = [names];\n\t\t}\n\t\tif (names !== undefined) {\n\t\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\t\trules[names[i]] = exports;\n\t\t\t}\n\t\t}\n\t});\n\treturn rules;\n}\n\nfunction WikiWalker(type, text, options) {\n\tthis.options = options;\n\tif (!this.relinkMethodsInjected) {\n\t\tvar rules = collectRules();\n\t\t$tw.utils.each([this.pragmaRuleClasses, this.blockRuleClasses, this.inlineRuleClasses], function(classList) {\n\t\t\tfor (var name in classList) {\n\t\t\t\tif (rules[name]) {\n\t\t\t\t\tdelete rules[name].name;\n\t\t\t\t\t$tw.utils.extend(classList[name].prototype, rules[name]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tWikiWalker.prototype.relinkMethodsInjected = true;\n\t}\n\tthis.context = new WikitextContext(options.settings);\n\tWikiParser.call(this, type, text, options);\n};\n\nWikiWalker.prototype = Object.create(WikiParser.prototype);\n\nWikiWalker.prototype.parsePragmas = function() {\n\tvar entries = this.tree;\n\twhile (true) {\n\t\tthis.skipWhitespace();\n\t\tif (this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules, this.pos);\n\t\tif (!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\tentries.push.apply(entries, this.handleRule(nextMatch));\n\t}\n\treturn entries;\n};\n\nWikiWalker.prototype.parseInlineRunUnterminated = function(options) {\n\tvar entries = [];\n\tvar nextMatch = this.findNextMatch(this.inlineRules, this.pos);\n\twhile (this.pos < this.sourceLength && nextMatch) {\n\t\tif (nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\tentries.push.apply(entries, this.handleRule(nextMatch));\n\t\tnextMatch = this.findNextMatch(this.inlineRules, this.pos);\n\t}\n\tthis.pos = this.sourceLength;\n\treturn entries;\n};\n\nWikiWalker.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\tvar entries = [];\n\toptions = options || {};\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\tif (terminatorMatch) {\n\t\t\tif (!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif (options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn entries;\n\t\t\t}\n\t\t}\n\t\tif (inlineRuleMatch) {\n\t\t\tif (inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\tentries.push.apply(entries, this.handleRule(inlineRuleMatch));\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules, this.pos);\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\tthis.pos = this.sourceLength;\n\treturn entries;\n\n};\n\nWikiWalker.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif (this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\tvar nextMatch = this.findNextMatch(this.blockRules, this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn this.handleRule(nextMatch);\n\t}\n\treturn this.parseInlineRun(terminatorRegExp);\n};\n\nWikiWalker.prototype.amendRules = function(type, names) {\n\tvar only;\n\tWikiParser.prototype.amendRules.call(this, type, names);\n\tif (type === \"only\") {\n\t\tonly = true;\n\t} else if (type === \"except\") {\n\t\tonly = false;\n\t} else {\n\t\treturn;\n\t}\n\tif (only !== (names.indexOf(\"macrodef\") >= 0) && this.options.macrodefCanBeDisabled) {\n\t\tthis.options.placeholder = undefined\n\t}\n\tif (only !== (names.indexOf(\"html\") >= 0)) {\n\t\tthis.context.allowWidgets = disabled;\n\t}\n\tif (only !== (names.indexOf(\"prettylink\") >= 0)) {\n\t\tthis.context.allowPrettylinks = disabled;\n\t}\n};\n\nfunction disabled() { return false; };\n\n/// Reporter\n\nfunction WikiReporter(type, text, callback, options) {\n\tthis.callback = callback;\n\tWikiWalker.call(this, type, text, options);\n};\n\nWikiReporter.prototype = Object.create(WikiWalker.prototype);\n\nWikiReporter.prototype.handleRule = function(ruleInfo) {\n\tif (ruleInfo.rule.report) {\n\t\truleInfo.rule.report(this.source, this.callback, this.options);\n\t} else {\n\t\tif (ruleInfo.rule.matchRegExp !== undefined) {\n\t\t\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\n\t\t} else {\n\t\t\t// We can't easily determine the end of this\n\t\t\t// rule match. We'll \"parse\" it so that\n\t\t\t// parser.pos gets updated, but we throw away\n\t\t\t// the results.\n\t\t\truleInfo.rule.parse();\n\t\t}\n\t}\n};\n\nexports.report = function(wikitext, callback, options) {\n\t// Unfortunately it's the side-effect of creating this that reports.\n\tnew WikiReporter(options.type, wikitext, callback, options);\n};\n\n/// Relinker\n\nfunction WikiRelinker(type, text, fromTitle, toTitle, options) {\n\tthis.fromTitle = fromTitle;\n\tthis.toTitle = toTitle;\n\tthis.placeholder = options.placeholder;\n\tif (this.placeholder) {\n\t\tthis.placeholder.parser = this;\n\t}\n\tWikiWalker.call(this, type, text, options);\n};\n\nWikiRelinker.prototype = Object.create(WikiWalker.prototype);\n\nWikiRelinker.prototype.handleRule = function(ruleInfo) {\n\tif (ruleInfo.rule.relink) {\n\t\tvar start = ruleInfo.matchIndex;\n\t\tvar newEntry = ruleInfo.rule.relink(this.source, this.fromTitle, this.toTitle, this.options);\n\t\tif (newEntry !== undefined) {\n\t\t\tif (newEntry.output) {\n\t\t\t\tnewEntry.start = start;\n\t\t\t\tnewEntry.end = this.pos;\n\t\t\t}\n\t\t\treturn [newEntry];\n\t\t}\n\t} else {\n\t\tif (ruleInfo.rule.matchRegExp !== undefined) {\n\t\t\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\n\t\t} else {\n\t\t\t// We can't easily determine the end of this\n\t\t\t// rule match. We'll \"parse\" it so that\n\t\t\t// parser.pos gets updated, but we throw away\n\t\t\t// the results.\n\t\t\truleInfo.rule.parse();\n\t\t}\n\t}\n\treturn [];\n};\n\nexports.relink = function(wikitext, fromTitle, toTitle, options) {\n\tvar parser = new WikiRelinker(options.type, wikitext, fromTitle, toTitle, options),\n\t\twikiEntry = undefined;\n\t// Now that we have an array of entries, let's produce the wikiText entry\n\t// containing them all.\n\tif (parser.tree.length > 0) {\n\t\tvar builder = new Rebuilder(wikitext);\n\t\twikiEntry = {};\n\t\tfor (var i = 0; i < parser.tree.length; i++) {\n\t\t\tvar entry = parser.tree[i];\n\t\t\tif (entry.impossible) {\n\t\t\t\twikiEntry.impossible = true;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\tbuilder.add(entry.output, entry.start, entry.end);\n\t\t\t}\n\t\t}\n\t\twikiEntry.output = builder.results();\n\t}\n\treturn wikiEntry;\n};\n","module-type":"relinkfieldtype","title":"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/filter/operators.js":{"text":"/*\\\n\nHandles reporting of filter operators.\n\n\\*/\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar titleHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/title\");\nvar macrocall = require(\"$:/plugins/flibbles/relink/js/utils/macrocall.js\");\n\nexports.name = \"operators\";\n\nexports.report = function(filterParseTree, callback, options) {\n\tfor (var i = 0; i < filterParseTree.length; i++) {\n\t\tvar run = filterParseTree[i];\n\t\tfor (var j = 0; j < run.operators.length; j++) {\n\t\t\tvar operator = run.operators[j];\n\t\t\tfor (var index = 1; index <= operator.operands.length; index++) {\n\t\t\t\tvar operand = operator.operands[index-1];\n\t\t\t\tvar display = operator.operator === 'title'? '': operator.operator;\n\t\t\t\tif (operator.suffix) {\n\t\t\t\t\tdisplay += ':' + operator.suffix;\n\t\t\t\t}\n\t\t\t\t// Now add any commas if this is a later operand\n\t\t\t\tfor (var x = 1; x < index; x++) {\n\t\t\t\t\tdisplay += ',';\n\t\t\t\t}\n\t\t\t\tif (operand.indirect) {\n\t\t\t\t\trefHandler.report(operand.text, function(title, blurb) {\n\t\t\t\t\t\tcallback(title, (run.prefix || '') + '[' + (operator.prefix || '') + display + '{' + (blurb || '') + '}]');\n\t\t\t\t\t}, options);\n\t\t\t\t} else if (operand.variable) {\n\t\t\t\t\tvar macro = $tw.utils.parseMacroInvocation(\"<<\"+operand.text+\">>\", 0);\n\t\t\t\t\tmacrocall.report(options.settings, macro, function(title, blurb) {\n\t\t\t\t\t\tcallback(title, (run.prefix || '') + '[' + (operator.prefix || '') + display + '<' + blurb + '>]');\n\t\t\t\t\t}, options);\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (operand.text) {\n\t\t\t\t\tvar handler = fieldType(options.settings, operator, index, options)\n\t\t\t\t\tif (handler) {\n\t\t\t\t\t\thandler.report(operand.text, function(title, blurb) {\n\t\t\t\t\t\t\tif (blurb || !standaloneTitleRun(run)) {\n\t\t\t\t\t\t\t\tcallback(title, (run.prefix || '') + '[' + (operator.prefix || '') + display + '[' + (blurb || '') + ']]');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(title, run.prefix);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, options);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.relink = function(filterParseTree, fromTitle, toTitle, options) {\n\tvar output = {};\n\tfor (var i = 0; i < filterParseTree.length; i++) {\n\t\tvar run = filterParseTree[i];\n\t\tfor (var j = 0; j < run.operators.length; j++) {\n\t\t\tvar operator = run.operators[j];\n\t\t\tfor (var index = 1; index <= operator.operands.length; index++) {\n\t\t\t\tvar operand = operator.operands[index-1],\n\t\t\t\t\tentry = undefined;\n\t\t\t\tif (operand.indirect) {\n\t\t\t\t\tentry = refHandler.relinkInBraces(operand.text, fromTitle, toTitle, options);\n\t\t\t\t} else if (operand.variable) {\n\t\t\t\t\tentry = relinkMacro(options.settings, operand.text, fromTitle, toTitle, options);\n\t\t\t\t} else if (operand.text) {\n\t\t\t\t\tvar handler = fieldType(options.settings, operator, index, options)\n\t\t\t\t\tif (handler) {\n\t\t\t\t\t\tentry = handler.relink(operand.text, fromTitle, toTitle, options);\n\t\t\t\t\t\tif (entry && entry.output) {\n\t\t\t\t\t\t\toperand.handler = handler.name;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (entry) {\n\t\t\t\t\tif (entry.output) {\n\t\t\t\t\t\toutput.changed = true;\n\t\t\t\t\t\toperand.text = entry.output;\n\t\t\t\t\t}\n\t\t\t\t\tif (entry.impossible) {\n\t\t\t\t\t\toutput.impossible = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn output;\n};\n\n// Returns the relinker needed for a given operator, or returns undefined.\n// This method should really be broken into three modules called relinkfilteroperator\nfunction fieldType(context, operator, index, options) {\n\tvar op = operator.operator,\n\t\tsuffix = operator.suffix,\n\t\trtn = (suffix && context.getOperator(op + ':' + suffix, index))\n\t\t || context.getOperator(op, index);\n\tif (!rtn && op === 'contains' && index == 1) {\n\t\t// The 'contains' operator gets special handling\n\t\tsuffix = suffix || 'list';\n\t\tvar handler = context.getFields()[suffix];\n\t\tif (handler && (handler.name === 'list' || handler.name === 'filter')) {\n\t\t\t// Contains uses the title handler, but only if it's\n\t\t\t// searching a 'list' or 'filter' field.\n\t\t\treturn titleHandler;\n\t\t}\n\n\t}\n\tif (!rtn && index == 1) {\n\t\t// maybe it's a field operator?\n\t\trtn = (op === 'field' && context.getFields()[suffix])\n\t\t || (!suffix && !options.wiki.getFilterOperators()[op] && context.getFields()[op]);\n\t}\n\treturn rtn;\n};\n\nfunction standaloneTitleRun(run) {\n\tif (run.operators.length == 1) {\n\t\tvar op = run.operators[0];\n\t\treturn op.operator === 'title'\n\t\t\t&& !op.prefix\n\t\t\t&& !op.suffix;\n\t}\n\treturn false;\n};\n\n// Takes care of relinking a macro, as well as putting it back together.\nfunction relinkMacro(context, text, fromTitle, toTitle, options) {\n\ttext = \"<<\" + text + \">>\";\n\tvar macro = $tw.utils.parseMacroInvocation(text, 0);\n\tvar entry = macrocall.relink(context, macro, text, fromTitle, toTitle, false, options);\n\tif (entry && entry.output) {\n\t\tvar string = macrocall.reassemble(entry.output, text, options);\n\t\t// We remove the surrounding brackets.\n\t\tstring = string.substring(2, string.length-2);\n\t\t// And we make sure that no brackets remain\n\t\tif (string.indexOf(\">\") >= 0) {\n\t\t\tdelete entry.output;\n\t\t\tentry.impossible = true;\n\t\t} else {\n\t\t\tentry.output = string;\n\t\t}\n\t}\n\treturn entry;\n};\n","module-type":"relinkfilter","title":"$:/plugins/flibbles/relink/js/fieldtypes/filter/operators.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/fieldtypes/reference/title.js":{"text":"/*\\\n\nThis handles the title inside of references.\n\n\\*/\n\nexports.name = 'title';\n\nexports.report = function(reference, callback, options) {\n\tvar title = reference.title;\n\tif (title) {\n\t\tif (reference.field) {\n\t\t\tcallback(title, '!!' + reference.field);\n\t\t} else if (reference.index) {\n\t\t\tcallback(title, '##' + reference.index);\n\t\t} else {\n\t\t\tcallback(title);\n\t\t}\n\t}\n};\n\nexports.relink = function(reference, fromTitle, toTitle, options) {\n\tif ($tw.utils.trim(reference.title) === fromTitle) {\n\t\t// preserve user's whitespace\n\t\treference.title = reference.title.replace(fromTitle, toTitle);\n\t\treturn {output: reference};\n\t}\n};\n","module-type":"relinkreference","title":"$:/plugins/flibbles/relink/js/fieldtypes/reference/title.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/fields.js":{"text":"/*\\\n\nHandles all fields specified in the plugin configuration. Currently, this\nonly supports single-value fields.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = 'fields';\n\nexports.report = function(tiddler, callback, options) {\n\tvar fields = options.settings.getFields();\n\t$tw.utils.each(fields, function(handler, field) {\n\t\tvar input = tiddler.fields[field];\n\t\tif (input) {\n\t\t\tif (field === 'list' && tiddler.fields['plugin-type']) {\n\t\t\t\t// We have a built-in exception here. plugins use their list\n\t\t\t\t// field differently. There's a whole mechanism for what\n\t\t\t\t// they actually point to, but let's not bother with that now\n\t\t\t\treturn;\n\t\t\t}\n\t\t\thandler.report(input, function(title, blurb) {\n\t\t\t\tif (blurb) {\n\t\t\t\t\tcallback(title, field + ': ' + blurb);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(title, field);\n\t\t\t\t}\n\t\t\t}, options);\n\t\t}\n\t});\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = options.settings.getFields();\n\t$tw.utils.each(fields, function(handler, field) {\n\t\tvar input = tiddler.fields[field];\n\t\tif (input) {\n\t\t\tif (field === 'list' && tiddler.fields['plugin-type']) {\n\t\t\t\t// Same deal as above. Skip.\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar entry = handler.relink(input, fromTitle, toTitle, options);\n\t\t\tif (entry !== undefined) {\n\t\t\t\tchanges[field] = entry;\n\t\t\t}\n\t\t}\n\t});\n};\n","module-type":"relinkoperator","title":"$:/plugins/flibbles/relink/js/relinkoperations/fields.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text.js":{"text":"/*\\\n\nDepending on the tiddler type, this will apply textOperators which may\nrelink titles within the body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar defaultOperator = \"text/vnd.tiddlywiki\";\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nexports.name = 'text';\n\nvar textOperators = utils.getModulesByTypeAsHashmap('relinktext', 'type');\n\n// These are deprecated. Don't use them.\nvar oldTextOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\n\n// $:/DefaultTiddlers is a tiddler which has type \"text/vnd.tiddlywiki\",\n// but it lies. It doesn't contain wikitext. It contains a filter, so\n// we pretend it has a filter type.\n// If you want to be able to add more exceptions for your plugin, let me know.\nvar exceptions = {\n\t\"$:/DefaultTiddlers\": \"text/x-tiddler-filter\"\n};\n\nexports.report = function(tiddler, callback, options) {\n\tvar fields = tiddler.fields;\n\tif (fields.text) {\n\t\tvar type = exceptions[fields.title] || fields.type || defaultOperator;\n\t\tif (textOperators[type]) {\n\t\t\ttextOperators[type].report(tiddler.fields.text, callback, options);\n\t\t} else if (oldTextOperators[type]) {\n\t\t\t// For the deprecated text operators\n\t\t\toldTextOperators[type].report(tiddler, callback, options);\n\t\t}\n\t}\n};\n\nexports.relink = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = tiddler.fields;\n\tif (fields.text) {\n\t\tvar type = exceptions[fields.title] || fields.type || defaultOperator,\n\t\t\tentry;\n\t\tif (textOperators[type]) {\n\t\t\tentry = textOperators[type].relink(tiddler.fields.text, fromTitle, toTitle, options);\n\t\t} else if (oldTextOperators[type]) {\n\t\t\t// For the deprecated text operators\n\t\t\tentry = oldTextOperators[type].relink(tiddler, fromTitle, toTitle, options);\n\t\t}\n\t\tif (entry) {\n\t\t\tchanges.text = entry;\n\t\t}\n\t}\n};\n","module-type":"relinkoperator","title":"$:/plugins/flibbles/relink/js/relinkoperations/text.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain filters in their body, as oppose to\nwikitext.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\n\nexports.type = 'text/x-tiddler-filter';\n\nexports.report = filterHandler.report;\nexports.relink = filterHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/listtext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain a tiddler list as their body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar listHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('list');\n\nexports.type = 'text/x-tiddler-list';\n\nexports.report = listHandler.report;\nexports.relink = listHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/listtext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/referencetext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain a tiddler reference as their body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('reference');\n\nexports.type = 'text/x-tiddler-reference';\n\nexports.report = refHandler.report;\nexports.relink = refHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/referencetext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/titletext.js":{"text":"/*\\\n\nThis relinks tiddlers which contain a single title as their body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar titleHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('title');\n\nexports.type = 'text/x-tiddler-title';\n\nexports.report = titleHandler.report;\nexports.relink = titleHandler.relink;\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/titletext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js":{"text":"/*\\\n\nChecks for fromTitle in text. If found, sees if it's relevant,\nand tries to swap it out if it is.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Placeholder = require(\"$:/plugins/flibbles/relink/js/utils/placeholder.js\");\nvar wikitextHandler = require('$:/plugins/flibbles/relink/js/utils.js').getType('wikitext');\n\nexports.type = 'text/vnd.tiddlywiki';\n\nexports.report = wikitextHandler.report;\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar placeholder = new Placeholder();\n\tvar currentOptions = Object.create(options);\n\tcurrentOptions.placeholder = placeholder;\n\tvar entry = wikitextHandler.relink(text, fromTitle, toTitle, currentOptions);\n\tif (entry && entry.output) {\n\t\t// If there's output, we've also got to prepend any macros\n\t\t// that the placeholder defined.\n\t\tvar preamble = placeholder.getPreamble();\n\t\tentry.output = preamble + entry.output;\n\t}\n\treturn entry;\n};\n","module-type":"relinktext","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles code blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"`` [[Renamed Title]] ``\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"codeinline\", \"codeblock\"];\n\nexports.relink = function(text) {\n\tvar reEnd;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// I'm lazy. This relink method works for both codeblock and codeinline\n\tif (this.match[0].length > 2) {\n\t\t// Must be a codeblock\n\t\treEnd = /\\r?\\n```$/mg;\n\t} else {\n\t\t// Must be a codeinline\n\t\treEnd = new RegExp(this.match[1], \"mg\");\n\t}\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(text);\n\tif (match) {\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn undefined;\n};\n\n// Same thing. Just skip the pos ahead.\nexports.report = exports.relink;\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles comment blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"<!-- [[Renamed Title]] -->\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"commentinline\", \"commentblock\"];\n\nexports.relink = function(text) {\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\treturn undefined;\n};\n\nexports.report = exports.relink;\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of filtered transclusions in wiki text like,\n\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n\nThis renames both the list and the template field.\n\n\\*/\n\nexports.name = ['filteredtranscludeinline', 'filteredtranscludeblock'];\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\nvar utils = require(\"./utils.js\");\n\nexports.report = function(text, callback, options) {\n\tvar m = this.match,\n\t\tfilter = m[1],\n\t\ttemplate = $tw.utils.trim(m[3]),\n\t\tappend = template ? '||' + template + '}}}' : '}}}';\n\tfilterHandler.report(filter, function(title, blurb) {\n\t\tcallback(title, '{{{' + blurb + append);\n\t}, options);\n\tif (template) {\n\t\tcallback(template, '{{{' + $tw.utils.trim(filter).replace(/\\r?\\n/mg, ' ') + '||}}}');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar m = this.match,\n\t\tfilter = m[1],\n\t\ttooltip = m[2],\n\t\ttemplate = m[3],\n\t\tstyle = m[4],\n\t\tclasses = m[5],\n\t\tparser = this.parser,\n\t\tentry = {};\n\tparser.pos = this.matchRegExp.lastIndex;\n\tvar modified = false;\n\n\tvar filterEntry = filterHandler.relink(filter, fromTitle, toTitle, options);\n\tif (filterEntry !== undefined) {\n\t\tif (filterEntry.output) {\n\t\t\tfilter = filterEntry.output;\n\t\t\tmodified = true;\n\t\t}\n\t\tif (filterEntry.impossible) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\t// preserves user-inputted whitespace\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tif (!modified) {\n\t\tif (!entry.impossible) {\n\t\t\treturn undefined;\n\t\t}\n\t} else {\n\t\tvar output = this.makeFilteredtransclude(this.parser, filter, tooltip, template, style, classes);\n\t\tif (output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t} else {\n\t\t\t// By copying over the ending newline of the original\n\t\t\t// text if present, thisrelink method thus works for\n\t\t\t// both the inline and block rule\n\t\t\tentry.output = output + utils.getEndingNewline(m[0]);\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeFilteredtransclude = function(parser, filter, tooltip, template, style, classes) {\n\tif (canBePretty(filter) && canBePrettyTemplate(template)) {\n\t\treturn prettyList(filter, tooltip, template, style, classes);\n\t}\n\tif (classes !== undefined) {\n\t\tclasses = classes.split('.').join(' ');\n\t}\n\treturn utils.makeWidget(parser, '$list', {\n\t\tfilter: filter,\n\t\ttooltip: tooltip,\n\t\ttemplate: template,\n\t\tstyle: style || undefined,\n\t\titemClass: classes});\n};\n\nfunction prettyList(filter, tooltip, template, style, classes) {\n\tif (tooltip === undefined) {\n\t\ttooltip = '';\n\t} else {\n\t\ttooltip = \"|\" + tooltip;\n\t}\n\tif (template === undefined) {\n\t\ttemplate = '';\n\t} else {\n\t\ttemplate = \"||\" + template;\n\t}\n\tif (classes === undefined) {\n\t\tclasses = '';\n\t} else {\n\t\tclasses = \".\" + classes;\n\t}\n\tstyle = style || '';\n\treturn \"{{{\"+filter+tooltip+template+\"}}\"+style+\"}\"+classes;\n};\n\nfunction canBePretty(filter) {\n\treturn filter.indexOf('|') < 0 && filter.indexOf('}}') < 0;\n};\n\nfunction canBePrettyTemplate(template) {\n\treturn !template || (\n\t\ttemplate.indexOf('|') < 0\n\t\t&& template.indexOf('{') < 0\n\t\t&& template.indexOf('}') < 0);\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in attributes of widgets and html elements\nThis is configurable to select exactly which attributes of which elements\nshould be changed.\n\n<$link to=\"TiddlerTitle\" />\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar htmlOperators = relinkUtils.getModulesByTypeAsHashmap('relinkhtml', 'name');\n\nexports.name = \"html\";\n\nexports.report = function(text, callback, options) {\n\tvar element = this.nextTag.tag;\n\tvar nestedOptions = Object.create(options);\n\tnestedOptions.settings = this.parser.context;\n\tfor (var operator in htmlOperators) {\n\t\thtmlOperators[operator].report(this.nextTag, this.parser, function(title, blurb) {\n\t\t\tcallback(title, '<' + blurb + ' />');\n\t\t}, nestedOptions);\n\t}\n\tthis.parse();\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar widgetEntry = {};\n\twidgetEntry.attributes = Object.create(null);\n\twidgetEntry.element = this.nextTag.tag;\n\tvar elem = this.nextTag;\n\tvar changed = false;\n\tvar nestedOptions = Object.create(options);\n\tnestedOptions.settings = this.parser.context;\n\tfor (var operator in htmlOperators) {\n\t\tvar entry = htmlOperators[operator].relink(this.nextTag, this.parser, fromTitle, toTitle, nestedOptions);\n\t\tif (entry) {\n\t\t\tif (entry.output) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tif (entry.impossible) {\n\t\t\t\twidgetEntry.impossible = true;\n\t\t\t}\n\t\t}\n\t}\n\tvar tag = this.parse()[0];\n\tif (tag.children) {\n\t\tfor (var i = 0; i < tag.children.length; i++) {\n\t\t\tvar child = tag.children[i];\n\t\t\tif (child.output) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tif (child.impossible) {\n\t\t\t\twidgetEntry.impossible = true;\n\t\t\t}\n\t\t}\n\t}\n\tif (changed) {\n\t\tvar builder = new Rebuilder(text, elem.start);\n\t\tfor (var attributeName in elem.attributes) {\n\t\t\tvar attr = elem.attributes[attributeName];\n\t\t\tvar quotedValue;\n\t\t\tswitch (attr.type) {\n\t\t\tcase 'string':\n\t\t\t\tif (attr.valueless) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvar quote = relinkUtils.determineQuote(text, attr);\n\t\t\t\tquotedValue = utils.wrapAttributeValue(attr.value, quote)\n\t\t\t\tif (quotedValue === undefined) {\n\t\t\t\t\t// The value was unquotable. We need to make\n\t\t\t\t\t// a macro in order to replace it.\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\t// but we can't...\n\t\t\t\t\t\twidgetEntry.impossible = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar value = options.placeholder.getPlaceholderFor(attr.value,attr.handler)\n\t\t\t\t\t\tquotedValue = \"<<\"+value+\">>\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'indirect':\n\t\t\t\tquotedValue = \"{{\" + attr.textReference + \"}}\";\n\t\t\t\tbreak;\n\t\t\tcase 'filtered':\n\t\t\t\tquotedValue = \"{{{\" + attr.filter + \"}}}\";\n\t\t\t\tbreak;\n\t\t\tcase 'macro':\n\t\t\t\tif (attr.output) {\n\t\t\t\t\tquotedValue = attr.output;\n\t\t\t\t} else {\n\t\t\t\t\tquotedValue = undefined;\n\t\t\t\t}\n\t\t\t\t// Else If output isn't set, this wasn't ever changed\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar ptr = attr.start;\n\t\t\tptr = $tw.utils.skipWhiteSpace(text, ptr);\n\t\t\tif (attributeName !== attr.name) {\n\t\t\t\t// Ooh, the attribute name changed\n\t\t\t\tbuilder.add(attr.name, ptr, ptr + attributeName.length);\n\t\t\t}\n\t\t\tif (quotedValue) {\n\t\t\t\t// We have a new attribute value\n\t\t\t\tptr += attributeName.length;\n\t\t\t\tptr = $tw.utils.skipWhiteSpace(text, ptr);\n\t\t\t\tptr++; // For the equals\n\t\t\t\tptr = $tw.utils.skipWhiteSpace(text, ptr);\n\t\t\t\tbuilder.add(quotedValue, ptr, attr.end);\n\t\t\t}\n\t\t}\n\t\tif (tag.children) {\n\t\t\tfor (var i = 0; i < tag.children.length; i++) {\n\t\t\t\tvar child = tag.children[i];\n\t\t\t\tif (child.output) {\n\t\t\t\t\tbuilder.add(child.output, child.start, child.end);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\twidgetEntry.output = builder.results(this.parser.pos);\n\t}\n\tif (widgetEntry.output || widgetEntry.impossible) {\n\t\treturn widgetEntry;\n\t}\n\treturn undefined;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[img[tiddler.jpg]]\n\n[img width=23 height=24 [Description|tiddler.jpg]]\n\n\\*/\n\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/utils\").getType('filter');\nvar macrocall = require(\"./macrocall.js\");\nvar utils = require(\"./utils.js\");\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nexports.name = \"image\";\n\nexports.report = function(text, callback, options) {\n\tvar ptr = this.nextImage.start + 4; //[img\n\tvar inSource = false;\n\tfor (var attributeName in this.nextImage.attributes) {\n\t\tvar attr = this.nextImage.attributes[attributeName];\n\t\tif (attributeName === \"source\" || attributeName === \"tooltip\") {\n\t\t\tif (inSource) {\n\t\t\t\tptr = text.indexOf('|', ptr);\n\t\t\t} else {\n\t\t\t\tptr = text.indexOf('[', ptr);\n\t\t\t\tinSource = true;\n\t\t\t}\n\t\t\tptr += 1;\n\t\t}\n\t\tif (attributeName === \"source\") {\n\t\t\tvar tooltip = this.nextImage.attributes.tooltip;\n\t\t\tvar blurb = '[img[' + (tooltip ? tooltip.value : '') + ']]';\n\t\t\tcallback(attr.value, blurb);\n\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\tptr = text.indexOf(']]', ptr) + 2;\n\t\t} else if (attributeName !== \"tooltip\") {\n\t\t\tptr = reportAttribute(this.parser, attr, callback, options);\n\t\t}\n\t}\n\tthis.parser.pos = ptr;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar ptr = this.nextImage.start,\n\t\tbuilder = new Rebuilder(text, ptr),\n\t\tmakeWidget = false,\n\t\tskipSource = false,\n\t\timageEntry;\n\tif (this.nextImage.attributes.source.value === fromTitle && !canBePretty(toTitle, this.nextImage.attributes.tooltip)) {\n\t\tif (this.parser.context.allowWidgets() && (utils.wrapAttributeValue(toTitle) || options.placeholder)) {\n\t\t\tmakeWidget = true;\n\t\t\tbuilder.add(\"<$image\", ptr, ptr+4);\n\t\t} else {\n\t\t\t// We won't be able to make a placeholder to replace\n\t\t\t// the source attribute. We check now so we don't\n\t\t\t// prematurely convert into a widget.\n\t\t\t// Keep going in case other attributes need replacing.\n\t\t\tskipSource = true;\n\t\t}\n\t}\n\tptr += 4; //[img\n\tvar inSource = false;\n\tfor (var attributeName in this.nextImage.attributes) {\n\t\tvar attr = this.nextImage.attributes[attributeName];\n\t\tif (attributeName === \"source\" || attributeName === \"tooltip\") {\n\t\t\tif (inSource) {\n\t\t\t\tptr = text.indexOf('|', ptr);\n\t\t\t} else {\n\t\t\t\tptr = text.indexOf('[', ptr);\n\t\t\t\tinSource = true;\n\t\t\t}\n\t\t\tif (makeWidget) {\n\t\t\t\tif (\" \\t\\n\".indexOf(text[ptr-1]) >= 0) {\n\t\t\t\t\tbuilder.add('', ptr, ptr+1);\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.add(' ', ptr, ptr+1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tptr += 1;\n\t\t}\n\t\tif (attributeName === \"source\") {\n\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\tif (attr.value === fromTitle) {\n\t\t\t\tif (makeWidget) {\n\t\t\t\t\tvar quotedValue = utils.wrapAttributeValue(toTitle);\n\t\t\t\t\tif (quotedValue === undefined) {\n\t\t\t\t\t\tvar key = options.placeholder.getPlaceholderFor(toTitle);\n\t\t\t\t\t\tbuilder.add(\"source=<<\"+key+\">>\", ptr, ptr+fromTitle.length);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuilder.add(\"source=\"+quotedValue, ptr, ptr+fromTitle.length);\n\t\t\t\t\t}\n\t\t\t\t} else if (!skipSource) {\n\t\t\t\t\tbuilder.add(toTitle, ptr, ptr+fromTitle.length);\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.impossible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tptr = text.indexOf(']]', ptr);\n\t\t\tif (makeWidget) {\n\t\t\t\tbuilder.add(\"/>\", ptr, ptr+2);\n\t\t\t}\n\t\t\tptr += 2;\n\t\t} else if (attributeName === \"tooltip\") {\n\t\t\tif (makeWidget) {\n\t\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\t\tvar quotedValue = utils.wrapAttributeValue(attr.value);\n\t\t\t\tbuilder.add(\"tooltip=\"+quotedValue, ptr, ptr+attr.value.length);\n\t\t\t}\n\t\t} else {\n\t\t\tptr = relinkAttribute(this.parser, attr, builder, fromTitle, toTitle, options);\n\t\t}\n\t}\n\tthis.parser.pos = ptr;\n\tif (builder.changed() || builder.impossible) {\n\t\timageEntry = {\n\t\t\toutput: builder.results(ptr),\n\t\t\timpossible: builder.impossible };\n\t}\n\treturn imageEntry;\n};\n\nfunction reportAttribute(parser, attribute, callback, options) {\n\tvar text = parser.source;\n\tvar ptr = text.indexOf(attribute.name, attribute.start);\n\tvar end;\n\tptr += attribute.name.length;\n\tptr = text.indexOf('=', ptr);\n\tif (attribute.type === \"string\") {\n\t\tptr = text.indexOf(attribute.value, ptr)\n\t\tvar quote = relinkUtils.determineQuote(text, attribute);\n\t\t// ignore first quote. We already passed it\n\t\tend = ptr + quote.length + attribute.value.length;\n\t} else if (attribute.type === \"indirect\") {\n\t\tptr = text.indexOf('{{', ptr);\n\t\tvar end = ptr + attribute.textReference.length + 4;\n\t\trefHandler.report(attribute.textReference, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '={{' + (blurb || '') + '}}]');\n\t\t}, options);\n\t} else if (attribute.type === \"filtered\") {\n\t\tptr = text.indexOf('{{{', ptr);\n\t\tvar end = ptr + attribute.filter.length + 6;\n\t\tfilterHandler.report(attribute.filter, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '={{{' + blurb + '}}}]');\n\t\t}, options);\n\t} else if (attribute.type === \"macro\") {\n\t\tptr = text.indexOf(\"<<\", ptr);\n\t\tvar end = attribute.value.end;\n\t\tvar macro = attribute.value;\n\t\toldValue = attribute.value;\n\t\tmacrocall.reportAttribute(parser, macro, function(title, blurb) {\n\t\t\tcallback(title, '[img ' + attribute.name + '=' + blurb + ']');\n\t\t}, options);\n\t}\n\treturn end;\n};\n\nfunction relinkAttribute(parser, attribute, builder, fromTitle, toTitle, options) {\n\tvar text = builder.text;\n\tvar ptr = text.indexOf(attribute.name, attribute.start);\n\tvar end;\n\tptr += attribute.name.length;\n\tptr = text.indexOf('=', ptr);\n\tif (attribute.type === \"string\") {\n\t\tptr = text.indexOf(attribute.value, ptr)\n\t\tvar quote = relinkUtils.determineQuote(text, attribute);\n\t\t// ignore first quote. We already passed it\n\t\tend = ptr + quote.length + attribute.value.length;\n\t} else if (attribute.type === \"indirect\") {\n\t\tptr = text.indexOf('{{', ptr);\n\t\tvar end = ptr + attribute.textReference.length + 4;\n\t\tvar ref = refHandler.relinkInBraces(attribute.textReference, fromTitle, toTitle, options);\n\t\tif (ref) {\n\t\t\tif (ref.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (ref.output) {\n\t\t\t\tbuilder.add(\"{{\"+ref.output+\"}}\", ptr, end);\n\t\t\t}\n\t\t}\n\t} else if (attribute.type === \"filtered\") {\n\t\tptr = text.indexOf('{{{', ptr);\n\t\tvar end = ptr + attribute.filter.length + 6;\n\t\tvar filter = filterHandler.relinkInBraces(attribute.filter, fromTitle, toTitle, options);\n\t\tif (filter !== undefined) {\n\t\t\tif (filter.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (filter.output) {\n\t\t\t\tvar quoted = \"{{{\"+filter.output+\"}}}\";\n\t\t\t\tbuilder.add(quoted, ptr, end);\n\t\t\t}\n\t\t}\n\t} else if (attribute.type === \"macro\") {\n\t\tptr = text.indexOf(\"<<\", ptr);\n\t\tvar end = attribute.value.end;\n\t\tvar macro = attribute.value;\n\t\toldValue = attribute.value;\n\t\tvar macroEntry = macrocall.relinkAttribute(parser, macro, text, fromTitle, toTitle, options);\n\t\tif (macroEntry !== undefined) {\n\t\t\tif (macroEntry.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t\tif (macroEntry.output) {\n\t\t\t\tbuilder.add(macroEntry.output, ptr, end);\n\t\t\t}\n\t\t}\n\t}\n\treturn end;\n};\n\nfunction canBePretty(title, tooltip) {\n\treturn title.indexOf(']') < 0 && (tooltip || title.indexOf('|') < 0);\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles import pragmas\n\n\\import [tag[MyTiddler]]\n\\*/\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\nvar filterRelinker = utils.getType('filter');\nvar ImportContext = utils.getContext('import');\n\nexports.name = \"import\";\n\nexports.report = function(text, callback, options) {\n\t// This moves the pos for us\n\tvar parseTree = this.parse();\n\tvar filter = parseTree[0].attributes.filter.value || '';\n\tfilterRelinker.report(filter, function(title, blurb) {\n\t\tif (blurb) {\n\t\t\tblurb = '\\\\import ' + blurb;\n\t\t} else {\n\t\t\tblurb = '\\\\import';\n\t\t}\n\t\tcallback(title, blurb);\n\t}, options);\n\t// Before we go, we need to actually import the variables\n\t// it's calling for, and any /relink pragma\n\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\t// In this one case, I'll let the parser parse out the filter and move\n\t// the ptr.\n\tvar start = this.matchRegExp.lastIndex,\n\t\tparseTree = this.parse(),\n\t\tfilter = parseTree[0].attributes.filter.value || '',\n\t\tentry = filterRelinker.relink(filter, fromTitle, toTitle, options);\n\tif (entry !== undefined && entry.output) {\n\t\tvar newline = text.substring(start+filter.length, this.parser.pos);\n\t\tfilter = entry.output;\n\t\tentry.output = \"\\\\import \" + filter + newline;\n\t}\n\n\t// Before we go, we need to actually import the variables\n\t// it's calling for, and any /relink pragma\n\tthis.parser.context = new ImportContext(options.wiki, this.parser.context, filter);\n\n\treturn entry;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles macro calls.\n\n<<myMacro '[[MyFilter]]' 'myTitle'>>\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar macrocall = require('$:/plugins/flibbles/relink/js/utils/macrocall.js');\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\n\nexports.name = [\"macrocallinline\", \"macrocallblock\"];\n\nexports.report = function(text, callback, options) {\n\tvar macroInfo = getInfoFromRule(this);\n\tthis.parser.pos = macroInfo.end;\n\tthis.reportAttribute(this.parser, macroInfo, callback, options);\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar macroInfo = getInfoFromRule(this);\n\tvar managedMacro = this.parser.context.getMacro(macroInfo.name);\n\tthis.parser.pos = macroInfo.end;\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tvar mayBeWidget = this.parser.context.allowWidgets();\n\tvar names = getParamNames(this.parser, macroInfo.name, macroInfo.params, options);\n\tif (names === undefined) {\n\t\t// Needed the definition, and couldn't find it. So if a single\n\t\t// parameter needs to placeholder, just fail.\n\t\tmayBeWidget = false;\n\t}\n\tvar entry = macrocall.relink(this.parser.context, macroInfo, text, fromTitle, toTitle, mayBeWidget, options);\n\tif (entry && entry.output) {\n\t\tentry.output = macroToString(entry.output, text, names, options);\n\t}\n\treturn entry;\n};\n\n/** Relinks macros that occur as attributes, like <$element attr=<<...>> />\n * Processes the same, except it can't downgrade into a widget if the title\n * is complicated.\n * Kept for backward compatibility reasons\n */\nexports.relinkAttribute = function(parser, macro, text, fromTitle, toTitle, options) {\n\tvar entry = macrocall.relink(parser.context, macro, text, fromTitle, toTitle, false, options);\n\tif (entry && entry.output) {\n\t\tentry.output = macrocall.reassemble(entry.output, text, options);\n\t}\n\treturn entry;\n};\n\n/** As in, report a macrocall invocation that is an html attribute.\n * Kept for backward compatibility reasons\n */\nexports.reportAttribute = function(parser, macro, callback, options) {\n\tmacrocall.report(parser.context, macro, function(title, blurb) {\n\t\tcallback(title, \"<<\" + blurb + \">>\");\n\t}, options);\n};\n\nfunction getInfoFromRule(rule) {\n\t// Get all the details of the match\n\tvar macroInfo = rule.nextCall;\n\tif (!macroInfo) {\n\t\t// rule.match is used <v5.1.24\n\t\tvar match = rule.match,\n\t\t\toffset = $tw.utils.skipWhiteSpace(match[0], match[1].length+2);\n\t\tmacroInfo = {\n\t\t\tname: match[1],\n\t\t\tstart: rule.matchRegExp.lastIndex - match[0].length,\n\t\t\tend: rule.matchRegExp.lastIndex,\n\t\t};\n\t\tmacroInfo.params = parseParams(match[2], offset+macroInfo.start);\n\t}\n\treturn macroInfo;\n};\n\nfunction mustBeAWidget(macro) {\n\tfor (var i = 0; i < macro.params.length; i++) {\n\t\tif (macro.params[i].type === \"macro\") {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false\n};\n\n/**Given a macro object ({name:, params:, start: end:}), and the text where\n * it was parsed from, returns a new macro that maintains any syntactic\n * structuring.\n */\nfunction macroToString(macro, text, names, options) {\n\tif (mustBeAWidget(macro)) {\n\t\tvar attrs = [];\n\t\tfor (var i = 0; i < macro.params.length; i++) {\n\t\t\tvar p = macro.params[i];\n\t\t\tvar val;\n\t\t\tif (p.newValue) {\n\t\t\t\tval = p.newValue;\n\t\t\t} else {\n\t\t\t\tval = utils.wrapAttributeValue(p.value);\n\t\t\t}\n\t\t\tattrs.push(\" \"+names[i]+\"=\"+val);\n\t\t}\n\t\treturn \"<$macrocall $name=\"+utils.wrapAttributeValue(macro.name)+attrs.join('')+\"/>\";\n\t} else {\n\t\treturn macrocall.reassemble(macro, text, options);\n\t}\n};\n\nfunction getParamNames(parser, macroName, params, options) {\n\tvar used = Object.create(null);\n\tvar rtn = new Array(params.length);\n\tvar anonsExist = false;\n\tvar i;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name) {\n\t\t\trtn[i] = name;\n\t\t\tused[name] = true;\n\t\t} else {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (anonsExist) {\n\t\tvar def = parser.context.getMacroDefinition(macroName);\n\t\tif (def === undefined) {\n\t\t\t// If there are anonymous parameters, and we can't\n\t\t\t// find the definition, then we can't hope to create\n\t\t\t// a widget.\n\t\t\treturn undefined;\n\t\t}\n\t\tvar defParams = def.params || [];\n\t\tvar defPtr = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (rtn[i] === undefined) {\n\t\t\t\twhile(defPtr < defParams.length && used[defParams[defPtr].name]) {\n\t\t\t\t\tdefPtr++;\n\t\t\t\t}\n\t\t\t\tif (defPtr >= defParams.length) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\trtn[i] = defParams[defPtr].name;\n\t\t\t\tused[defParams[defPtr].name] = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn rtn;\n};\n\nfunction parseParams(paramString, pos) {\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = { };\n\t\t// We need to find the group match that isn't undefined.\n\t\tfor (var i = 2; i <= 6; i++) {\n\t\t\tif (paramMatch[i] !== undefined) {\n\t\t\t\tparamInfo.value = paramMatch[i];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\t//paramInfo.start = pos;\n\t\tparamInfo.end = reParam.lastIndex + pos;\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn params;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles pragma macro definitions. Except we only update placeholder macros\nthat we may have previously install.\n\n\\define relink-?() Tough title\n\n\\*/\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils\");\nvar VariableContext = utils.getContext('variable');\n\nexports.name = \"macrodef\";\n\nexports.report = function(text, callback, options) {\n\tvar setParseTreeNode = this.parse(),\n\t\tm = this.match,\n\t\tname = m[1];\n\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\n\t// Parse set the pos pointer, but we don't want to skip the macro body.\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar endMatch = getBodyMatch(text, this.parser.pos, m[3]);\n\tif (endMatch) {\n\t\tvar value = endMatch[2],\n\t\t\thandler = utils.getType(getActiveType(name, m[2]) || 'wikitext');\n\t\tif (handler) {\n\t\t\tvar entry = handler.report(value, function(title, blurb) {\n\t\t\t\tvar macroStr = '\\\\define ' + name + '()';\n\t\t\t\tif (blurb) {\n\t\t\t\t\tmacroStr += ' ' + blurb;\n\t\t\t\t}\n\t\t\t\tcallback(title, macroStr);\n\t\t\t}, options);\n\t\t}\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar setParseTreeNode = this.parse(),\n\t\tentry,\n\t\tm = this.match,\n\t\tname = m[1],\n\t\tparams = m[2],\n\t\tmultiline = m[3];\n\tthis.parser.context = new VariableContext(this.parser.context, setParseTreeNode[0]);\n\t// Parse set the pos pointer, but we don't want to skip the macro body.\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar endMatch = getBodyMatch(text, this.parser.pos, multiline);\n\tif (endMatch) {\n\t\tvar value = endMatch[2],\n\t\t\ttype = getActiveType(name, params),\n\t\t\thandler = utils.getType(type || 'wikitext');\n\t\tif (handler) {\n\t\t\t// If this is an active relink placeholder, then let's remember it\n\t\t\tif (type && options.placeholder) {\n\t\t\t\toptions.placeholder.registerExisting(name, value);\n\t\t\t}\n\t\t\t// Relink the contents\n\t\t\tentry = handler.relink(value, fromTitle, toTitle, options);\n\t\t\tif (entry && entry.output) {\n\t\t\t\tentry.output = m[0] + endMatch[1] + entry.output + endMatch[0];\n\t\t\t}\n\t\t}\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t}\n\treturn entry;\n};\n\n// Return another match for the body, but tooled uniquely\n// m[1] = whitespace before body\n// m[2] = body\n// m.index + m[0].length -> end of match\nfunction getBodyMatch(text, pos, isMultiline) {\n\tvar whitespace,\n\t\tvalueRegExp;\n\tif (isMultiline) {\n\t\tvalueRegExp = /\\r?\\n\\\\end[^\\S\\n\\r]*(?:\\r?\\n|$)/mg;\n\t\twhitespace = '';\n\t} else {\n\t\tvalueRegExp = /(?:\\r?\\n|$)/mg;\n\t\tvar newPos = $tw.utils.skipWhiteSpace(text, pos);\n\t\twhitespace = text.substring(pos, newPos);\n\t\tpos = newPos;\n\t}\n\tvalueRegExp.lastIndex = pos;\n\tvar match = valueRegExp.exec(text);\n\tif (match) {\n\t\tmatch[1] = whitespace;\n\t\tmatch[2] = text.substring(pos, match.index);\n\t}\n\treturn match;\n};\n\nfunction getActiveType(macroName, parameters) {\n\tvar placeholder = /^relink-(?:(\\w+)-)?\\d+$/.exec(macroName);\n\t// normal macro or special placeholder?\n\tif (placeholder && parameters === '') {\n\t\treturn placeholder[1] || 'title';\n\t}\n\treturn undefined;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[[Introduction]]\n\n[[link description|TiddlerTitle]]\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"prettylink\";\n\nexports.report = function(text, callback, options) {\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif (!$tw.utils.isLinkExternal(link)) {\n\t\tcallback(link, '[[' + text + ']]');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar caption, m = this.match;\n\tif (m[2] === fromTitle) {\n\t\t// format is [[caption|MyTiddler]]\n\t\tcaption = m[1];\n\t} else if (m[2] !== undefined || m[1] !== fromTitle) {\n\t\t// format is [[MyTiddler]], and it doesn't match\n\t\treturn undefined;\n\t}\n\tvar entry = { output: utils.makePrettylink(this.parser, toTitle, caption) };\n\tif (entry.output === undefined) {\n\t\tentry.impossible = true;\n\t}\n\treturn entry;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/quoteblock.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles the quote blocks, as in:\n\n<<<\n...\n<<<\n\n\\*/\n\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\n\nexports.name = \"quoteblock\";\n\nexports.type = {block: true};\n\nexports.report = function(text, callback, options) {\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\tthis.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\n\t// Parse the optional cite\n\treportCite(this.parser, this.match[1]);\n\t// Now parse the body of the quote\n\tthis.parser.parseBlocks(reEndString);\n\tif (this.match) {\n\t\t// Now parse the closing cite\n\t\treportCite(this.parser, this.match[1]);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\tvar builder = new Rebuilder(text, this.parser.pos);\n\tvar entry;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\tthis.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\n\t// Parse the optional cite\n\tmergeRelinks(builder, this.parser.parseInlineRun(/(\\r?\\n)/mg));\n\t// Now parse the body of the quote\n\tmergeRelinks(builder, this.parser.parseBlocks(reEndString));\n\t// Now parse the closing cite\n\tmergeRelinks(builder, this.parser.parseInlineRun(/(\\r?\\n)/mg));\n\n\tif (builder.changed() || builder.impossible) {\n\t\tentry = {};\n\t\tentry.output = builder.results(this.parser.pos);\n\t\tif (builder.impossible) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nfunction reportCite(parser, delimeter) {\n\tvar callback = parser.callback;\n\ttry {\n\t\tparser.callback = function(title, blurb) {\n\t\t\treturn callback(title, delimeter + \" \" + blurb);\n\t\t};\n\t\tparser.parseInlineRun(/(\\r?\\n)/mg);\n\t} finally {\n\t\tparser.callback = callback;\n\t}\n};\n\nfunction mergeRelinks(builder, output) {\n\tif (output.length > 0) {\n\t\tfor (var i = 0; i < output.length; i++) {\n\t\t\tvar o = output[i];\n\t\t\tif (o.output) {\n\t\t\t\tbuilder.add(o.output, o.start, o.end);\n\t\t\t}\n\t\t\tif (o.impossible) {\n\t\t\t\tbuilder.impossible = true;\n\t\t\t}\n\t\t}\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/quoteblock.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js":{"text":"/*\\\nmodule-type: wikirule\n\nThis defines the \\relink inline pragma used to locally declare\nrelink rules for macros.\n\nIt takes care of providing its own relink and report rules.\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nexports.name = \"relink\";\nexports.types = {pragma: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /^\\\\relink[^\\S\\n]+([^(\\s]+)([^\\r\\n]*)(\\r?\\n)?/mg;\n};\n\n/**This makes the widget that the macro library will later parse to determine\n * new macro relink state.\n *\n * It's a <$set> widget so it can appear BEFORE \\define pragma and not\n * prevent that pragma from being scooped up by importvariables.\n * (importvariables stops scooping as soon as it sees something besides $set) */\nexports.parse = function() {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar macroName;\n\tvar macroParams = Object.create(null);\n\tvar error = undefined;\n\tvar rtn = [];\n\tvar self = this;\n\tthis.interpretSettings(function(macro, parameter, type) {\n\t\tmacroName = macro;\n\t\tif (type && !utils.getType(type)) {\n\t\t\terror = language.getString(\"text/plain\", \"Error/UnrecognizedType\",\n\t\t\t\t{variables: {type: type}, wiki: self.parser.wiki});\n\t\t}\n\t\tmacroParams[parameter] = type;\n\t});\n\t// If no macroname. Return nothing, this rule will be ignored by parsers\n\tif (macroName) {\n\t\tvar relink = Object.create(null);\n\t\trelink[macroName] = macroParams;\n\t\trtn.push({\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: \"\"}\n\t\t\t},\n\t\t\tchildren: [],\n\t\t\tisMacroDefinition: true,\n\t\t\trelink: relink});\n\t}\n\tif (error) {\n\t\trtn.push({\n\t\t\ttype: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tc-error tc-relink-error\"\n\t\t\t\t}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: error}\n\t\t\t]});\n\t}\n\treturn rtn;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar parser = this.parser;\n\tvar currentTiddler = parser.context.widget.variables.currentTiddler.value;\n\tparser.pos = this.matchRegExp.lastIndex;\n\tthis.interpretSettings(function(macro, parameter, type) {\n\t\toptions.settings.addSetting(parser.wiki, macro, parameter, type, currentTiddler);\n\t});\n\t// Return nothing, because this rule is ignored by the parser\n\treturn undefined;\n};\n\nexports.interpretSettings = function(block) {\n\tvar paramString = this.match[2];\n\tif (paramString !== \"\") {\n\t\tvar macro = this.match[1];\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*([^\\s]+))?/mg;\n\t\tvar paramMatch = reParam.exec(paramString);\n\t\twhile (paramMatch) {\n\t\t\tvar parameter = paramMatch[1];\n\t\t\tvar type = paramMatch[2];\n\t\t\tblock(macro, parameter, type);\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n};\n","module-type":"wikirule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nParses and acknowledges any pragma rules a tiddler has.\n\n\\rules except html wikilink\n\n\\*/\n\nexports.name = \"rules\";\n\n/**This is all we have to do. The rules rule doesn't parse. It just amends\n * the rules, which is exactly what I want it to do too.\n * It also takes care of moving the pos pointer forward.\n */\nexports.relink = function() {\n\tthis.parse();\n\treturn undefined;\n};\n\n// Same deal\nexports.report = exports.relink;\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles sys links\n\n$:/sys/link\n\nbut not:\n\n~$:/sys/link\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"syslink\";\n\nexports.report = function(text, callback, options) {\n\tvar title = this.match[0];\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title[0] !== \"~\") {\n\t\tcallback(title, '~' + title);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar entry = undefined;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (this.match[0] === fromTitle && this.match[0][0] !== \"~\") {\n\t\tentry = {output: this.makeSyslink(toTitle, options)};\n\t\tif (entry.output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeSyslink = function(title, options) {\n\tvar match = title.match(this.matchRegExp);\n\tif (match && match[0] === title && title[0] !== \"~\") {\n\t\treturn title;\n\t} else {\n\t\treturn utils.makePrettylink(this.parser, title);\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/table.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles tables. Or rather handles the cells inside the tables, since tables\nthemselves aren't relinked.\n\n\\*/\n\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\n\nexports.name = \"table\";\n\nexports.types = {block: true};\n\nexports.report = function(text, callback, options) {\n\tvar rowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else if(rowType === \"c\") {\n\t\t\t// Is this a caption row?\n\t\t\t// If so, move past the opening `|` of the row\n\t\t\tthis.parser.pos++;\n\t\t\t// Parse the caption\n\t\t\tvar oldCallback = this.parser.callback;\n\t\t\tthis.parser.callback = function(title, blurb) {\n\t\t\t\tcallback(title, '|' + blurb + '|c');\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tthis.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} finally {\n\t\t\t\tthis.parser.callback = oldCallback;\n\t\t\t}\n\t\t} else {\n\t\t\t// Process the row\n\t\t\tprocessRow.call(this, rowType, callback);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar rowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tbuilder = new Rebuilder(text, this.parser.pos),\n\t\timpossible = false,\n\t\toutput,\n\t\tentry;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Is this a caption row?\n\t\t\tif(rowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Parse the caption\n\t\t\t\toutput = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Process the row\n\t\t\t\toutput = processRow.call(this);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t}\n\t\t\tif (output.length > 0) {\n\t\t\t\tfor (var i = 0; i < output.length; i++) {\n\t\t\t\t\tvar o = output[i];\n\t\t\t\t\tif (o.output) {\n\t\t\t\t\t\tbuilder.add(o.output, o.start, o.end);\n\t\t\t\t\t}\n\t\t\t\t\tif (o.impossible) {\n\t\t\t\t\t\timpossible = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\tif (builder.changed() || impossible) {\n\t\tentry = {}\n\t\tentry.output = builder.results(this.parser.pos);\n\t\tif (impossible) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nvar processRow = function(rowType, callback) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\tchildren = [];\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t}\n\t\tswitch (cellMatch[1]) {\n\t\tcase '~':\n\t\tcase '>':\n\t\tcase '<':\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvar prefix = '|';\n\t\t\tvar suffix = '|';\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tprefix += '^';\n\t\t\t\tthis.parser.pos++;\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tprefix += ',';\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\tif (spaceLeft) {\n\t\t\t\tprefix += ' ';\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tprefix += '!';\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tvar oldCallback = this.parser.callback;\n\t\t\tvar reports = [];\n\t\t\tthis.parser.callback = function(title, blurb) {\n\t\t\t\treports.push(title, blurb);\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar output = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t\tif (output.length > 0) {\n\t\t\t\t\tchildren.push(output[0]);\n\t\t\t\t}\n\t\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t\tsuffix = ' |';\n\t\t\t\t}\n\t\t\t\tfor (var i = 0; i < reports.length; i += 2) {\n\t\t\t\t\tcallback(reports[i], prefix + reports[i+1] + suffix + rowType);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.parser.callback = oldCallback;\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn children;\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/table.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of transclusions in wiki text like,\n\n{{RenamedTiddler}}\n{{RenamedTiddler||TemplateTitle}}\n\nThis renames both the tiddler and the template field.\n\n\\*/\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar utils = require(\"./utils.js\");\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar referenceOperators = relinkUtils.getModulesByTypeAsHashmap('relinkreference', 'name');\n\nexports.name = ['transcludeinline', 'transcludeblock'];\n\nexports.report = function(text, callback, options) {\n\tvar m = this.match,\n\t\trefString = $tw.utils.trim(m[1]),\n\t\tref = parseTextReference(refString);\n\t\ttemplate = $tw.utils.trim(m[2]);\n\tfor (var operator in referenceOperators) {\n\t\treferenceOperators[operator].report(ref, function(title, blurb) {\n\t\t\tblurb = blurb || \"\";\n\t\t\tif (template) {\n\t\t\t\tblurb += '||' + template;\n\t\t\t}\n\t\t\tcallback(title, \"{{\" + blurb + \"}}\");\n\t\t}, options);\n\t}\n\tif (template) {\n\t\tcallback(template, '{{' + refString + '||}}');\n\t}\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar m = this.match,\n\t\treference = parseTextReference(m[1]),\n\t\ttemplate = m[2],\n\t\tentry = undefined,\n\t\timpossible = false,\n\t\tmodified = false;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tfor (var operator in referenceOperators) {\n\t\tvar result = referenceOperators[operator].relink(reference, fromTitle, toTitle, options);\n\t\tif (result !== undefined) {\n\t\t\tif (result.impossible) {\n\t\t\t\timpossible = true;\n\t\t\t}\n\t\t\tif (result.output) {\n\t\t\t\treference = result.output;\n\t\t\t\tmodified = true\n\t\t\t}\n\t\t}\n\t}\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tif (modified) {\n\t\tvar output = this.makeTransclude(this.parser, reference, template);\n\t\tif (output) {\n\t\t\t// Adding any newline that might have existed is\n\t\t\t// what allows this relink method to work for both\n\t\t\t// the block and inline filter wikitext rule.\n\t\t\tentry = {output: output + utils.getEndingNewline(m[0])};\n\t\t} else {\n\t\t\timpossible = true;\n\t\t}\n\t}\n\tif (impossible) {\n\t\tentry = entry || {};\n\t\tentry.impossible = true;\n\t}\n\treturn entry;\n};\n\n// I have my own because the core one is deficient for my needs.\nfunction parseTextReference(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /^([\\w\\W]*?)(?:!!(\\S[\\w\\W]*)|##(\\S[\\w\\W]*))?$/g;\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match) {\n\t\t// Return the parts\n\t\tresult.title = match[1];\n\t\tresult.field = match[2];\n\t\tresult.index = match[3];\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/** This converts a reference and a template into a string representation\n * of a transclude.\n */\nexports.makeTransclude = function(parser, reference, template) {\n\tvar rtn;\n\tif (!canBePrettyTemplate(template)) {\n\t\tvar widget = utils.makeWidget(parser, '$transclude', {\n\t\t\ttiddler: $tw.utils.trim(template),\n\t\t\tfield: reference.field,\n\t\t\tindex: reference.index});\n\t\tif (reference.title && widget !== undefined) {\n\t\t\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, widget);\n\t\t} else {\n\t\t\trtn = widget;\n\t\t}\n\t} else if (!canBePrettyTitle(reference.title) || !canBePrettyField(reference.field)) {\n\t\t// This block and the next account for the 1%...\n\t\tvar transclude;\n\t\tif (canBePrettyField(reference.field)) {\n\t\t\tvar reducedRef = {field: reference.field, index: reference.index};\n\t\t\ttransclude = prettyTransclude(reducedRef, template);\n\t\t} else {\n\t\t\ttransclude = utils.makeWidget(parser, \"$transclude\", {tiddler: $tw.utils.trim(reference.title), field: reference.field});\n\t\t}\n\t\trtn = utils.makeWidget(parser, '$tiddler', {tiddler: $tw.utils.trim(reference.title)}, transclude);\n\t} else {\n\t\t// This block takes care of 99% of all cases\n\t\trtn = prettyTransclude(reference, template);\n\t}\n\treturn rtn;\n};\n\nfunction canBePrettyTitle(value) {\n\treturn refHandler.canBePretty(value) && canBePrettyTemplate(value);\n};\n\nfunction canBePrettyField(value) {\n\treturn !/[\\|\\}\\{]/.test(value);\n};\n\nfunction canBePrettyTemplate(value) {\n\treturn !value || (value.indexOf('}') < 0 && value.indexOf('{') < 0 && value.indexOf('|') < 0);\n};\n\nfunction prettyTransclude(textReference, template) {\n\tif (typeof textReference !== \"string\") {\n\t\ttextReference = refHandler.toString(textReference);\n\t}\n\tif (!textReference) {\n\t\ttextReference = '';\n\t}\n\tif (template !== undefined) {\n\t\treturn \"{{\"+textReference+\"||\"+template+\"}}\";\n\t} else {\n\t\treturn \"{{\"+textReference+\"}}\";\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/typedblock.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles the typeed blocks, as in:\n\n$$$text/vnd.tiddlywiki>text/html\n...\n$$$\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nexports.name = \"typedblock\";\n\nexports.types = {block: true};\n\nvar textOperators;\nvar oldTextOperators;\n\nfunction getTextOperator(type, options) {\n\tvar operator;\n\tif (textOperators === undefined) {\n\t\ttextOperators = utils.getModulesByTypeAsHashmap('relinktext', 'type');\n\t\toldTextOperators = utils.getModulesByTypeAsHashmap('relinktextoperator', 'type');\n\t}\n\toperator = textOperators[type];\n\tif (operator) {\n\t\treturn operator;\n\t}\n\tvar info = $tw.utils.getFileExtensionInfo(type);\n\tif (info && textOperators[info.type]) {\n\t\treturn textOperators[info.type];\n\t}\n\tvar old = oldTextOperators[type] || (info && oldTextOperators[info.type]);\n\tif (old) {\n\t\tvar vars = Object.create(options);\n\t\tvars.variables = {type: old.type, keyword: type};\n\t\tvar warnString = language.getString(\"text/html\", \"Warning/OldRelinkTextOperator\", vars)\n\t\tlanguage.warn(warnString);\n\t\toldTextOperators[type] = undefined;\n\t}\n};\n\nfunction getText() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn text;\n};\n\nexports.report = function(text, callback, options) {\n\tvar innerText = getText.call(this),\n\t\toperator = getTextOperator(this.match[1], options);\n\tif (operator) {\n\t\treturn operator.report(innerText, callback, options);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar start = this.parser.pos,\n\t\tinnerStart = this.matchRegExp.lastIndex,\n\t\tinnerText = getText.call(this),\n\t\toperator = getTextOperator(this.match[1], options);\n\tif (operator) {\n\t\tvar innerOptions = Object.create(options);\n\t\tinnerOptions.settings = this.parser.context;\n\t\tvar results = operator.relink(innerText, fromTitle, toTitle, innerOptions);\n\t\tif (results && results.output) {\n\t\t\tvar builder = new Rebuilder(text, start);\n\t\t\tbuilder.add(results.output, innerStart, innerStart + innerText.length);\n\t\t\tresults.output = builder.results(this.parser.pos);\n\t\t}\n\t\treturn results;\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/typedblock.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js":{"text":"/*\\\nmodule-type: library\n\nUtility methods for the wikitext relink rules.\n\n\\*/\n\nexports.makeWidget = function(parser, tag, attributes, body) {\n\tif (!parser.context.allowWidgets()) {\n\t\treturn undefined;\n\t}\n\tvar string = '<' + tag;\n\tfor (var attr in attributes) {\n\t\tvar value = attributes[attr];\n\t\tif (value !== undefined) {\n\t\t\tvar quoted = exports.wrapAttributeValue(value);\n\t\t\tif (!quoted) {\n\t\t\t\tif (!parser.options.placeholder) {\n\t\t\t\t\t// It's not possible to make this widget\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tvar category = getPlaceholderCategory(parser.context, tag, attr);\n\t\t\t\tquoted = '<<' + parser.placeholder.getPlaceholderFor(value, category) + '>>';\n\t\t\t}\n\t\t\tstring += ' ' + attr + '=' + quoted;\n\t\t}\n\t}\n\tif (body !== undefined) {\n\t\tstring += '>' + body + '</' + tag + '>';\n\t} else {\n\t\tstring += '/>';\n\t}\n\treturn string;\n};\n\nfunction getPlaceholderCategory(context, tag, attribute) {\n\tvar element = context.getAttribute(tag);\n\tvar rule = element && element[attribute];\n\t// titles go to relink-\\d\n\t// plaintext goes to relink-plaintext-\\d\n\t// because titles are way more common, also legacy\n\tif (rule === undefined) {\n\t\treturn 'plaintext';\n\t} else {\n\t\trule = rule.fields.text;\n\t\tif (rule === 'title') {\n\t\t\trule = undefined;\n\t\t}\n\t\treturn rule;\n\t}\n};\n\nexports.makePrettylink = function(parser, title, caption) {\n\tvar output;\n\tif (parser.context.allowPrettylinks() && canBePrettylink(title, caption)) {\n\t\tif (caption !== undefined) {\n\t\t\toutput = \"[[\" + caption + \"|\" + title + \"]]\";\n\t\t} else {\n\t\t\toutput = \"[[\" + title + \"]]\";\n\t\t}\n\t} else if (caption !== undefined) {\n\t\tvar safeCaption = sanitizeCaption(parser, caption);\n\t\tif (safeCaption !== undefined) {\n\t\t\toutput = exports.makeWidget(parser, '$link', {to: title}, safeCaption);\n\t\t}\n\t} else if (exports.shorthandPrettylinksSupported(parser.wiki)) {\n\t\toutput = exports.makeWidget(parser, '$link', {to: title});\n\t} else if (parser.context.allowWidgets() && parser.placeholder) {\n\t\t// If we don't have a caption, we must resort to\n\t\t// placeholders anyway to prevent link/caption desync\n\t\t// from later relinks.\n\t\t// It doesn't matter whether the tiddler is quotable.\n\t\tvar ph = parser.placeholder.getPlaceholderFor(title);\n\t\toutput = \"<$link to=<<\"+ph+\">>><$text text=<<\"+ph+\">>/></$link>\";\n\t}\n\treturn output;\n};\n\n/**In version 5.1.20, Tiddlywiki made it so <$link to\"something\" /> would\n * use \"something\" as a caption. This is preferable. However, Relink works\n * going back to 5.1.14, so we need to have different handling for both\n * cases.\n */\nvar _supported;\nexports.shorthandPrettylinksSupported = function(wiki) {\n\tif (_supported === undefined) {\n\t\tvar test = wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", \"<$link to=test/>\");\n\t\t_supported = (test === \"test\");\n\t}\n\treturn _supported;\n};\n\n/**Return true if value can be used inside a prettylink.\n */\nfunction canBePrettylink(value, customCaption) {\n\treturn value.indexOf(\"]]\") < 0 && value[value.length-1] !== ']' && (customCaption !== undefined || value.indexOf('|') < 0);\n};\n\nfunction sanitizeCaption(parser, caption) {\n\tvar plaintext = parser.wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", caption);\n\tif (plaintext === caption && caption.indexOf(\"</$link>\") <= 0) {\n\t\treturn caption;\n\t} else {\n\t\treturn exports.makeWidget(parser, '$text', {text: caption});\n\t}\n};\n\n/**Finds an appropriate quote mark for a given value.\n *\n *Tiddlywiki doesn't have escape characters for attribute values. Instead,\n * we just have to find the type of quotes that'll work for the given title.\n * There exist titles that simply can't be quoted.\n * If it can stick with the preference, it will.\n *\n * return: Returns the wrapped value, or undefined if it's impossible to wrap\n */\nexports.wrapAttributeValue = function(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\/\\s<>\"'=])/.test(v) && v.length > 0; },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\nfunction wrap(value, wrapper) {\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; },\n\t\t'\"\"\"': function(v) {return '\"\"\"'+v+'\"\"\"'; },\n\t\t\"[[\": function(v) {return \"[[\"+v+\"]]\"; }\n\t};\n\tvar chosen = wrappers[wrapper];\n\tif (chosen) {\n\t\treturn chosen(value);\n\t} else {\n\t\treturn undefined;\n\t}\n};\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\n// Finds the newline at the end of a string and returns it. Empty string if\n// none exists.\nexports.getEndingNewline = function(string) {\n\tvar l = string.length;\n\tif (string[l-1] === '\\n') {\n\t\treturn (string[l-2] === '\\r') ? \"\\r\\n\" : \"\\n\";\n\t}\n\treturn \"\";\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js":{"text":"/*\\\nmodule-type: relinkwikitextrule\n\nHandles CamelCase links\n\nWikiLink\n\nbut not:\n\n~WikiLink\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nexports.name = \"wikilink\";\n\nexports.report = function(text, callback, options) {\n\tvar title = this.match[0],\n\t\tunlink = $tw.config.textPrimitives.unWikiLink;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title[0] !== unlink) {\n\t\tcallback(title, unlink + title);\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar entry = undefined,\n\t\ttitle = this.match[0];\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (title === fromTitle && title[0] !== $tw.config.textPrimitives.unWikiLink) {\n\t\tentry = { output: this.makeWikilink(toTitle, options) };\n\t\tif (entry.output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeWikilink = function(title, options) {\n\tif (title.match(this.matchRegExp) && title[0] !== $tw.config.textPrimitives.unWikiLink) {\n\t\treturn title;\n\t} else {\n\t\treturn utils.makePrettylink(this.parser, title);\n\t}\n};\n","module-type":"relinkwikitextrule","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes.js":{"text":"/*\\\n\nHandles all element attribute values. Most widget relinking happens here.\n\n\\*/\n\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar refHandler = relinkUtils.getType('reference');\nvar filterHandler = relinkUtils.getType('filter');\nvar macrocall = require(\"$:/plugins/flibbles/relink/js/utils/macrocall.js\");\nvar attributeOperators = relinkUtils.getModulesByTypeAsHashmap('relinkhtmlattributes', 'name');\n\nexports.name = \"attributes\";\n\nexports.report = function(element, parser, callback, options) {\n\tfor (var attributeName in element.attributes) {\n\t\tvar attr = element.attributes[attributeName];\n\t\tvar nextEql = parser.source.indexOf('=', attr.start);\n\t\t// This is the rare case of changing tiddler\n\t\t// \"true\" to something else when \"true\" is\n\t\t// implicit, like <$link to /> We ignore those.\n\t\tif (nextEql < 0 || nextEql > attr.end) {\n\t\t\tcontinue;\n\t\t}\n\t\tvar entry;\n\t\tswitch (attr.type) {\n\t\tcase \"string\":\n\t\t\tfor (var operatorName in attributeOperators) {\n\t\t\t\tvar operator = attributeOperators[operatorName];\n\t\t\t\tvar handler = operator.getHandler(element, attr, options);\n\t\t\t\tif (handler) {\n\t\t\t\t\thandler.report(attr.value, function(title, blurb) {\n\t\t\t\t\t\tif (operator.formBlurb) {\n\t\t\t\t\t\t\tcallback(title, operator.formBlurb(element, attr, blurb, options));\n\t\t\t\t\t\t} else if (blurb) {\n\t\t\t\t\t\t\tcallback(title, element.tag + ' ' + attributeName + '=\"' + blurb + '\"');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback(title, element.tag + ' ' + attributeName);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, options);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"indirect\":\n\t\t\tentry = refHandler.report(attr.textReference, function(title, blurb) {\n\t\t\t\tcallback(title, element.tag + ' ' + attributeName + '={{' + (blurb || '') + '}}');\n\t\t\t}, options);\n\t\t\tbreak;\n\t\tcase \"filtered\":\n\t\t\tentry = filterHandler.report(attr.filter, function(title, blurb) {\n\t\t\t\tcallback(title, element.tag + ' ' + attributeName + '={{{' + blurb + '}}}');\n\t\t\t}, options);\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\tvar macro = attr.value;\n\t\t\tentry = macrocall.report(options.settings, macro, function(title, blurb) {\n\t\t\t\tcallback(title, element.tag + ' ' + attributeName + '=<<' + blurb + '>>');\n\t\t\t}, options);\n\t\t\tbreak;\n\t\t}\n\t}\n};\n\nexports.relink = function(element, parser, fromTitle, toTitle, options) {\n\tvar changed = undefined, impossible = undefined;\n\tfor (var attributeName in element.attributes) {\n\t\tvar attr = element.attributes[attributeName];\n\t\tvar nextEql = parser.source.indexOf('=', attr.start);\n\t\t// This is the rare case of changing tiddler\n\t\t// \"true\" to something else when \"true\" is\n\t\t// implicit, like <$link to /> We ignore those.\n\t\tif (nextEql < 0 || nextEql > attr.end) {\n\t\t\tattr.valueless = true;\n\t\t\tcontinue;\n\t\t}\n\t\tvar entry;\n\t\tswitch (attr.type) {\n\t\tcase 'string':\n\t\t\tfor (var operatorName in attributeOperators) {\n\t\t\t\tvar operator = attributeOperators[operatorName];\n\t\t\t\tvar handler = operator.getHandler(element, attr, options);\n\t\t\t\tif (handler) {\n\t\t\t\t\tentry = handler.relink(attr.value, fromTitle, toTitle, options);\n\t\t\t\t\tif (entry && entry.output) {\n\t\t\t\t\t\tattr.value = entry.output;\n\t\t\t\t\t\tattr.handler = handler.name;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'indirect':\n\t\t\tentry = refHandler.relinkInBraces(attr.textReference, fromTitle, toTitle, options);\n\t\t\tif (entry && entry.output) {\n\t\t\t\tattr.textReference = entry.output;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'filtered':\n\t\t\tentry = filterHandler.relinkInBraces(attr.filter, fromTitle, toTitle, options);\n\t\t\tif (entry && entry.output) {\n\t\t\t\tattr.filter = entry.output;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'macro':\n\t\t\tvar macro = attr.value;\n\t\t\tentry = macrocall.relink(options.settings, macro, parser.source, fromTitle, toTitle, false, options);\n\t\t\tif (entry && entry.output) {\n\t\t\t\tattr.output = macrocall.reassemble(entry.output, parser.source, options);\n\t\t\t\tattr.value = entry.output;\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\t\tif (entry && entry.impossible) {\n\t\t\timpossible = true;\n\t\t}\n\t}\n\tif (changed || impossible) {\n\t\treturn {output: changed, impossible: impossible};\n\t}\n};\n","module-type":"relinkhtml","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/importvariables.js":{"text":"/*\\\n\nHandles state updating required for $importvariables widgets\n\n\\*/\n\nvar relinkUtils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar ImportContext = relinkUtils.getContext('import');\n\nexports.name = \"importvariables\";\n\nexports.report = function(element, parser, callback, options) {\n\tif (element.tag === \"$importvariables\") {\n\t\tprocessImport(element, parser, options);\n\t}\n};\n\nexports.relink = function(element, parser, fromTitle, toTitle, options) {\n\tif (element.tag === \"$importvariables\") {\n\t\tprocessImport(element, parser, options);\n\t}\n};\n\nfunction processImport(element, parser, options) {\n\tvar importFilterAttr = element.attributes.filter;\n\tif (importFilterAttr) {\n\t\tprocessImportFilter(parser, importFilterAttr, options);\n\t}\n};\n\n// This processes a <$importvariables> filter attribute and adds any new\n// variables to our parser.\nfunction processImportFilter(parser, importAttribute, options) {\n\tif (typeof importAttribute === \"string\") {\n\t\t// It was changed. Reparse it. It'll be a quoted\n\t\t// attribute value. Add a dummy attribute name.\n\t\timportAttribute = $tw.utils.parseAttribute(\"p=\"+importAttribute, 0)\n\t}\n\tvar context = parser.context;\n\tvar importFilter = computeAttribute(context, importAttribute, options);\n\tparser.context = new ImportContext(options.wiki, context, importFilter);\n};\n\nfunction computeAttribute(context, attribute, options) {\n\tvar value;\n\tif(attribute.type === \"filtered\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = options.wiki.filterTiddlers(attribute.filter,parentWidget)[0] || \"\";\n\t} else if(attribute.type === \"indirect\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = options.wiki.getTextReference(attribute.textReference,\"\",parentWidget.variables.currentTiddler.value);\n\t} else if(attribute.type === \"macro\") {\n\t\tvar parentWidget = context.widget;\n\t\tvalue = parentWidget.getVariable(attribute.value.name,{params: attribute.value.params});\n\t} else { // String attribute\n\t\tvalue = attribute.value;\n\t}\n\treturn value;\n};\n","module-type":"relinkhtml","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/importvariables.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/fields.js":{"text":"/*\\ \nHandles replacement in widgets which allow arbitrary attributes that\ncorrespond to tiddler fields.\n\n\\*/\n\nexports.name = \"fields\";\n\nexports.getHandler = function(element, attribute, options) {\n\tvar regexp = options.settings.getConfig(\"fieldattributes\")[element.tag];\n\tif (regexp) {\n\t\tvar results = regexp.exec(attribute.name);\n\t\tif (results && results[0] === attribute.name) {\n\t\t\treturn options.settings.getFields()[results[1]];\n\t\t}\n\t}\n};\n","module-type":"relinkhtmlattributes","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/fields.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/macrocall.js":{"text":"/*\\\n\nHandles replacement in $macrocall widgets\n\n\\*/\n\nexports.name = \"macrocall\";\n\nexports.getHandler = function(element, attribute, options) {\n\tif (element.tag === \"$macrocall\") {\n\t\tvar nameAttr = element.attributes[\"$name\"];\n\t\tif (nameAttr) {\n\t\t\tvar setting = options.settings.getMacro(nameAttr.value);\n\t\t\treturn setting && setting[attribute.name];\n\t\t}\n\t}\n};\n\nexports.formBlurb = function(element, attribute, blurb, options) {\n\tvar nameAttr = element.attributes[\"$name\"];\n\tvar newBlurb = '<' + nameAttr.value + ' ' + attribute.name;\n\tif (blurb) {\n\t\tnewBlurb += '=\"' + blurb + '\"';\n\t}\n\treturn newBlurb;\n};\n","module-type":"relinkhtmlattributes","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/macrocall.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/whitelist.js":{"text":"/*\\ \n\nHandles replacement of widget attributes that are specified in the whitelist.\n\n\\*/\n\nexports.name = \"whitelist\";\n\nexports.getHandler = function(element, attribute, options) {\n\tvar setting = options.settings.getAttribute(element.tag);\n\treturn setting && setting[attribute.name];\n};\n","module-type":"relinkhtmlattributes","title":"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html/attributes/whitelist.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/context.js":{"text":"/*\\\n\nBase class for relink contexts.\n\n\\*/\n\nfunction Context() {\n};\n\nexports.context = Context;\n\n// This class does no special handling of fields, operators, or attributes.\n// we pass it along to the parent.\nContext.prototype.getFields = function() {\n\treturn this.parent.getFields();\n};\n\nContext.prototype.getOperator = function(name, index) {\n\treturn this.parent.getOperator(name, index);\n};\n\nContext.prototype.getOperators = function() {\n\treturn this.parent.getOperators();\n};\n\nContext.prototype.getAttribute = function(elementName) {\n\treturn this.parent.getAttribute(elementName);\n};\n\nContext.prototype.getAttributes = function() {\n\treturn this.parent.getAttributes();\n};\n\nContext.prototype.getConfig = function(category) {\n\treturn this.parent.getConfig(category);\n};\n\nContext.prototype.getMacro = function(macroName) {\n\treturn this.parent.getMacro(macroName);\n};\n\nContext.prototype.getMacros = function() {\n\treturn this.parent.getMacros();\n};\n\nContext.prototype.allowPrettylinks = function() {\n\treturn this.parent.allowPrettylinks();\n};\n\nContext.prototype.allowWidgets = function() {\n\treturn this.parent.allowWidgets();\n};\n\nContext.prototype.hasImports = function(value) {\n\treturn this.parent.hasImports(value);\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/context.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/import.js":{"text":"/*\\\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar WidgetContext = require('./widget').widget;\n\nfunction ImportContext(wiki, parent, filter) {\n\tthis.parent = parent;\n\tthis.wiki = wiki;\n\tvar importWidget = createImportWidget(filter, this.wiki, this.parent.widget);\n\tthis._compileList(importWidget.tiddlerList);\n\t// This only works if only one filter is imported\n\tthis.widget = this.getBottom(importWidget);\n\t// Trickle this up, so that any containing tiddlercontext knows that this\n\t// tiddler does some importing, and must be checked regularly.\n\tparent.hasImports(true);\n};\n\nexports.import = ImportContext;\n\nImportContext.prototype = new WidgetContext();\n\nImportContext.prototype.changed = function(changes) {\n\treturn this.widget && this.widget.refresh(changes)\n};\n\nfunction createImportWidget(filter, wiki, parent) {\n\tvar widget = wiki.makeWidget( { tree: [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\t\"filter\": {\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: filter\n\t\t\t}\n\t\t}\n\t}] }, { parentWidget: parent} );\n\tif (parent) {\n\t\tparent.children.push(widget);\n\t}\n\twidget.execute();\n\twidget.renderChildren();\n\tvar importWidget = widget.children[0];\n\treturn importWidget;\n};\n\nImportContext.prototype._compileList = function(titleList) {\n\tfor (var i = 0; i < titleList.length; i++) {\n\t\tvar parser = this.wiki.parseTiddler(titleList[i]);\n\t\tif (parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile (parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tif (parseTreeNode.relink) {\n\t\t\t\t\tfor (var macroName in parseTreeNode.relink) {\n\t\t\t\t\t\tvar parameters = parseTreeNode.relink[macroName];\n\t\t\t\t\t\tfor (paramName in parameters) {\n\t\t\t\t\t\t\tthis.addSetting(this.wiki, macroName, paramName, parameters[paramName], titleList[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t}\n\t}\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/import.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/tiddler.js":{"text":"/*\\\n\nContext for a tiddler. Defines nothing but makes an entry point to test if\na tiddler must be refreshed.\n\n\\*/\n\nvar WidgetContext = require('./widget.js').widget;\n\nfunction TiddlerContext(wiki, parentContext, title) {\n\tthis.title = title;\n\tthis.parent = parentContext;\n\tvar globalWidget = parentContext && parentContext.widget;\n\tvar parentWidget = wiki.makeWidget(null, {parentWidget: globalWidget});\n\tparentWidget.setVariable('currentTiddler', title);\n\tthis.widget = wiki.makeWidget(null, {parentWidget: parentWidget});\n};\n\nexports.tiddler = TiddlerContext;\n\nTiddlerContext.prototype = new WidgetContext();\n\nTiddlerContext.prototype.changed = function(changes) {\n\treturn this.widget && this.widget.refresh(changes);\n};\n\n// By default, a tiddler context does not use imports, unless an import\n// statement is later discovered somewhere in the fields.\nTiddlerContext.prototype.hasImports = function(value) {\n\treturn this._hasImports || (this._hasImports = value);\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/tiddler.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/variable.js":{"text":"/*\\\n\nThis handles the context for variables. Either from $set, $vars, or \\define\n\n\\*/\n\nvar WidgetContext = require('./widget').widget;\n\nfunction VariableContext(parent, setParseTreeNode) {\n\tthis.parent = parent;\n\t// Now create a new widget and attach it.\n\tvar attachPoint = parent.widget;\n\tvar setWidget = attachPoint.makeChildWidget(setParseTreeNode);\n\tattachPoint.children.push(setWidget);\n\tsetWidget.computeAttributes();\n\tsetWidget.execute();\n\t// point our widget to bottom, where any other contexts would attach to\n\tthis.widget = this.getBottom(setWidget);\n};\n\nexports.variable = VariableContext;\n\nVariableContext.prototype = new WidgetContext();\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/variable.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/whitelist.js":{"text":"/*\\\n\nThis top-level context manages settings inside the whitelist. It never has\na parent.\n\n\\*/\n\nvar utils = require('../utils');\nvar Context = require('./context').context;\n\nvar prefix = \"$:/config/flibbles/relink/\";\n\n/**Factories define methods that create settings given config tiddlers.\n * for factory method 'example', it will be called once for each:\n * \"$:/config/flibbles/relink/example/...\" tiddler that exists.\n * the argument \"key\" will be set to the contents of \"...\"\n *\n * The reason I build relink settings in this convoluted way is to minimize\n * the number of times tiddlywiki has to run through EVERY tiddler looking\n * for relink config tiddlers.\n */\nvar settingsGenerators = utils.getModulesByTypeAsHashmap('relinksetting', 'name');\n\nfunction WhitelistContext(wiki) {\n\tbuild(this, wiki);\n};\n\nexports.whitelist = WhitelistContext;\n\nWhitelistContext.prototype = new Context();\n\n/**Hot directories are directories for which if anything changes inside them,\n * then Relink must completely rebuild its index.\n * By default, this includes the whitelist settings, but relink-titles also\n * includes its rules disabling directory.\n * This is the FIRST solution I came up with to this problem. If you're\n * looking at this, please make a github issue so I have a chance to understand\n * your needs. This is currently a HACK solution.\n */\nWhitelistContext.hotDirectories = [prefix];\n\nWhitelistContext.prototype.getAttribute = function(elementName) {\n\treturn this.attributes[elementName];\n};\n\nWhitelistContext.prototype.getAttributes = function() {\n\treturn flatten(this.attributes);\n};\n\nWhitelistContext.prototype.getFields = function() {\n\treturn this.fields;\n};\n\nWhitelistContext.prototype.getConfig = function(category) {\n\treturn this[category];\n};\n\nWhitelistContext.prototype.getOperator = function(operatorName, operandIndex) {\n\tvar op = this.operators[operatorName];\n\treturn op && op[operandIndex || 1];\n};\n\nWhitelistContext.prototype.getOperators = function() {\n\tvar signatures = Object.create(null);\n\tfor (var op in this.operators) {\n\t\tvar operandSet = this.operators[op];\n\t\tfor (var index in operandSet) {\n\t\t\tvar entry = operandSet[index];\n\t\t\tsignatures[entry.key] = entry;\n\t\t}\n\t}\n\treturn signatures;\n};\n\nWhitelistContext.prototype.getMacro = function(macroName) {\n\treturn this.macros[macroName];\n};\n\nWhitelistContext.prototype.getMacros = function() {\n\treturn flatten(this.macros);\n};\n\nWhitelistContext.prototype.changed = function(changedTiddlers) {\n\tfor (var i = 0; i < WhitelistContext.hotDirectories.length; i++) {\n\t\tvar dir = WhitelistContext.hotDirectories[i];\n\t\tfor (var title in changedTiddlers) {\n\t\t\tif (title.substr(0, dir.length) === dir) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nWhitelistContext.prototype.hasImports = function(value) {\n\t// We don't care if imports are used. This is the global level.\n\treturn false;\n};\n\nfunction build(settings, wiki) {\n\tfor (var name in settingsGenerators) {\n\t\tsettings[name] = Object.create(null);\n\t}\n\twiki.eachShadowPlusTiddlers(function(tiddler, title) {\n\t\tif (title.substr(0, prefix.length) === prefix) {\n\t\t\tvar remainder = title.substr(prefix.length);\n\t\t\tvar category = root(remainder);\n\t\t\tvar factory = settingsGenerators[category];\n\t\t\tif (factory) {\n\t\t\t\tvar name = remainder.substr(category.length+1);\n\t\t\t\tfactory.generate(settings[category], tiddler, name, wiki);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/* Returns first bit of a path. path/to/tiddler -> path\n */\nfunction root(string) {\n\tvar index = string.indexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n};\n\n/* Turns {dir: {file1: 'value1', file2: 'value2'}}\n * into {dir/file1: 'value1', dir/file2: 'value2'}\n */\nfunction flatten(set) {\n\tvar signatures = Object.create(null);\n\tfor (var outerName in set) {\n\t\tvar setItem = set[outerName];\n\t\tfor (var innerName in setItem) {\n\t\t\tsignatures[outerName + \"/\" + innerName] = setItem[innerName];\n\t\t}\n\t}\n\treturn signatures;\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/whitelist.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/widget.js":{"text":"/*\\\n\nThis is a virtual subclass of context for contexts that exist within widgets\nof a specific tiddler.\n\nAll widget contexts must have a widget member.\n\n\\*/\n\nvar Context = require('./context.js').context;\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\n\nfunction WidgetContext() {};\n\nexports.widget = WidgetContext;\n\nWidgetContext.prototype = new Context();\n\nWidgetContext.prototype.getMacroDefinition = function(variableName) {\n\t// widget.variables is prototyped, so it looks up into all its parents too\n\treturn this.widget.variables[variableName] || $tw.macros[variableName];\n};\n\nWidgetContext.prototype.addSetting = function(wiki, macroName, parameter, type, sourceTitle) {\n\tthis.macros = this.macros || Object.create(null);\n\tvar macro = this.macros[macroName];\n\ttype = type || utils.getDefaultType(wiki);\n\tif (macro === undefined) {\n\t\tmacro = this.macros[macroName] = Object.create(null);\n\t}\n\tvar handler = utils.getType(type);\n\tif (handler) {\n\t\thandler.source = sourceTitle;\n\t\t// We attach the fields of the defining tiddler for the benefit\n\t\t// of any 3rd party field types that want access to them.\n\t\tvar tiddler = wiki.getTiddler(sourceTitle);\n\t\thandler.fields = tiddler.fields;\n\t\tmacro[parameter] = handler;\n\t}\n};\n\nWidgetContext.prototype.getMacros = function() {\n\tvar signatures = this.parent.getMacros();\n\tif (this.macros) {\n\t\tfor (var macroName in this.macros) {\n\t\t\tvar macro = this.macros[macroName];\n\t\t\tfor (var param in macro) {\n\t\t\t\tsignatures[macroName + \"/\" + param] = macro[param];\n\t\t\t}\n\t\t}\n\t}\n\treturn signatures;\n};\n\n/**This does strange handling because it's possible for a macro to have\n * its individual parameters whitelisted in separate places.\n * Don't know WHY someone would do this, but it can happen.\n */\nWidgetContext.prototype.getMacro = function(macroName) {\n\tvar theseSettings = this.macros && this.macros[macroName];\n\tvar parentSettings;\n\tif (this.parent) {\n\t\tparentSettings = this.parent.getMacro(macroName);\n\t}\n\tif (theseSettings && parentSettings) {\n\t\t// gotta merge them without changing either. This is expensive,\n\t\t// but it'll happen rarely.\n\t\tvar rtnSettings = $tw.utils.extend(Object.create(null), theseSettings, parentSettings);\n\t\treturn rtnSettings;\n\t}\n\treturn theseSettings || parentSettings;\n};\n\n/**Returns the deepest descendant of the given widget.\n */\nWidgetContext.prototype.getBottom = function(widget) {\n\twhile (widget.children.length > 0) {\n\t\twidget = widget.children[0];\n\t}\n\treturn widget;\n};\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/widget.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/contexts/wikitext.js":{"text":"/*\\\n\nContext for wikitext. It can contain rules about what's allowed in this\ncurrent layer of wikitext.\n\n\\*/\n\nvar WidgetContext = require('./widget.js').widget;\n\nfunction WikitextContext(parentContext) {\n\tthis.parent = parentContext;\n\tthis.widget = parentContext.widget;\n};\n\nexports.wikitext = WikitextContext;\n\nWikitextContext.prototype = new WidgetContext();\n\n// Unless this specific context has rules about it, widgets and prettyLInks are allowed.\nWikitextContext.prototype.allowWidgets = enabled;\nWikitextContext.prototype.allowPrettylinks = enabled;\n\nfunction enabled() { return true; };\n","module-type":"relinkcontext","title":"$:/plugins/flibbles/relink/js/contexts/wikitext.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/backupIndexer.js":{"text":"/*\\\nmodule-type: library\n\nThis is a backup indexer Relink uses if the real one is disabled, or we're\n<V5.1.23. It's not nearly as good, but it caches some.\n\n\\*/\n\n\"use strict\";\n\nvar utils = require(\"$:/plugins/flibbles/relink/js/utils.js\");\nvar TiddlerContext = utils.getContext('tiddler');\n\n// This is the indexer we use if the current wiki doesn't support indexers.\nfunction BackupIndexer(wiki) {\n\tthis.wiki = wiki;\n};\n\nmodule.exports = BackupIndexer;\n\nBackupIndexer.prototype.lookup = function(title) {\n\treturn getCache(this.wiki).lookup[title];\n};\n\nBackupIndexer.prototype.reverseLookup = function(title) {\n\tvar index = getCache(this.wiki);\n\tif (!index.reverse[title]) {\n\t\tvar record = Object.create(null);\n\t\tfor (var other in index.lookup) {\n\t\t\tif (index.lookup[other][title]) {\n\t\t\t\trecord[other] = index.lookup[other][title];\n\t\t\t}\n\t\t}\n\t\tindex.reverse[title] = record;\n\t}\n\treturn index.reverse[title];\n};\n\n/* The backup indexer doesn't bother caching relink reports. It would always\n * be called after a draft tiddler had changed, which would defeat the point.\n */\nBackupIndexer.prototype.relinkLookup = function(fromTitle, toTitle, options) {\n\tvar cache = getCache(this.wiki);\n\tif (cache.lastRelinkFrom === fromTitle && cache.lastRelinkTo === toTitle) {\n\t\toptions.cache = cache.lastRelinkCache;\n\t\treturn cache.lastRelink;\n\t}\n\tcache.lastRelink = utils.getRelinkResults(this.wiki, fromTitle, toTitle, cache.context, undefined, options);\n\tcache.lastRelinkFrom = fromTitle;\n\tcache.lastRelinkTo = toTitle;\n\tcache.lastRelinkCache = options.cache;\n\treturn cache.lastRelink;\n};\n\nBackupIndexer.prototype.orphans = function() {\n\tvar index = getCache(this.wiki).lookup;\n\tvar results = [];\n\tfor (var title in index) {\n\t\tvar found = false;\n\t\tfor (var anything in this.reverseLookup(title)) {\n\t\t\tfound = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (!found) {\n\t\t\tresults.push(title);\n\t\t}\n\t}\n\treturn results;\n};\n\nfunction getCache(wiki) {\n\treturn wiki.getGlobalCache('relink', function() {\n\t\tvar tiddlerList = wiki.getRelinkableTitles();\n\t\tvar index = Object.create(null);\n\t\tvar wikiContext = utils.getWikiContext(wiki);\n\t\tfor (var i = 0; i < tiddlerList.length; i++) {\n\t\t\tvar title = tiddlerList[i];\n\t\t\tvar tiddler = wiki.getTiddler(title);\n\t\t\tif (tiddler && !tiddler.fields[\"plugin-type\"]) {\n\t\t\t\tvar context = new TiddlerContext(wiki, wikiContext, title);\n\t\t\t\tindex[title] = utils.getTiddlerRelinkReferences(wiki, title, context);\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tlookup: index,\n\t\t\treverse: Object.create(null),\n\t\t\tcontext: wikiContext};\n\t});\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils/backupIndexer.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/entry.js":{"text":"/*\\\n\nEntries are deprecated. Don't use them. These classes are here just so that\nany 3rd party modules built for Relink V1 don't break.\n\nJust return an object like, {output: \"string\", impossible: true|undefined}\n\n\\*/\n\nfunction EntryNode() {\n\tthis.children = [];\n};\n\nmodule.exports = EntryNode;\n\n/** PURE VIRTUAL\n * EntryNode.prototype.report = function() -> [\"string\", ...]\n */\n\nEntryNode.newType = function() {\n\treturn EntryNode;\n};\n\nEntryNode.prototype.add = function(entry) {\n\tthis.children.push(entry);\n};\n\nfunction EntryCollection() {\n\tthis.children = Object.create(null);\n\tthis.types = Object.create(null);\n};\n\nEntryNode.newCollection = function(name) {\n\treturn EntryCollection;\n};\n\n// Again. I reiterate. Don't use this. All this is just legacy support.\nObject.defineProperty(EntryCollection, 'impossible', {\n\tget: function() {\n\t\tvar imp = this._impossible;\n\t\tthis.eachChild(function(child) { imp = imp || child.impossible; });\n\t\treturn imp;\n\t},\n\tset: function(impossible) {\n\t\tthis._impossible = true;\n\t}\n});\n\nEntryCollection.prototype.eachChild = function(method) {\n\tfor (var child in this.children) {\n\t\tmethod(this.children[child]);\n\t}\n};\n\nEntryCollection.prototype.addChild = function(child, name, type) {\n\tthis.children[name] = child;\n\tthis.types[name] = type;\n};\n\nEntryCollection.prototype.hasChildren = function() {\n\treturn Object.keys(this.children).length > 0;\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils/entry.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/macrocall.js":{"text":"/*\\\n\nMethods for reporting and relinking macros. Behaves much like a fieldtype, except that it's not.\n\n\\*/\n\nvar utils = require('$:/plugins/flibbles/relink/js/utils.js');\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\n\n// Error thrown when a macro's definition is needed, but can't be found.\nfunction CannotFindMacroDef() {};\nCannotFindMacroDef.prototype.impossible = true;\nCannotFindMacroDef.prototype.name = \"macroparam\";\n// Failed relinks due to missing definitions aren't reported for now.\n// I may want to do something special later on.\nCannotFindMacroDef.prototype.report = function() { return []; };\n\n/** As in, report a macrocall invocation that is an html attribute.\n * macro: must be a macro object.*/\nexports.report = function(context, macro, callback, options) {\n\tvar managedMacro = context.getMacro(macro.name);\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tfor (var managedArg in managedMacro) {\n\t\tvar index;\n\t\ttry {\n\t\t\tindex = getParamIndexWithinMacrocall(context, macro.name, managedArg, macro.params, options);\n\t\t} catch (e) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (index < 0) {\n\t\t\t// The argument was not supplied. Move on to next.\n\t\t\tcontinue;\n\t\t}\n\t\tvar param = macro.params[index];\n\t\tvar handler = managedMacro[managedArg];\n\t\tvar nestedOptions = Object.create(options);\n\t\tnestedOptions.settings = context;\n\t\tvar entry = handler.report(param.value, function(title, blurb) {\n\t\t\tvar rtn = managedArg;\n\t\t\tif (blurb) {\n\t\t\t\trtn += ': \"' + blurb + '\"';\n\t\t\t}\n\t\t\tcallback(title, macro.name + ' ' + rtn);\n\t\t}, nestedOptions);\n\t}\n};\n\n/**Processes the given macro,\n * macro: {name:, params:, start:, end:}\n * each parameters: {name:, end:, value:}\n * Macro invocation returned is the same, but relinked, and may have new keys:\n * parameters: {type: macro, start:, newValue: (quoted replacement value)}\n * Output of the returned entry isn't a string, but a macro object. It needs\n * to be converted.\n */\nexports.relink = function(context, macro, text, fromTitle, toTitle, mayBeWidget, options) {\n\tvar managedMacro = context.getMacro(macro.name);\n\tvar modified = false;\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tvar outMacro = $tw.utils.extend({}, macro);\n\tvar macroEntry = {};\n\toutMacro.params = macro.params.slice();\n\tfor (var managedArg in managedMacro) {\n\t\tvar index;\n\t\ttry {\n\t\t\tindex = getParamIndexWithinMacrocall(context, macro.name, managedArg, macro.params, options);\n\t\t} catch (e) {\n\t\t\tif (e instanceof CannotFindMacroDef) {\n\t\t\t\tmacroEntry.impossible = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (index < 0) {\n\t\t\t// this arg either was not supplied, or we can't find\n\t\t\t// the definition, so we can't tie it to an anonymous\n\t\t\t// argument. Either way, move on to the next.\n\t\t\tcontinue;\n\t\t}\n\t\tvar param = macro.params[index];\n\t\tvar handler = managedMacro[managedArg];\n\t\tvar nestedOptions = Object.create(options);\n\t\tnestedOptions.settings = context;\n\t\tvar entry = handler.relink(param.value, fromTitle, toTitle, nestedOptions);\n\t\tif (entry === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\t// Macro parameters can only be string parameters, not\n\t\t// indirect, or macro, or filtered\n\t\tif (entry.impossible) {\n\t\t\tmacroEntry.impossible = true;\n\t\t}\n\t\tif (!entry.output) {\n\t\t\tcontinue;\n\t\t}\n\t\tvar quote = utils.determineQuote(text, param);\n\t\tvar quoted = wrapParameterValue(entry.output, quote);\n\t\tvar newParam = $tw.utils.extend({}, param);\n\t\tif (quoted === undefined) {\n\t\t\tif (!mayBeWidget || !options.placeholder) {\n\t\t\t\tmacroEntry.impossible = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar ph = options.placeholder.getPlaceholderFor(entry.output,handler.name);\n\t\t\tnewParam.newValue = \"<<\"+ph+\">>\";\n\t\t\tnewParam.type = \"macro\";\n\t\t} else {\n\t\t\tnewParam.start = newParam.end - (newParam.value.length + (quote.length*2));\n\t\t\tnewParam.value = entry.output;\n\t\t\tnewParam.newValue = quoted;\n\t\t}\n\t\toutMacro.params[index] = newParam;\n\t\tmodified = true;\n\t}\n\tif (modified || macroEntry.impossible) {\n\t\tif (modified) {\n\t\t\tmacroEntry.output = outMacro;\n\t\t}\n\t\treturn macroEntry;\n\t}\n\treturn undefined;\n};\n\n/**Converts the macro object into a string, includes the <<..>>.\n * The text is the old text the macro was formed from. It's used to preserve\n * whitespace.\n */\nexports.reassemble = function(macro, text, options) {\n\tvar builder = new Rebuilder(text, macro.start);\n\tfor (var i = 0; i < macro.params.length; i++) {\n\t\tvar param = macro.params[i];\n\t\tif (param.newValue) {\n\t\t\tbuilder.add(param.newValue, param.start, param.end);\n\t\t}\n\t}\n\treturn builder.results(macro.end);\n};\n\n\n/** Returns -1 if param definitely isn't in macrocall.\n */\nfunction getParamIndexWithinMacrocall(context, macroName, param, params, options) {\n\tvar index, i, anonsExist = false;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name === param) {\n\t\t\treturn i;\n\t\t}\n\t\tif (name === undefined) {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (!anonsExist) {\n\t\t// If no anonymous parameters are present, and we didn't find\n\t\t// it among the named ones, it must not be there.\n\t\treturn -1;\n\t}\n\tvar expectedIndex = indexOfParameterDef(context, macroName, param, options);\n\t// We've got to skip over all the named parameter instances.\n\tif (expectedIndex >= 0) {\n\t\tvar anonI = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (params[i].name === undefined) {\n\t\t\t\tif (anonI === expectedIndex) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tanonI++;\n\t\t\t} else {\n\t\t\t\tvar indexOfOther = indexOfParameterDef(context, macroName, params[i].name, options);\n\t\t\t\tif (indexOfOther < expectedIndex) {\n\t\t\t\t\tanonI++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn -1;\n};\n\n// Looks up the definition of a macro, and figures out what the expected index\n// is for the given parameter.\nfunction indexOfParameterDef(context, macroName, paramName, options) {\n\tvar def = context.getMacroDefinition(macroName);\n\tif (def === undefined) {\n\t\tthrow new CannotFindMacroDef();\n\t}\n\tvar params = def.params || [];\n\tfor (var i = 0; i < params.length; i++) {\n\t\tif (params[i].name === paramName) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n// Looks up the definition of a macro, and figures out what the expected index\n// is for the given parameter.\nfunction indexOfParameterDef(context, macroName, paramName, options) {\n\tvar def = context.getMacroDefinition(macroName);\n\tif (def === undefined) {\n\t\tthrow new CannotFindMacroDef();\n\t}\n\tvar params = def.params || [];\n\tfor (var i = 0; i < params.length; i++) {\n\t\tif (params[i].name === paramName) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/**Like wrapAttribute value, except for macro parameters, not attributes.\n *\n * These are more permissive. Allows brackets,\n * and slashes and '<' in unquoted values.\n */\nfunction wrapParameterValue(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '[[', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\s>\"'=])/.test(v); },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t\"[[\": canBePrettyOperand,\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\n\nfunction wrap(value, wrapper) {\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; },\n\t\t'\"\"\"': function(v) {return '\"\"\"'+v+'\"\"\"'; },\n\t\t\"[[\": function(v) {return \"[[\"+v+\"]]\"; }\n\t};\n\tvar chosen = wrappers[wrapper];\n\tif (chosen) {\n\t\treturn chosen(value);\n\t} else {\n\t\treturn undefined;\n\t}\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils/macrocall.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/placeholder.js":{"text":"/*\\\n\nA method which doles out placeholders when requested, and constructs\nthe necessary supporting pragma when requested.\n\n\\*/\n\nvar utils = require('../utils');\n\nfunction Placeholder() {\n\tthis.placeholders = Object.create(null);\n\tthis.reverseMap = {};\n\tthis.used = Object.create(null);\n};\n\nmodule.exports = Placeholder;\n\nPlaceholder.prototype.getPlaceholderFor = function(value, category) {\n\tthis.reverseMap[category] = this.reverseMap[category] || Object.create(null);\n\tvar placeholder = this.reverseMap[category][value];\n\tif (placeholder) {\n\t\treturn placeholder;\n\t}\n\tvar config = (this.parser && this.parser.context) || utils.getWikiContext(this.parser.wiki);\n\tvar number = 0;\n\tvar prefix = \"relink-\"\n\tif (category && category !== \"title\") {\n\t\t// I don't like \"relink-title-1\". \"relink-1\" should be for\n\t\t// titles. lists, and filters can have descriptors though.\n\t\tprefix += category + \"-\";\n\t}\n\tdo {\n\t\tnumber += 1;\n\t\tplaceholder = prefix + number;\n\t} while (config.getMacroDefinition(placeholder) || this.used[placeholder]);\n\tthis.placeholders[placeholder] = value;\n\tthis.reverseMap[category][value] = placeholder;\n\tthis.used[placeholder] = true;\n\treturn placeholder;\n};\n\n// For registering placeholders that already existed\nPlaceholder.prototype.registerExisting = function(key, value) {\n\tthis.reverseMap[value] = key;\n\tthis.used[key] = true;\n};\n\nPlaceholder.prototype.getPreamble = function() {\n\tvar results = [];\n\tvar keys = Object.keys(this.placeholders);\n\tif (keys.length > 0) {\n\t\tkeys.sort();\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tvar name = keys[i];\n\t\t\tvar val = this.placeholders[name];\n\t\t\tresults.push(\"\\\\define \"+name+\"() \"+val+\"\\n\");\n\t\t}\n\t}\n\treturn results.join('');\n};\n\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils/placeholder.js","type":"application/javascript"},"$:/plugins/flibbles/relink/js/utils/rebuilder.js":{"text":"/*\\\n\nThis helper class aids in reconstructing an existing string with new parts.\n\n\\*/\n\nfunction Rebuilder(text, start) {\n\tthis.text = text;\n\tthis.index = start || 0;\n\tthis.pieces = [];\n};\n\nmodule.exports = Rebuilder;\n\n/**Pieces must be added consecutively.\n * Start and end are the indices in the old string specifying where to graft\n * in the new piece.\n */\nRebuilder.prototype.add = function(value, start, end) {\n\tthis.pieces.push(this.text.substring(this.index, start), value);\n\tthis.index = end;\n};\n\nRebuilder.prototype.changed = function() {\n\treturn this.pieces.length > 0;\n};\n\nRebuilder.prototype.results = function(end) {\n\tif (this.changed()) {\n\t\tthis.pieces.push(this.text.substring(this.index, end));\n\t\treturn this.pieces.join('');\n\t}\n\treturn undefined;\n};\n","module-type":"library","title":"$:/plugins/flibbles/relink/js/utils/rebuilder.js","type":"application/javascript"},"$:/plugins/flibbles/relink/Filters/Missing":{"title":"$:/plugins/flibbles/relink/Filters/Missing","description":"{{$:/plugins/flibbles/relink/language/Filters/Missing}}","filter":"[all[]!is[system]relink:references[]!is[tiddler]!is[shadow]!prefix[$:/tags/]sort[title]] -[[]]","tags":"$:/tags/Filter"},"$:/plugins/flibbles/relink/Filters/Orphans":{"title":"$:/plugins/flibbles/relink/Filters/Orphans","description":"{{$:/plugins/flibbles/relink/language/Filters/Orphans}}","filter":"[relink:orphans[]!is[system]sort[title]]","tags":"$:/tags/Filter"},"$:/config/flibbles/relink/attributes/$action-deletefield/$tiddler":{"title":"$:/config/flibbles/relink/attributes/$action-deletefield/$tiddler","text":"filter"},"$:/config/flibbles/relink/attributes/$action-deletetiddler/$filter":{"title":"$:/config/flibbles/relink/attributes/$action-deletetiddler/$filter","text":"filter"},"$:/config/flibbles/relink/attributes/$action-deletetiddler/$tiddler":{"title":"$:/config/flibbles/relink/attributes/$action-deletetiddler/$tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$action-listops/$filter":{"title":"$:/config/flibbles/relink/attributes/$action-listops/$filter","text":"filter"},"$:/config/flibbles/relink/attributes/$action-listops/$tiddler":{"title":"$:/config/flibbles/relink/attributes/$action-listops/$tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$action-log/$$filter":{"title":"$:/config/flibbles/relink/attributes/$action-log/$$filter","text":"filter"},"$:/config/flibbles/relink/attributes/$action-navigate/$to":{"title":"$:/config/flibbles/relink/attributes/$action-navigate/$to","text":"title"},"$:/config/flibbles/relink/attributes/$action-popup/$state":{"title":"$:/config/flibbles/relink/attributes/$action-popup/$state","text":"title"},"$:/config/flibbles/relink/attributes/$action-sendmessage/$names":{"title":"$:/config/flibbles/relink/attributes/$action-sendmessage/$names","text":"filter"},"$:/config/flibbles/relink/attributes/$action-sendmessage/$values":{"title":"$:/config/flibbles/relink/attributes/$action-sendmessage/$values","text":"filter"},"$:/config/flibbles/relink/attributes/$action-setfield/$tiddler":{"title":"$:/config/flibbles/relink/attributes/$action-setfield/$tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$tiddler":{"title":"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$fields":{"title":"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$fields","text":"filter"},"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$indexes":{"title":"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$indexes","text":"filter"},"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$values":{"title":"$:/config/flibbles/relink/attributes/$action-setmultiplefields/$values","text":"filter"},"$:/config/flibbles/relink/attributes/$button/actions":{"title":"$:/config/flibbles/relink/attributes/$button/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$button/set":{"title":"$:/config/flibbles/relink/attributes/$button/set","text":"reference"},"$:/config/flibbles/relink/attributes/$button/setTo":{"title":"$:/config/flibbles/relink/attributes/$button/setTo","text":"title"},"$:/config/flibbles/relink/attributes/$button/to":{"title":"$:/config/flibbles/relink/attributes/$button/to","text":"title"},"$:/config/flibbles/relink/attributes/$checkbox/actions":{"title":"$:/config/flibbles/relink/attributes/$checkbox/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$checkbox/checkactions":{"title":"$:/config/flibbles/relink/attributes/$checkbox/checkactions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$checkbox/tiddler":{"title":"$:/config/flibbles/relink/attributes/$checkbox/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$checkbox/tag":{"title":"$:/config/flibbles/relink/attributes/$checkbox/tag","text":"title"},"$:/config/flibbles/relink/attributes/$checkbox/uncheckactions":{"title":"$:/config/flibbles/relink/attributes/$checkbox/uncheckactions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$count/filter":{"title":"$:/config/flibbles/relink/attributes/$count/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$draggable/tiddler":{"title":"$:/config/flibbles/relink/attributes/$draggable/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$draggable/filter":{"title":"$:/config/flibbles/relink/attributes/$draggable/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$droppable/actions":{"title":"$:/config/flibbles/relink/attributes/$droppable/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$dropzone/actions":{"title":"$:/config/flibbles/relink/attributes/$dropzone/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler":{"title":"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$edit-text/tiddler":{"title":"$:/config/flibbles/relink/attributes/$edit-text/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$edit/inputActions":{"title":"$:/config/flibbles/relink/attributes/$edit/inputActions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$edit/refreshTitle":{"title":"$:/config/flibbles/relink/attributes/$edit/refreshTitle","text":"title"},"$:/config/flibbles/relink/attributes/$edit/tiddler":{"title":"$:/config/flibbles/relink/attributes/$edit/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$encrypt/filter":{"title":"$:/config/flibbles/relink/attributes/$encrypt/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler":{"title":"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$fields/tiddler":{"title":"$:/config/flibbles/relink/attributes/$fields/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$genesis/$names":{"title":"$:/config/flibbles/relink/attributes/$genesis/$names","text":"filter"},"$:/config/flibbles/relink/attributes/$genesis/$values":{"title":"$:/config/flibbles/relink/attributes/$genesis/$values","text":"filter"},"$:/config/flibbles/relink/attributes/$image/source":{"title":"$:/config/flibbles/relink/attributes/$image/source","text":"title"},"$:/config/flibbles/relink/attributes/$importvariables/filter":{"title":"$:/config/flibbles/relink/attributes/$importvariables/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$jsontiddler/tiddler":{"title":"$:/config/flibbles/relink/attributes/$jsontiddler/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$keyboard/actions":{"title":"$:/config/flibbles/relink/attributes/$keyboard/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$linkcatcher/to":{"title":"$:/config/flibbles/relink/attributes/$linkcatcher/to","text":"title"},"$:/config/flibbles/relink/attributes/$linkcatcher/set":{"title":"$:/config/flibbles/relink/attributes/$linkcatcher/set","text":"title"},"$:/config/flibbles/relink/attributes/$link/to":{"title":"$:/config/flibbles/relink/attributes/$link/to","text":"title"},"$:/config/flibbles/relink/attributes/$link/tooltip":{"title":"$:/config/flibbles/relink/attributes/$link/tooltip","text":"wikitext"},"$:/config/flibbles/relink/attributes/$linkcatcher/actions":{"title":"$:/config/flibbles/relink/attributes/$linkcatcher/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$list/filter":{"title":"$:/config/flibbles/relink/attributes/$list/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$list/template":{"title":"$:/config/flibbles/relink/attributes/$list/template","text":"title"},"$:/config/flibbles/relink/attributes/$list/editTemplate":{"title":"$:/config/flibbles/relink/attributes/$list/editTemplate","text":"title"},"$:/config/flibbles/relink/attributes/$list/emptyMessage":{"title":"$:/config/flibbles/relink/attributes/$list/emptyMessage","text":"wikitext"},"$:/config/flibbles/relink/attributes/$list/history":{"title":"$:/config/flibbles/relink/attributes/$list/history","text":"title"},"$:/config/flibbles/relink/attributes/$log/$$filter":{"title":"$:/config/flibbles/relink/attributes/$log/$$filter","text":"filter"},"$:/config/flibbles/relink/attributes/$messagecatcher/actions":{"title":"$:/config/flibbles/relink/attributes/$messagecatcher/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$navigator/story":{"title":"$:/config/flibbles/relink/attributes/$navigator/story","text":"title"},"$:/config/flibbles/relink/attributes/$navigator/history":{"title":"$:/config/flibbles/relink/attributes/$navigator/history","text":"title"},"$:/config/flibbles/relink/attributes/$radio/actions":{"title":"$:/config/flibbles/relink/attributes/$radio/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$radio/tiddler":{"title":"$:/config/flibbles/relink/attributes/$radio/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$range/actions":{"title":"$:/config/flibbles/relink/attributes/$range/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$range/actionsStart":{"title":"$:/config/flibbles/relink/attributes/$range/actionsStart","text":"wikitext"},"$:/config/flibbles/relink/attributes/$range/actionsStop":{"title":"$:/config/flibbles/relink/attributes/$range/actionsStop","text":"wikitext"},"$:/config/flibbles/relink/attributes/$range/tiddler":{"title":"$:/config/flibbles/relink/attributes/$range/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$reveal/state":{"title":"$:/config/flibbles/relink/attributes/$reveal/state","text":"reference"},"$:/config/flibbles/relink/attributes/$reveal/stateTitle":{"title":"$:/config/flibbles/relink/attributes/$reveal/stateTitle","text":"title"},"$:/config/flibbles/relink/attributes/$select/actions":{"title":"$:/config/flibbles/relink/attributes/$select/actions","text":"wikitext"},"$:/config/flibbles/relink/attributes/$select/tiddler":{"title":"$:/config/flibbles/relink/attributes/$select/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/tiddler":{"title":"$:/config/flibbles/relink/attributes/$setvariable/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$setvariable/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$setvariable/filter":{"title":"$:/config/flibbles/relink/attributes/$setvariable/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$set/tiddler":{"title":"$:/config/flibbles/relink/attributes/$set/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$set/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$set/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$set/filter":{"title":"$:/config/flibbles/relink/attributes/$set/filter","text":"filter"},"$:/config/flibbles/relink/attributes/$setmultiplevariables/$names":{"title":"$:/config/flibbles/relink/attributes/$setmultiplevariables/$names","text":"filter"},"$:/config/flibbles/relink/attributes/$setmultiplevariables/$values":{"title":"$:/config/flibbles/relink/attributes/$setmultiplevariables/$values","text":"filter"},"$:/config/flibbles/relink/attributes/$tiddler/tiddler":{"title":"$:/config/flibbles/relink/attributes/$tiddler/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$transclude/tiddler":{"title":"$:/config/flibbles/relink/attributes/$transclude/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$transclude/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$transclude/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$view/tiddler":{"title":"$:/config/flibbles/relink/attributes/$view/tiddler","text":"title"},"$:/config/flibbles/relink/attributes/$view/subtiddler":{"title":"$:/config/flibbles/relink/attributes/$view/subtiddler","text":"title"},"$:/config/flibbles/relink/attributes/$wikify/text":{"title":"$:/config/flibbles/relink/attributes/$wikify/text","text":"wikitext"},"$:/plugins/flibbles/relink/configuration":{"title":"$:/plugins/flibbles/relink/configuration","text":"\\whitespace trim\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/flibbles/relink/Configuration]!has[draft.of]]\" \"$:/plugins/flibbles/relink/ui/configuration/Fields\">>\n</div>\n"},"$:/config/flibbles/relink/fieldattributes/$action-createtiddler":{"title":"$:/config/flibbles/relink/fieldattributes/$action-createtiddler","text":"([^$].*)"},"$:/config/flibbles/relink/fieldattributes/$action-deletefield":{"title":"$:/config/flibbles/relink/fieldattributes/$action-deletefield","text":"([^$].*)"},"$:/config/flibbles/relink/fieldattributes/$action-setfield":{"title":"$:/config/flibbles/relink/fieldattributes/$action-setfield","text":"([^$].*)"},"$:/config/flibbles/relink/fieldattributes/$jsontiddler":{"title":"$:/config/flibbles/relink/fieldattributes/$jsontiddler","text":"\\$(.*)"},"$:/config/flibbles/relink/fields/caption":{"title":"$:/config/flibbles/relink/fields/caption","text":"wikitext"},"$:/config/flibbles/relink/fields/filter":{"title":"$:/config/flibbles/relink/fields/filter","text":"filter"},"$:/config/flibbles/relink/fields/list":{"title":"$:/config/flibbles/relink/fields/list","text":"list"},"$:/config/flibbles/relink/fields/list-after":{"title":"$:/config/flibbles/relink/fields/list-after","text":"title"},"$:/config/flibbles/relink/fields/list-before":{"title":"$:/config/flibbles/relink/fields/list-before","text":"title"},"$:/config/flibbles/relink/fields/tags":{"title":"$:/config/flibbles/relink/fields/tags","text":"list"},"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint","text":"delete"},"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint","text":"go to defining tiddler"},"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint","text":"Specify a new widget/element attribute to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint","text":"Specify a new field to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint","text":"Specify a new filter operator to be considered whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint","text":"Specify a new macro parameter to be updated whenever a tiddler is renamed"},"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption":{"title":"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption","text":"add"},"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName","text":"Illegal characters in attribute name \"<$text text=<<attributeName>>/>\". Attributes cannot contain slashes ('/'), closing angle or square brackets ('>' or ']'), quotes or apostrophes ('\"' or \"'\"), equals ('='), or whitespace"},"$:/plugins/flibbles/relink/language/Error/InvalidElementName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidElementName","text":"Illegal characters in element/widget name \"<$text text=<<elementName>>/>\". Element tags can only contain letters and the characters hyphen (`-`) and dollar sign (`$`)"},"$:/plugins/flibbles/relink/language/Error/InvalidMacroName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidMacroName","text":"Illegal characters in macro name \"<$text text=<<macroName>>/>\". Macros cannot contain whitespace"},"$:/plugins/flibbles/relink/language/Error/InvalidParameterName":{"title":"$:/plugins/flibbles/relink/language/Error/InvalidParameterName","text":"Illegal characters in parameter name \"<$text text=<<parameterName>>/>\". Parameters can only contain letters, digits, and the characters underscore (`_`) and hyphen (`-`)"},"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator":{"title":"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator","text":"Filter Error: Unknown suffix for the 'relink' filter operator"},"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks":{"title":"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks","text":"Relink could not update '<<from>>' to '<<to>>' inside the following tiddlers:"},"$:/plugins/flibbles/relink/language/Error/UnrecognizedType":{"title":"$:/plugins/flibbles/relink/language/Error/UnrecognizedType","text":"Relink parse error: Unrecognized field type '<<type>>'"},"$:/plugins/flibbles/relink/language/Filters/Missing":{"title":"$:/plugins/flibbles/relink/language/Filters/Missing","text":"//Relink// Missing tiddlers"},"$:/plugins/flibbles/relink/language/Filters/Orphans":{"title":"$:/plugins/flibbles/relink/language/Filters/Orphans","text":"//Relink// Orphans tiddlers"},"$:/plugins/flibbles/relink/language/Help/Attributes":{"title":"$:/plugins/flibbles/relink/language/Help/Attributes","text":"See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Attributes]]}}} class=\"tc-tiddlylink-external\">Attributes documentation page</a> for details."},"$:/plugins/flibbles/relink/language/Help/Fields":{"title":"$:/plugins/flibbles/relink/language/Help/Fields","text":"See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Fields]]}}} class=\"tc-tiddlylink-external\">Fields documentation page</a> for details."},"$:/plugins/flibbles/relink/language/Help/Macros":{"title":"$:/plugins/flibbles/relink/language/Help/Macros","text":"See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Macros]]}}} class=\"tc-tiddlylink-external\">Macros documentation page</a> for details."},"$:/plugins/flibbles/relink/language/Help/Operators":{"title":"$:/plugins/flibbles/relink/language/Help/Operators","text":"See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Operators]]}}} class=\"tc-tiddlylink-external\">Operators documentation page</a> for details."},"$:/plugins/flibbles/relink/language/SideBar/Missing/Caption":{"title":"$:/plugins/flibbles/relink/language/SideBar/Missing/Caption","text":"//Relink//<br>Missing"},"$:/plugins/flibbles/relink/language/SideBar/Orphans/Caption":{"title":"$:/plugins/flibbles/relink/language/SideBar/Orphans/Caption","text":"//Relink//<br>Orphans"},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty":{"title":"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty","text":"No tiddlers contain any fields, links, macros, transclusions, or widgets referencing this one"},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description":{"title":"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description","text":"The following tiddlers contain fields, links, macros, transclusions, or widgets referencing this one:"},"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption":{"title":"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption","text":"//Relink// References"},"$:/plugins/flibbles/relink/language/ui/Attributes/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Attributes/Caption","text":"Attributes"},"$:/plugins/flibbles/relink/language/ui/Fields/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Fields/Caption","text":"Fields"},"$:/plugins/flibbles/relink/language/ui/Macros/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Macros/Caption","text":"Macros"},"$:/plugins/flibbles/relink/language/ui/Operators/Caption":{"title":"$:/plugins/flibbles/relink/language/ui/Operators/Caption","text":"Operators"},"$:/plugins/flibbles/relink/language/Warning/OldRelinkTextOperator":{"title":"$:/plugins/flibbles/relink/language/Warning/OldRelinkTextOperator","text":"Relink cannot parse your <code>$$$<<keyword>></code> wikitext until you migrate your \"<<type>>\" relink module from the deprecated ''relinktextoperator'' module-type to ''relinktext''.<br><br>See <a href={{{ [[Versions/2.1.0]addprefix[#]addprefix{$:/plugins/flibbles/relink!!demo}encodeuri[]] }}} class=\"tc-tiddlylink-external\">the online documentation</a> for details."},"$:/plugins/flibbles/relink/license":{"title":"$:/plugins/flibbles/relink/license","type":"text/vnd.tiddlywiki","text":"<a href={{$:/plugins/flibbles/relink!!demo}} class=\"tc-tiddlylink-external\">Relink Plugin</a> Copyright (c) 2019-<<now YYYY>> Cameron Fischer\n\n[[BSD 3-Clause License|https://raw.githubusercontent.com/flibbles/tw5-relink/master/LICENSE]]\n"},"$:/config/flibbles/relink/macros/colour-picker/actions":{"title":"$:/config/flibbles/relink/macros/colour-picker/actions","text":"wikitext"},"$:/config/flibbles/relink/macros/csvtiddlers/filter":{"title":"$:/config/flibbles/relink/macros/csvtiddlers/filter","text":"filter"},"$:/config/flibbles/relink/macros/datauri/title":{"title":"$:/config/flibbles/relink/macros/datauri/title","text":"title"},"$:/config/flibbles/relink/macros/image-picker/actions":{"title":"$:/config/flibbles/relink/macros/image-picker/actions","text":"wikitext"},"$:/config/flibbles/relink/macros/jsontiddler/title":{"title":"$:/config/flibbles/relink/macros/jsontiddler/title","text":"title"},"$:/config/flibbles/relink/macros/jsontiddlers/filter":{"title":"$:/config/flibbles/relink/macros/jsontiddlers/filter","text":"filter"},"$:/config/flibbles/relink/macros/keyboard-driven-input/configTiddlerFilter":{"title":"$:/config/flibbles/relink/macros/keyboard-driven-input/configTiddlerFilter","text":"filter"},"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptActions":{"title":"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptActions","text":"wikitext"},"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptVariantActions":{"title":"$:/config/flibbles/relink/macros/keyboard-driven-input/inputAcceptVariantActions","text":"wikitext"},"$:/config/flibbles/relink/macros/keyboard-driven-input/inputCancelActions":{"title":"$:/config/flibbles/relink/macros/keyboard-driven-input/inputCancelActions","text":"wikitext"},"$:/config/flibbles/relink/macros/keyboard-driven-input/selectionStateTitle":{"title":"$:/config/flibbles/relink/macros/keyboard-driven-input/selectionStateTitle","text":"title"},"$:/config/flibbles/relink/macros/keyboard-driven-input/storeTitle":{"title":"$:/config/flibbles/relink/macros/keyboard-driven-input/storeTitle","text":"title"},"$:/config/flibbles/relink/macros/keyboard-driven-input/tiddler":{"title":"$:/config/flibbles/relink/macros/keyboard-driven-input/tiddler","text":"title"},"$:/config/flibbles/relink/macros/list-links/filter":{"title":"$:/config/flibbles/relink/macros/list-links/filter","text":"filter"},"$:/config/flibbles/relink/macros/list-links/emptyMessage":{"title":"$:/config/flibbles/relink/macros/list-links/emptyMessage","text":"wikitext"},"$:/config/flibbles/relink/macros/list-links-draggable/tiddler":{"title":"$:/config/flibbles/relink/macros/list-links-draggable/tiddler","text":"title"},"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate":{"title":"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate","text":"title"},"$:/config/flibbles/relink/macros/list-tagged-draggable/tag":{"title":"$:/config/flibbles/relink/macros/list-tagged-draggable/tag","text":"title"},"$:/config/flibbles/relink/macros/list-tagged-draggable/emptyMessage":{"title":"$:/config/flibbles/relink/macros/list-tagged-draggable/emptyMessage","text":"wikitext"},"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate":{"title":"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate","text":"title"},"$:/config/flibbles/relink/macros/list-thumbnails/filter":{"title":"$:/config/flibbles/relink/macros/list-thumbnails/filter","text":"filter"},"$:/config/flibbles/relink/macros/tabs/actions":{"title":"$:/config/flibbles/relink/macros/tabs/actions","text":"wikitext"},"$:/config/flibbles/relink/macros/tabs/buttonTemplate":{"title":"$:/config/flibbles/relink/macros/tabs/buttonTemplate","text":"title"},"$:/config/flibbles/relink/macros/tabs/default":{"title":"$:/config/flibbles/relink/macros/tabs/default","text":"title"},"$:/config/flibbles/relink/macros/tabs/tabsList":{"title":"$:/config/flibbles/relink/macros/tabs/tabsList","text":"filter"},"$:/config/flibbles/relink/macros/tabs/template":{"title":"$:/config/flibbles/relink/macros/tabs/template","text":"title"},"$:/config/flibbles/relink/macros/tag/tag":{"title":"$:/config/flibbles/relink/macros/tag/tag","text":"title"},"$:/config/flibbles/relink/macros/tag-picker/actions":{"title":"$:/config/flibbles/relink/macros/tag-picker/actions","text":"wikitext"},"$:/config/flibbles/relink/macros/tag-pill/actions":{"title":"$:/config/flibbles/relink/macros/tag-pill/actions","text":"wikitext"},"$:/config/flibbles/relink/macros/tag-pill/tag":{"title":"$:/config/flibbles/relink/macros/tag-pill/tag","text":"title"},"$:/config/flibbles/relink/macros/toc/tag":{"title":"$:/config/flibbles/relink/macros/toc/tag","text":"title"},"$:/config/flibbles/relink/macros/toc/itemClassFilter":{"title":"$:/config/flibbles/relink/macros/toc/itemClassFilter","text":"filter"},"$:/config/flibbles/relink/macros/toc-expandable/tag":{"title":"$:/config/flibbles/relink/macros/toc-expandable/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter":{"title":"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter","text":"filter"},"$:/config/flibbles/relink/macros/toc-expandable/exclude":{"title":"$:/config/flibbles/relink/macros/toc-expandable/exclude","text":"list"},"$:/config/flibbles/relink/macros/toc-selective-expandable/tag":{"title":"$:/config/flibbles/relink/macros/toc-selective-expandable/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter":{"title":"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter","text":"filter"},"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude":{"title":"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude","text":"list"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler","text":"title"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText","text":"wikitext"},"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template":{"title":"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template","text":"title"},"$:/config/flibbles/relink/operators/filter":{"title":"$:/config/flibbles/relink/operators/filter","text":"filter"},"$:/config/flibbles/relink/operators/list":{"title":"$:/config/flibbles/relink/operators/list","text":"reference"},"$:/config/flibbles/relink/operators/subfilter":{"title":"$:/config/flibbles/relink/operators/subfilter","text":"filter"},"$:/config/flibbles/relink/operators/tag":{"title":"$:/config/flibbles/relink/operators/tag","text":"title"},"$:/config/flibbles/relink/operators/title":{"title":"$:/config/flibbles/relink/operators/title","text":"title"},"$:/config/flibbles/relink/operators/field:title":{"title":"$:/config/flibbles/relink/operators/field:title","text":"title"},"$:/config/flibbles/relink/operators/relink:report":{"title":"$:/config/flibbles/relink/operators/relink:report","text":"title"},"$:/language/EditTemplate/Title/Impossibles/Prompt":{"title":"$:/language/EditTemplate/Title/Impossibles/Prompt","text":"''Warning:'' Not all references in the following tiddlers can be updated by //Relink// due to the complexity of the new title:"},"$:/language/EditTemplate/Title/References/Prompt":{"title":"$:/language/EditTemplate/Title/References/Prompt","text":"The following tiddlers will be updated if relinking:"},"$:/language/EditTemplate/Title/Relink/Prompt":{"title":"$:/language/EditTemplate/Title/Relink/Prompt","text":"Use //Relink// to update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' across all other tiddlers"},"$:/core/ui/EditTemplate/title":{"title":"$:/core/ui/EditTemplate/title","tags":"$:/tags/EditTemplate","text":"\\whitespace trim\n<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\" tabindex={{$:/config/EditTabIndex}}/>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$tiddler tiddler=<<fromTitle>> >\n\n<$list filter=\"[relink:wouldchange<toTitle>limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$set\n\tname=\"prompt\"\n\tfilter=\"[relink:wouldchange<toTitle>relink:impossible<toTitle>]\"\n\tvalue=\"EditTemplate/Title/Impossibles/Prompt\"\n\temptyValue=\"EditTemplate/Title/References/Prompt\" >\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n \n<$macrocall $name=lingo title=<<prompt>> />\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n \n<$macrocall $name=lingo title=<<prompt>> />\n</$button>\n</$reveal>\n</$set>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$list variable=\"listItem\" filter=\"[relink:wouldchange<toTitle>!title[$:/StoryList]sort[title]]\" template=\"$:/plugins/flibbles/relink/ui/ListItemTemplate\">\n</$list>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$tiddler>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"},"$:/config/flibbles/relink/PluginLibrary":{"title":"$:/config/flibbles/relink/PluginLibrary","caption":"//Relink// Library","url":"https://flibbles.github.io/tw5-relink/library/index.html","tags":"$:/tags/PluginLibrary","text":"The //Relink// library contains //Relink// as well as its supplemental plugins. It is maintained by Flibbles. See the [[github page|https://github.com/flibbles/tw5-relink]] for more information.\n"},"$:/plugins/flibbles/relink/readme":{"title":"$:/plugins/flibbles/relink/readme","type":"text/vnd.tiddlywiki","text":"When renaming a tiddler, Relink can update the fields, filters, and widgets\nof all other tiddlers. However, it works through whitelisting.\n\nIt's already configured to update tiddler titles for all core widgets, filters,\nand fields, but the whitelists can be customized for each of this in the\nconfiguration panel.\n\nSee <a href={{$:/plugins/flibbles/relink!!source}} class=\"tc-tiddlylink-external\">the tw5-relink website</a> for more details and examples.\n"},"$:/config/flibbles/relink/settings/default-type":{"title":"$:/config/flibbles/relink/settings/default-type","text":"title"},"$:/config/flibbles/relink/touch-modify":{"title":"$:/config/flibbles/relink/touch-modify","text":"yes"},"$:/config/DefaultColourMappings/relink-impossible":{"title":"$:/config/DefaultColourMappings/relink-impossible","text":"<<colour dirty-indicator>>"},"$:/language/Docs/PaletteColours/relink-impossible":{"title":"$:/language/Docs/PaletteColours/relink-impossible","text":"Relink link impossible"},"$:/plugins/flibbles/relink/ui/ListItemTemplate":{"title":"$:/plugins/flibbles/relink/ui/ListItemTemplate","text":"\\whitespace trim\n<$set\n\tname=\"classes\"\n\tfilter=\"[<listItem>relink:impossible<toTitle>]\"\n\tvalue=\"tc-menu-list-item tc-relink-impossible\"\n\temptyValue=\"tc-menu-list-item\">\n<div class=<<classes>>>\n<$link to=<<listItem>>><$text text=<<listItem>> /></$link>\n</div>\n</$set>\n"},"$:/plugins/flibbles/relink/ui/ListItemWithBlurbTemplate":{"title":"$:/plugins/flibbles/relink/ui/ListItemWithBlurbTemplate","text":"<div class=\"tc-menu-list-item\"><$link /></div>\n<$list variable=blurb filter=\"[<currentTiddler>relink:report<missingTiddler>]\"><div class=\"tc-relink-menu-missing-blurb\"><$text text=<<blurb>> /></div>\n"},"$:/plugins/flibbles/relink/ui/MissingTemplate":{"title":"$:/plugins/flibbles/relink/ui/MissingTemplate","text":"\\whitespace trim\n<$set name=\"missingTiddler\" value=<<currentTiddler>> >\n<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/relink/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/relink/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]relink:backreferences[]sort[title]]\" template=\"$:/plugins/flibbles/relink/ui/ListItemWithBlurbTemplate\"/>\n</div>\n</$reveal>\n</div>\n</$set>\n"},"$:/plugins/flibbles/relink/ui/MoreSideBar/Missing":{"title":"$:/plugins/flibbles/relink/ui/MoreSideBar/Missing","caption":"{{$:/plugins/flibbles/relink/language/SideBar/Missing/Caption}}","tags":"$:/tags/MoreSideBar","text":"<$list filter={{$:/plugins/flibbles/relink/Filters/Missing!!filter}} template=\"$:/plugins/flibbles/relink/ui/MissingTemplate\" />\n"},"$:/plugins/flibbles/relink/ui/MoreSideBar/Orphans":{"title":"$:/plugins/flibbles/relink/ui/MoreSideBar/Orphans","caption":"{{$:/plugins/flibbles/relink/language/SideBar/Orphans/Caption}}","tags":"$:/tags/MoreSideBar","text":"<$list filter={{$:/plugins/flibbles/relink/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\" />\n"},"$:/plugins/flibbles/relink/ui/TiddlerInfo/References":{"title":"$:/plugins/flibbles/relink/ui/TiddlerInfo/References","caption":"{{$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption}}","tags":"$:/tags/TiddlerInfo","text":"\\define lingo-base() $:/plugins/flibbles/relink/language/TiddlerInfo/\n\\define filter() [all[current]relink:backreferences[]!title[$:/StoryList]!prefix[$:/temp/]sort[title]]\n\\whitespace trim\n<$list filter=\"[subfilter<filter>first[]]\">\n<<lingo References/Description>>\n</$list>\n<table class=\"tc-relink-references-table\">\n<tbody>\n<$list filter=<<filter>> emptyMessage=<<lingo References/Empty>> variable=\"listItem\" template=\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\" />\n</tbody>\n</table>\n"},"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate":{"title":"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate","text":"\\whitespace trim\n<tr class=\"tc-relink-references\">\n<td class=\"tc-relink-references-title\">\n<$link to=<<listItem>>/>\n</td>\n<td class=\"tc-relink-references-report\">\n<$list filter=\"[<listItem>relink:report<currentTiddler>]\">\n\n<$text text=<<currentTiddler>> />\n</$list>\n\n</td>\n</tr>\n"},"$:/plugins/flibbles/relink/ui/components/button-delete":{"title":"$:/plugins/flibbles/relink/ui/components/button-delete","text":"\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define prefix() $:/config/flibbles/relink/\n\\whitespace trim\n\n<$list\n\tfilter=\"[all[current]prefix<prefix>]\"\n\temptyMessage=\"<$link><$button class='tc-btn-invisible' tooltip={{$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint}}>{{$:/core/images/link}}</$button></$link>\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/plugins/flibbles/relink/language/Buttons/Delete/Hint}}><$list filter=\"[all[current]is[tiddler]]\">\n<$action-deletetiddler $tiddler=<<currentTiddler>> />\n</$list><$list filter=\"[all[current]is[shadow]]\">\n<$action-setfield $tiddler=<<tiddlerName>> text=\"\" />\n</$list>\n{{$:/core/images/delete-button}}\n</$button>\n</$list>\n"},"$:/plugins/flibbles/relink/ui/components/select-fieldtype":{"title":"$:/plugins/flibbles/relink/ui/components/select-fieldtype","text":"\\define prefix() $:/config/flibbles/relink/\n\\whitespace trim\n\n<$vars type={{{ [<signature>relink:type[]] }}} >\n<$list filter=\"[all[current]prefix<prefix>]\" >\n<$select tiddler=<<currentTiddler>> >\n<$list variable=\"option\" filter=\"[relink:types[]]\">\n<option><$text text=<<option>> /></option>\n</$list>\n</$select>\n</$list><$list filter=\"[all[current]!prefix<prefix>]\">\n<$text text=<<type>> />\n</$list>\n</$vars>\n"},"$:/plugins/flibbles/relink/ui/components/tables":{"title":"$:/plugins/flibbles/relink/ui/components/tables","text":"\\define .make-table(title, plugin, default-table-state:yes)\n\\whitespace trim\n\n<$list variable=\"render\" filter=\"[relink:signatures<__plugin__>prefix<__category__>first[]]\">\n<$set name=\"table-state\" value=<<qualify \"\"\"$:/state/flibbles/relink/tables/$title$\"\"\">>>\n<tr><th class=\"tc-relink-header-plugin\" colspan=<<column-count>> >\n<$reveal type=\"nomatch\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<table-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} $title$\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<table-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}} $title$\n</$button>\n</$reveal>\n</th></tr>\n<$list\n\tvariable=\"signature\"\n\tfilter=\"[relink:signatures<__plugin__>prefix<__category__>sort[]]\">\n<$vars key={{{ [<signature>removeprefix<__category__>removeprefix[/]] }}} >\n<$tiddler tiddler={{{[<signature>relink:source[]]}}} >\n<$reveal tag=\"tr\" type=\"match\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$macrocall $name=<<__list-row-macro__>> signature=<<signature>> />\n<td class=\"tc-relink-column-type\">{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td class=\"tc-relink-column-delete\">{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n</$reveal>\n</$tiddler>\n</$vars>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define tables(category, list-row-macro, header-list)\n\\whitespace trim\n<$vars\n\tcolumn-count={{{[enlist<__header-list__>] [[DeleteColumn]] +[count[]]}}}>\n<table class=\"tc-relink-whitelist\"><tbody>\n<tr>\n<$list variable=\"header\" filter=\"[enlist<__header-list__>butlast[]]\"><th><<header>></th></$list>\n<!-- We have the last column extend into the delete/link column, which is unlabeled. -->\n<th colspan=2><$text text={{{ [enlist<__header-list__>last[]] }}} /></th>\n</tr>\n<<.make-table Custom \"\" yes>>\n\n<$list\n\tfilter=\"[plugin-type[plugin]![$:/core]![$:/plugins/flibbles/relink]]\">\n<$set name=\"subtitle\" filter=\"[all[current]has[description]]\" value=\"''{{!!name}}'': <$text text={{!!description}}/>\" emptyValue=\"''{{!!name}}''\" >\n<$macrocall $name=\".make-table\" title=<<subtitle>> plugin=<<currentTiddler>> />\n</$set>\n</$list>\n<<.make-table Core \"$:/plugins/flibbles/relink\">>\n\n</tbody></table>\n</$vars>\n\\end\n"},"$:/plugins/flibbles/relink/ui/configuration/Attributes":{"title":"$:/plugins/flibbles/relink/ui/configuration/Attributes","caption":"{{$:/plugins/flibbles/relink/language/ui/Attributes/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-attr() $:/config/flibbles/relink/attributes/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define element-name-tiddler() $:/state/flibbles/relink/element-name\n\\define attribute-name-tiddler() $:/state/flibbles/relink/attribute-name\n\n\\define row()\n\\whitespace trim\n<$set name='element'\n value={{{[<key>splitbefore[/]removesuffix[/]]}}}>\n<$set name=\"attribute\"\n value={{{[<key>removeprefix<element>removeprefix[/]]}}}>\n<td><$text text=<<element>> /></td>\n<td><$text text=<<attribute>> /></td>\n</$set></$set>\n\\end\n\\define body()\n\\whitespace trim\n\n<em class=\"tc-edit\">Add a new attribute:</em>\n \n<$edit-text\n\ttiddler=<<element-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"widget/element\" />\n \n<$edit-text\n\ttiddler=<<attribute-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"attribute\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<<element-name-tiddler>> >\n<$reveal type=\"nomatch\" text=\"\" state=<<attribute-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewAttribute/Hint}}\n\taria-label={{$(lingo-base)$NewAttribute/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-attribute\"\n\telement={{$(element-name-tiddler)$}}\n\tattribute={{$(attribute-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<attribute-name-tiddler>> />\n<$action-deletetiddler $tiddler=<<element-name-tiddler>> />\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<attribute-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<element-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$reveal>\n<$macrocall\n\t$name=tables\n\tcategory=\"attributes\"\n\theader-list=\"[[Widget/HTML Element]] Attribute Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Attributes}}\n\n<<body>>\n"},"$:/plugins/flibbles/relink/ui/configuration/Fields":{"title":"$:/plugins/flibbles/relink/ui/configuration/Fields","caption":"{{$:/plugins/flibbles/relink/language/ui/Fields/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define field-name-tiddler() $:/state/flibbles/relink/field-name\n\n\\define row()\n<td><$text text=<<key>> /></td>\n\\end\n\n\\define body()\n\\whitespace trim\n\n<em class='tc-edit'>Add a new field:</em>\n \n<$edit-text\n\ttiddler=<<field-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"field name\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<<field-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewField/Hint}}\n\taria-label={{$(lingo-base)$NewField/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-field\"\n\tfield={{$(field-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<field-name-tiddler>> />\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<field-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n</$button>\n</$reveal>\n<$macrocall\n\t$name=tables\n\tcategory=\"fields\"\n\theader-list=\"[[Field Name]] [[Field Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Fields}}\n\n<<body>>\n"},"$:/plugins/flibbles/relink/ui/configuration/Macros":{"title":"$:/plugins/flibbles/relink/ui/configuration/Macros","caption":"{{$:/plugins/flibbles/relink/language/ui/Macros/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-macro() $:/config/flibbles/relink/macros/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define macro-name-tiddler() $:/state/flibbles/relink/macro-name\n\\define parameter-name-tiddler() $:/state/flibbles/relink/parameter-name\n\n\\define row()\n\\whitespace trim\n<$set name=\"parameter\"\n value={{{[<key>relink:splitafter[/]]}}}>\n<$set name='macro'\n value={{{[<key>removesuffix<parameter>removesuffix[/]]}}}>\n<td><$text text=<<macro>> /></td>\n<td><$text text=<<parameter>> /></td>\n</$set></$set>\n\\end\n\n\\define body()\n\\whitespace trim\n\n<em class=\"tc-edit\">Add a new macro parameter:</em>\n \n<$edit-text\n\ttiddler=<<macro-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"macro\" />\n \n<$edit-text\n\ttiddler=<<parameter-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"parameter\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<<macro-name-tiddler>> >\n<$reveal type=\"nomatch\" text=\"\" state=<<parameter-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewParameter/Hint}}\n\taria-label={{$(lingo-base)$NewParameter/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-parameter\"\n\tmacro={{$(macro-name-tiddler)$}}\n\tparameter={{$(parameter-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<parameter-name-tiddler>> />\n<$action-deletetiddler $tiddler=<<macro-name-tiddler>> />\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<parameter-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<macro-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$reveal>\n<$macrocall\n\t$name=tables\n\tcategory=\"macros\"\n\theader-list=\"Macro Parameter Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Macros}}\n\n<<body>>\n"},"$:/plugins/flibbles/relink/ui/configuration/Operators":{"title":"$:/plugins/flibbles/relink/ui/configuration/Operators","caption":"{{$:/plugins/flibbles/relink/language/ui/Operators/Caption}}","tags":"$:/tags/flibbles/relink/Configuration","text":"\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define operator-name-tiddler() $:/state/flibbles/relink/operator-name\n\n\\define row()\n<td><$text text=<<key>> /></td>\n\\end\n\n\\define body()\n\\whitespace trim\n\n<em class='tc-edit'>Add a new filter operator:</em>\n \n<$edit-text\n\ttiddler=<<operator-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"operator name\" />\n \n<$reveal type=\"nomatch\" text=\"\" state=<<operator-name-tiddler>>>\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewOperator/Hint}}\n\taria-label={{$(lingo-base)$NewOperator/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-operator\"\n\toperator={{$(operator-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<operator-name-tiddler>> />\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<operator-name-tiddler>>>\n<$button>\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n</$button>\n</$reveal>\n<$macrocall\n\t$name=tables\n\tcategory=\"operators\"\n\theader-list=\"[[Filter Operator]] [[Operand Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n{{$:/plugins/flibbles/relink/language/Help/Operators}}\n\n<<body>>\n"},"$:/plugins/flibbles/relink/ui/stylesheet.css":{"title":"$:/plugins/flibbles/relink/ui/stylesheet.css","tags":"$:/tags/Stylesheet","text":".tc-relink-references {\n}\n\n.tc-relink-references-table {\n\twidth: 100%;\n\tborder: none;\n}\n\n.tc-relink-references-table td {\n\tborder-left: none;\n}\n\n.tc-relink-references-table tr:first-child td {\n\tborder-top: none;\n}\n\n.tc-relink-references-title {\n\ttext-align: left;\n\tvertical-align: top;\n}\n\n.tc-relink-references-occurrence {\n\tfont-style: italic;\n\ttext-align: left;\n\tfont-weight: 200;\n\tpadding-left: 25px;\n\tvertical-align: top;\n}\n\n.tc-relink-header-plugin {\n\ttext-align: left;\n}\n\n.tc-relink-header-plugin button {\n\twidth: 100%\n}\n\n.tc-relink-column-type {\n\twidth: 8em;\n}\n\n.tc-relink-column-type select {\n\twidth: 100%;\n}\n\n.tc-relink-column-delete {\n\tborder-left: none;\n\ttext-align: left;\n}\n\n.tc-relink-column-delete button {\n\tpadding-left: 1em;\n}\n\n.tc-relink-impossible a.tc-tiddlylink {\n\tcolor: <<colour relink-impossible>>;\n}\n\n.tc-relink-menu-missing-blurb {\n\tmargin-left: 30pt;\n}\n"}}}
{"tiddlers":{"$:/plugins/kookma/shiraz/history":{"title":"$:/plugins/kookma/shiraz/history","created":"20210225163850252","modified":"20220802180108923","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log: [[https://kookma.github.io/TW-Shiraz/#ChangeLog]]\n\n* ''2.5.0'' -- 2022.08.02 -- new data block, updated to Tiddlywiki 5.2.3\n* ''2.4.4'' -- 2021.09.19 -- added css class for tbl-expand customization\n* ''2.4.2'' -- 2021.09.10 -- quick table with bunch of column formatting\n* ''2.3.3'' -- 2021.05.20 -- small bug fixes in switch palette\n* ''2.3.1'' -- 2021.05.19 -- tbl-linktype template to be used for generating node-explorer\n* ''2.3.0'' -- 2021.05.10 -- switch palette for dim/dark and light palette selection\n* ''2.2.2'' -- 2021.04.22 -- several issues fixed for pagination, notebook and image classes\n* ''2.2.0'' -- 2021.02.26 -- updated to TW 5.1.23 and pagination added to dynamic tables\n* ''2.1.1'' -- 2020.03.25 -- slider macro with initial status\n* ''2.1.0'' -- 2020.03.23 -- stable release on TW-5.1.22pre\n* ''1.0.0'' -- 2018.10.05 -- first public release\n"},"$:/plugins/kookma/shiraz/images/palette-switch":{"title":"$:/plugins/kookma/shiraz/images/palette-switch","created":"20210510155317562","modified":"20210808052511840","tags":"","type":"text/vnd.tiddlywiki","text":"<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette-button tc-image-button\" viewBox=\"0 0 16 16\"><path d=\"M8 15A7 7 0 1 0 8 1v14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z\"/></svg>"},"$:/plugins/kookma/shiraz/license":{"title":"$:/plugins/kookma/shiraz/license","created":"20210225163850253","modified":"20220726105824045","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2018-2022 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/shiraz/macros/alerts":{"title":"$:/plugins/kookma/shiraz/macros/alerts","created":"20180821095049685","modified":"20210808052511127","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define alert(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n<div class=\"alert alert-$type$ $class$\" style=\"width:$width$;\">\n$src$\n</div>\n\\end\n\n\\define alert-leftbar(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n<div class=\"alert alert-$type$ bg-transparent leftbar border-$type$ $class$\" style=\"width:$width$;\">\n$src$\n</div>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/badge":{"title":"$:/plugins/kookma/shiraz/macros/badge","created":"20181124042103310","modified":"20210808052511132","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define badge(type:\"primary\" src:\"\")\n<span class=\"badge badge-$type$\">$src$</span>\n\\end\n\n\\define badge-pill(type:\"primary\" src:\"\")\n<span class=\"badge badge-pill badge-$type$\">$src$</span>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/card":{"title":"$:/plugins/kookma/shiraz/macros/card","created":"20181124111624466","modified":"20210808052511138","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define card(header:\"Empty\", title:\"Empty\" subtitle:\"Empty\" text:\"Empty\",footer:\"Empty\", width:\"100%\" class:\"\")\n<div class=\"card mb-3 $class$\" style=\"width:$width$;\">\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__header__>> >\n <div class=\"card-header\">$header$</div>\n</$reveal>\n<div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal>\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__subtitle__>> >\n <div class=\"h6 card-subtitle mb-2 text-muted\">$subtitle$</div>\n </$reveal>\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\"><<__text__>></div>\n </$reveal>\n</div>\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <div class=\"card-footer text-muted\">$footer$</div>\n</$reveal>\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/csvtables/apps":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/apps","created":"20210913061439446","modified":"20210914163550428","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define nomenclature(id:nomenclature)\n<<table-csv id:\"$id$\" format:\"katex-inline transclude pu\" class:\"table-borderless\" header:no>>\n\\end\n\n\\define mathbox(id:\"\", format:\"\", delimiter:\",\")\n<<table-csv id:\"$id$\" format:\"transclude katex $format$\" class:\"table-borderless table-mathbox\" header:no delimiter:\"\"\"$delimiter$\"\"\">>\n\\end\n\n\n<!-- \n- these macros uses the table-csv to display nice looking outputs\n- apps means application\n-->"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-basic":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-basic","created":"20210910071657253","modified":"20210910081659382","tags":"","type":"text/vnd.tiddlywiki","text":"\\define text() <$text text=<<entry>> />\n\\define code() <code><<text>></code>\n\\define transclude() <$transclude tiddler=<<entry>> field=title/>\n\n\n<!-- these macro are used by table-csv to display entries -->"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-date":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-date","created":"20210910072339252","modified":"20210910081720853","tags":"","type":"text/vnd.tiddlywiki","text":"\\define date() <$view field=title tiddler={{{[<entry>splitregexp[\\D+]!is[blank]join[]]}}} format=date template=\"YYYY-0MM-0DD\"/>\n\\define shortdate() <$view field=title tiddler={{{[<entry>splitregexp[\\D+]!is[blank]join[]]}}} format=date template=\"mmm DDth, YYYY\"/>\n\\define longdate() <$view field=title tiddler={{{[<entry>splitregexp[\\D+]!is[blank]join[]]}}} format=date template=\"DDD, MMM 0DD, YYYY\"/>\n\n<!-- these macro are used by table-csv to display entries -->"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-math":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-math","created":"20210913061042429","modified":"20220722160253916","tags":"","type":"text/vnd.tiddlywiki","text":"\\define katex() <span class=\"falign\"><$latex text=<<entry>> displayMode=\"true\"></$latex></span>\n\\define katex-inline() <$latex text=<<entry>> displayMode=\"false\"></$latex>\n\\define pu() <$latex text={{{ [<entry>addprefix[\\pu{]addsuffix[}]] }}} displayMode=\"false\"></$latex>\n\\define equation() <$latex text={{{ [<entry>addprefix[\\begin{equation}]addsuffix[\\end{equation}]] }}} displayMode=\"true\"></$latex>\n\n<!-- \n- these macros are used by table-csv to display entries KaTeX\n- pu stands for physical uints\n- the math formating require the official KaTeX plugin is installed!\n- see $:/plugins/kookma/shiraz/styles/csvtable-katex\n-->"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-misc":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-misc","created":"20210910072420649","modified":"20210913204706883","tags":"","type":"text/vnd.tiddlywiki","text":"\\define email() <a class=\"tc-tiddlylink-external\" href=\"mailto:$(entry)$\" rel=\"noopener noreferrer\" target=\"_blank\"><<text>></a>\n\n\\define rate()\n<$list filter=\"[<entry>split[]match[*]]\" variable=ignore>\n<span class=\"shiraz-star\"><$transclude tiddler=\"$:/core/images/star-filled\" /></span>\n</$list>\n\\end\n\n<!-- these macro are used by table-csv to display entries -->"},"$:/plugins/kookma/shiraz/macros/csvtables/formats-task":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/formats-task","created":"20210910071727034","modified":"20220724122008067","tags":"","type":"text/vnd.tiddlywiki","text":"\\define checkbox()\n<!-- show done item -->\n<$list filter=\"[<entry>trim[]match[x]]\" variable=ignore><input type=checkbox checked disabled/></$list>\n<!-- show task item -->\n<$list filter=\"[<entry>trim[]match[-]]\" variable=ignore><input type=checkbox disabled/></$list>\n\\end\n\n\n\\define todo-action(param)\n<!-- toggle a line done (x) / undone (-) . the lbr is used to prevent replace \"x, Hi\" with \"x, Hi Jeremy\"-->\n<$vars lbr=\"\n\">\n <$vars in={{{ [<row>addsuffix<lbr>] }}} out={{{[<row>splitregexp<delimiter>rest[]join[,]addprefix[$param$,]addsuffix<lbr>]}}} >\n <$action-setfield $tiddler=<<src>> text={{{ [<src>get[text]search-replace:g:<in>,<out>] }}}/>\n </$vars>\n</$vars>\t\n\\end\n\n\\define todo()\n<!-- show task item -->\n<$list filter=\"[<entry>trim[]match[-]]\" variable=ignore>\n<$button class=\"tc-btn-invisible\" actions=<<todo-action \"x\">>><input type=checkbox/></$button>\n</$list>\n<!-- show done item -->\n<$list filter=\"[<entry>trim[]match[x]]\" variable=ignore>\n<$button class=\"tc-btn-invisible\" actions=<<todo-action \"-\">>><input type=checkbox checked/></$button>\n</$list>\n\n\\end\n\n<!-- these macro are used by table-csv to display entries -->"},"$:/plugins/kookma/shiraz/macros/csvtables/table-csv":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/table-csv","created":"20210806160408697","modified":"20220725145558979","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define table-csv(tiddler:\"\", delimiter:\",\", sortType:\"alphanumeric\", format:\"\", caption:\"\", class:\"\", header:\"yes\", stateTiddler:\"\", id:\"\", dclass:\"dblock\" )\n\\whitespace trim\n\\import [[$:/plugins/kookma/shiraz/macros/csvtables/table-csv-utility]]\n\\import [all[tiddlers+shadows]prefix[$:/plugins/kookma/shiraz/macros/csvtables/formats]]\n\n<$vars src = {{{ [<__tiddler__>is[tiddler]then<__tiddler__>else<currentTiddler>] }}} \n stateTiddler = {{{ [<__stateTiddler__>!is[blank]then<__stateTiddler__>else[01]] }}} >\n<$vars sortCol = {{{ [<tempTableSort>getindex[sortIndex]] }}} \n sortNegate = {{{ [<tempTableSort>getindex[negate]] }}} \n delimiter = {{{ [<__delimiter__>match[\\t]then[°≡°]else<__delimiter__>] }}}\n dataBlockStartDelimiter ={{{ [<__id__>is[blank]then[@@.$dclass$]] ~[[@.$dclass$.]addsuffix<__id__>] }}}\n dataBlockEndDelimiter = \"@@\" >\n\n<!-- extract the data block -->\n<$let dblock0 = {{{ [<src>get[text]splitregexp<dataBlockStartDelimiter>butfirst[1]] }}}\n dblock1 = {{{ [<dblock0>splitregexp<dataBlockEndDelimiter>butlast[1]] }}}\n dblock = {{{ [<delimiter>!match[°≡°]then<dblock1>] :else[<dblock1>search-replace:g:regexp[\\t],[°≡°]] }}} >\n\n<!-- create table -->\n<table class=\"$class$\">\n<$list filter=\"[<__caption__>!is[blank]]\" variable=ignorw><caption>$caption$</caption></$list>\n<!--check if there is a header row-->\n<$list filter=\"[<__header__>match[yes]then[1]else[0]]\" variable=header_row>\n<!-- process all extracted rows-->\n<$vars allRows=\"[<dblock>splitregexp[\\n]!is[blank]]\">\n<!--create table header-->\n<$list filter=\"[subfilter<allRows>first<header_row>]\" variable=row >\n<tr><$list filter=\"[<row>splitregexp<delimiter>!is[blank]trim[]]\" variable=currentColumn><<column-header-template>></$list></tr>\n</$list>\n<!--create table body-->\n<$vars sortPos = {{{ [subfilter<allRows>first<header_row>splitregexp<delimiter>!is[blank]trim[]] +[allbefore:include<sortCol>count[]] }}} >\n<$vars sortType = {{{ [enlist:raw<__sortType__>nth<sortPos>else[alphanumeric]] }}} >\n<$list filter=<<mainFilter>> variable=row><!-- parse all other rows -->\n<tr><$list filter=\"[<row>splitregexp<delimiter>!is[blank]trim[]]\" variable=entry counter=pos>\n<td><$macrocall $name={{{ [enlist:raw<__format__>nth<pos>else[text]] }}} /></td>\n</$list></tr>\n</$list><!-- end of parse all other rows -->\n</$vars>\n</$vars><!-- sorPs-->\n</$vars> <!-- end of process all extracted rows-->\n</$list><!-- end of check header -->\n</table>\n\n</$let><!-- dblock0-->\n</$vars><!-- sortCol-->\n</$vars>\n\\end\n\n<!--\n- the default format is text, if format is not set for any column\n- the default sort type is alphanumeric, if the sort type is not sent \n- tab delimited data cannot be processed as enlist list them as sparate title on tab and do not keep them as a single row, so befor processing the \\tab is replaced with a rarely used combination like `°≡°`\n- leading and trailing blanks (spaces) are always trimmed\n- when use column header, you cannot have two column with the same header, this causes problem with sort routine\n-->"},"$:/plugins/kookma/shiraz/macros/csvtables/table-csv-utility":{"title":"$:/plugins/kookma/shiraz/macros/csvtables/table-csv-utility","created":"20210806160339977","modified":"20220724180943956","tags":"","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n\n\\define mainFilter() [subfilter<allRows>butfirst<header_row>] :sort:$(sortType)$:$(sortNegate)$[split<delimiter>!is[blank]trim[]nth<sortPos>]\n\\define tempTableSort() $:/state/tablecsv/$(currentTiddler)$/$(stateTiddler)$\n\n\n\\define column-header-template()\n<$reveal type=\"nomatch\" stateTitle=<<tempTableSort>> stateIndex=\"sortIndex\" text=<<currentColumn>> tag=\"th\">\n<$button setTitle=<<tempTableSort>> setIndex=\"sortIndex\" setTo=<<currentColumn>> class=\"tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"hasnegate\" $value=\"false\"/>\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"\"/>\n<span style=\"text-transform: capitalize;\"><$text text=<<currentColumn>>/></span>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableSort>> stateIndex=\"sortIndex\" text=<<currentColumn>> tag=\"th\">\n<$list filter=\"[<tempTableSort>getindex[hasnegate]match[false]]\" variable=ignore><!--set negate for sort-->\n<$button setTitle=<<tempTableSort>> setIndex=\"hasnegate\" setTo=\"true\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"reverse\"/>\n<span style=\"text-transform: capitalize;\"><$text text=<<currentColumn>>/></span> {{$:/core/images/down-arrow}}\n</$button>\n</$list>\n<$list filter=\"[<tempTableSort>getindex[hasnegate]match[true]]\" variable=ignore><!--remove negate for sort-->\n<$button setTitle=<<tempTableSort>> setIndex=\"hasnegate\" setTo=\"false\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"\"/>\n<span style=\"text-transform: capitalize;\"><$text text=<<currentColumn>>/></span> {{$:/core/images/up-arrow}}\n</$button>\n</$list>\n</$reveal>\n\\end\n\n<!-- these macro are used by table-csv to display entries -->"},"$:/plugins/kookma/shiraz/macros/dbadge":{"title":"$:/plugins/kookma/shiraz/macros/dbadge","created":"20181203212737578","modified":"20210808052511146","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define dbadge(subject,status, type:\"primary\")\n<div class=\"dbadge\"><span class=\"dbadge-subject\">$subject$</span><span class=\"dbadge-status dbadge-$type$ \">$status$</span></div>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/details":{"title":"$:/plugins/kookma/shiraz/macros/details","created":"20181101185833098","modified":"20210808052511151","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define details(label:\"\", src:\"source\", status:\"\", labelClass:\"\", srcClass:\"\")\n<$vars source = {{{ [<__src__>get[text]else<__src__>] }}} >\n<details $status$>\n <summary class=\"$labelClass$\">$label$</summary>\n <div class=\"$srcClass$\">\n\t\n <<source>>\n </div>\n</details>\n</$vars>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete":{"title":"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete","created":"20191129201531051","modified":"20210808052511159","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define confirm-delete()\n<!-- reveals deletion confirmation -->\n<$list filter=\"[subfilter<inputFilter>limit[1]]\" variable=ignore>\n<$reveal class=\"tbl-delete-confirm\" type=\"match\" state=\"$:/temp/tables/delete-all!!text\" text=<<currentTable>> tag=\"tr\">\n<th colspan=<<ncols>> >\n<$list filter=\"[[$:/temp/tables/delete-all]get[confirm]match[yes]]\" \n variable=ignore emptyMessage=<<ask-for-delete>> >\n <<perform-delete>>\n</$list>\n</th>\n</$reveal>\n</$list>\n\\end\n\n\\define ask-for-delete()\n<$set name=ntids filter=\"[subfilter<inputFilter>count[]]\">\n Delete all <<ntids>> records?\n\t<$button class=\"tc-btn-invisible\">\n <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" $field=\"confirm\" $value=\"yes\"/>\n {{$:/core/images/delete-button}} yes\n </$button> or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n {{$:/core/images/close-button}} no\n </$button>\n</$set>\t\t\t\t\n\\end\n\n\\define perform-delete()\n Warning! this action cannot be undone!\n\t<$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n <$list filter=<<inputFilter>> variable=\"currentRecord\">\n <$action-deletetiddler $tiddler=<<currentRecord>>/>\n </$list>\n\t\t {{$:/core/images/delete-button}} delete\n </$button> or \n <$button class=\"tc-btn-invisible\">\n <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n\t\t\t{{$:/core/images/close-button}} cancel \n </$button>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/helper":{"title":"$:/plugins/kookma/shiraz/macros/dtables/helper","created":"20191203102929722","modified":"20210808052511172","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define columnFilter() $(columns)$ tbl-clone tbl-delete\n\n\\define tempTable() $:/state/dynamictables/$(currentTable)$\n\n\\define tempTableSort() $(tempTable)$/sortby\n\\define tempTagPopup() $(tempTable)$/$(currentRecord)$/$(currentTiddler)$\n\\define tempTableExpand() $(tempTable)$/expand\n\\define tempPathExpand() $(tempTableExpand)$##$(currentRecord)$\n\\define tempTableEdit() $(tempTable)$/edit-view-status\n\n\\define keepstate() $:/keepstate/dynamictables/$(currentTable)$\n\n\\define tempTableFooter() $(keepstate)$/footer\n\\define tempTableStyle() $(keepstate)$/style\n\\define tempWarningMsg() $(keepstate)$/warning\n\n\\define pageStateTiddler() $(keepstate)$/page-number\n\\define entryPerPageStateTiddler() $(keepstate)$/entry-per-page\n\n<!-- \n Those tiddlers based on keepstate are permanent.\n These are tiddlers hold the data and setting for footer, styles and warning (needs to be hold).\n These state and temporary tiddlers are independent of currentTiddler (host tiddler) and on changing\n the title of host tiddler will not disconnected to table\n-->"},"$:/plugins/kookma/shiraz/macros/dtables/maths":{"title":"$:/plugins/kookma/shiraz/macros/dtables/maths","created":"20200209153246553","modified":"20210808073255865","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define average(pn:0) <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>average[]] }}}/>\n\\define median(pn:0) <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>median[]] }}}/>\n\n\\define count() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>count[]] }}}/>\n\\define sum() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sum[]] }}}/>\n\\define product() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>product[]] }}}/>\n\n\\define minall() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>minall[]] }}}/>\n\\define maxall() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>maxall[]] }}}/>\n\n\n\n\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/pagination":{"title":"$:/plugins/kookma/shiraz/macros/dtables/pagination","created":"20210224180410216","modified":"20210808052511185","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define prev-button()\n<!-- create previous page button --->\n<$list filter=\"[<page-number>compare:number:lt[2]then[yes]else[no]]\" variable=state>\n<$button disabled=<<state>> class=\"shiraz-dtable-page-prev tc-btn-invisible\">\n{{$:/core/images/chevron-left}} <strong>Prev</strong>\n<$action-listops $tiddler=<<pageStateTiddler>> $field=text $subfilter=\"+[subtract[1]] ~[[1]]\"/>\n</$button>\n</$list>\n\\end\n\n\\define next-button()\n<!-- create next page button --->\n<$list filter=\"[<high>compare:number:gteq<total-entries>then[yes]else[no]]\" variable=state> \n<$button disabled=<<state>> class=\"shiraz-dtable-page-next tc-btn-invisible\">\n<strong>Next</strong> {{$:/core/images/chevron-right}} \n<$action-listops $tiddler=<<pageStateTiddler>> $field=text $subfilter=\"+[add[1]] ~[[2]]\"/>\n</$button>\n</$list>\n\\end\n\n\\define limit-entries()\n<!-- set number of entries per page -->\n<$select tiddler=<<entryPerPageStateTiddler>> default=25 actions=\"\"\"<$action-setfield $tiddler=<<pageStateTiddler>> text=1/>\"\"\">\n<$list filter='5 10 15 20 25 30 40 50' variable=num>\n<option value=<<num>>>Limit <$text text=<<num>>/></option>\n</$list>\n<option value=<<total-entries>> >Show all</option>\n</$select>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell":{"title":"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell","created":"20200209135600453","modified":"20210808052511192","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n <$list filter=\"[<fieldOrIndex>]-index\">\n <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n </$list>\n <$list filter=\"[<fieldOrIndex>]-field\">\n <$transclude tiddler=<<currentRecord>> index=<<currentColumn>> mode=\"inline\" />\n </$list>\n\\end\t\n\\define editCell()\n <$list filter=\"[<fieldOrIndex>]-index\">\n <$edit-text tiddler=<<currentRecord>> field=<<currentColumn>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n </$list>\n <$list filter=\"[<fieldOrIndex>]-field\">\n <$edit-text tiddler=<<currentRecord>> index=<<currentColumn>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n </$list>\n\\end\n\n\\define showCell_Locked()\n <span style=\"font-style:oblique;\"><<showCell>></span>\n\\end "},"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic":{"title":"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic","created":"20200209100939116","modified":"20210808052511219","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define table-dynamic(filter, fields:\"\", indexes:\"\", sortOp:\"sort\", caption:\"\", class:\"\",\n footerRows:\"0\", stateTiddler:\"\", editButton:\"yes\", pagination:\"no\", emptyMessage:\"filter input is empty\")\n\n\\import [all[shadows+tiddlers]tag[$:/tags/Table/Macro]]\n\n<!--above commands import utility macros-->\n<$vars \n inputFilter=\"[subfilter<__filter__>!has[draft.of]]\"\n sortType=<<__sortOp__>>\n pagination=<<__pagination__>>\n> \n<$set name=currentTable value=<<__stateTiddler__>> emptyValue=<<currentTiddler>> >\n<!-- check what type of columns are sent, fileds or indexes (data tiddlers as records) -->\n<$set name=fieldOrIndex filter=\"[<__fields__>!is[blank]]\" value=\"field\" emptyValue=\"index\">\n<<check_tiddlers_type_for_table_from_indexes isEditable:\"$editButton$\">>\n<$set name=columns filter=\"[<fieldOrIndex>]-index\" value=<<__fields__>> emptyValue=<<__indexes__>> >\n<!--check input filter parameter-->\n<$list filter=\"[subfilter<inputFilter>limit[1]]\" emptyMessage=<<__emptyMessage__>> variable=ignore>\n<$set name=sortneg tiddler=<<tempTableSort>> index=\"negate\">\n<!--calculate the number of columns in edit and view mode -->\n<$set name=ncols filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" value={{{ [subfilter<columnFilter>count[]] }}} emptyValue= {{{ [subfilter<columnFilter>count[]subtract[2]] }}}>\n<div class=\"tbl-container\" style=\"max-width:100%;\">\n<table class=<<__class__>> style=\"caption-side:top\">\n<!-- reveal caption and edit button -------------------->\n<caption style=\"text-align:left;\">\n<$list filter=\"[<__editButton__>match[yes]]\" variavle=ignore>\n<span style=\"padding-right:5px;padding-left:3px;\"><<toggle-edit-view>></span></$list>\n$caption$</caption>\n\n<!-- create header -------------------->\n<thead>\n<<confirm-delete>>\n<tr>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"headerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/HeaderTemplate]contains:tbl-column-list<currentColumn>limit[1]get[title]]\" value=<<headerLookup>> emptyValue=\"$:/plugins/kookma/shiraz/templates/header/default\">\n <$transclude tiddler=<<headerLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n</thead>\n\n<!-- create footer -------------------->\n<$reveal type=\"gt\" default=<<__footerRows__>> text=\"0\" tag=\"tfoot\" class=\"shiraz-dtable-footer\">\n<tr><td colspan=<<ncols>> style=\"font-weight:bold;background-color:transparent;\">Numerical summary</td></tr>\n<$list filter=\"[range[1,$footerRows$]addprefix[footer-]]\" variable=footerRow>\n<tr>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"footerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/FooterTemplate]contains:tbl-column-list<currentColumn>limit[1]get[title]]\" value=<<footerLookup>> emptyValue=\"$:/plugins/kookma/shiraz/templates/footer/default\">\n<$transclude tiddler=<<footerLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n</$list>\n</$reveal>\n\n<!-- reveal main body of table (generate records) -------------------->\n<tbody>\n<$set name=tableBody filter=\"[<fieldOrIndex>]-index\" value=\"display_body_fields\" emptyValue=\"display_body_indexes\" >\n<!-- setup pagination variables -->\n<$vars total-entries={{{[subfilter<inputFilter>count[]] }}}\n\t\t\t page-number={{{[<pageStateTiddler>get[text]] ~[[1]]}}} \n\t\t\t entries-per-page={{{ [<entryPerPageStateTiddler>get[text]] ~[[25]] }}} >\n<$vars low={{{ [<page-number>subtract[1]multiply<entries-per-page>] }}} \n high={{{[<page-number>multiply<entries-per-page>] }}} >\t \n<$macrocall $name=<<tableBody>> />\n<!--on demand display the pagination row-->\n<$reveal type=\"match\" default=<<pagination>> text=\"yes\" tag=\"tr\" class=\"shiraz-dtable-page-footer\">\n<td colspan=<<ncols>> >\n<<prev-button>>\nDisplaying <$text text={{{[<low>add[1]]}}}/> through <$text text={{{ [<high>compare:number:lt<total-entries>then<high>else<total-entries>] }}}/> of <<total-entries>> Results | <<limit-entries>>\n<<next-button>>\n</td>\n</$reveal><!-- end of pagination ui -->\n</$vars>\n</$vars>\n</$set>\n</tbody>\n</table>\n</div><!-- container-->\n</$set>\n</$set>\n</$list><!--check input filter parameter-->\n</$set>\n</$set>\n</$set>\n</$vars>\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/table-utility":{"title":"$:/plugins/kookma/shiraz/macros/dtables/table-utility","created":"20200209195541061","modified":"20210918193243499","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define tableFilter_fields() $(inputFilter)$+[$(sortneg)$$(sortType)${$(tempTableSort)$##sortIndex}]\n\\define tableFilter_indexes() [enlist<items>]+[$(sortneg)$$(sortType)$[]]\n\n\\define getitems()\n<$set name=Index tiddler=<<tempTableSort>> index=\"sortIndex\">\n<$list filter=\"[subfilter<inputFilter>!has[draft.of]]\" >\n<$text text=\"[[\"/>{{{ [<currentTiddler>getindex<Index>addsuffix[°≡°]] }}}<<currentTiddler>><$text text=\"]]\"/>\n</$list>\n</$set>\n\\end\n\n\\define display_one_record()\n<$wikify name=\"rowStyle\" text=\"\"\"<$transclude tiddler=<<tempTableStyle>> index=<<currentRecord>> />\"\"\" mode=\"inline\">\n<tr style=<<rowStyle>>>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"bodyLookup\" \n filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/BodyTemplate]contains:tbl-column-list<currentColumn>]\n +[limit[1]get[title]]\"\n value=<<bodyLookup>> \n emptyValue=\"$:/plugins/kookma/shiraz/templates/body/default\">\n<$transclude tiddler=<<bodyLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n<!-- reveal expanded record-->\n<$reveal type=\"match\" state=<<tempPathExpand>> text=\"show\" tag=\"tr\">\n<<display-expanded-record>>\n</$reveal>\n</$wikify>\n\\end\n\n\\define display_body_fields() \n<$set name=finalFilter filter=\"[<pagination>match[yes]]\" value=\"[subfilter<tableFilter_fields>first<high>] -[subfilter<tableFilter_fields>first<low>]\" emptyValue=\"[subfilter<tableFilter_fields>]\">\n<$list filter=\"[subfilter<finalFilter>]\" variable=\"currentRecord\">\n<<display_one_record>>\n</$list>\n</$set>\n\\end\n\n\\define display_body_indexes()\n<$wikify name=\"items\" text=<<getitems>> > \n<$set name=finalFilter filter=\"[<pagination>match[yes]]\" value=\"[subfilter<tableFilter_indexes>first<high>] -[subfilter<tableFilter_indexes>first<low>]\" emptyValue=\"[subfilter<tableFilter_indexes>]\">\n<$list filter=\"[subfilter<finalFilter>]\" variable=\"currentItem\">\n<$list filter=\"[<currentItem>split[°≡°]last[]]\" variable=\"currentRecord\">\n <<display_one_record>>\n</$list>\n</$list>\n</$set>\n</$wikify>\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/tbl-expand":{"title":"$:/plugins/kookma/shiraz/macros/dtables/tbl-expand","created":"20191203155802107","modified":"20210918193738145","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define display-expanded-record()\n<td colspan=<<ncols>> class=\"shiraz-dtable-expanded-record\">\n<$tiddler tiddler=<<currentRecord>> >\n<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore\n emptyMessage=\"\"\"<$transclude tiddler=<<currentRecord>> field=text mode=block/>\"\"\" >\n <$edit-text class=\"tbl-inpt-edit\" tiddler=<<currentRecord>> field=\"text\" tag=textarea/>\n</$list>\n</$tiddler>\n</td>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view":{"title":"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view","created":"20191128215812372","modified":"20210808052511239","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define toggle-edit-view()\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<<tempTableEdit>> setIndex=\"mode\" setTo=\"edit\">{{$:/core/images/edit-button}}</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<<tempTableEdit>> setIndex=\"mode\" setTo=\"view\">{{$:/core/images/done-button}}</$button>\n</$reveal>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/warning_message":{"title":"$:/plugins/kookma/shiraz/macros/dtables/warning_message","created":"20200210083402839","modified":"20210808052511245","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define show_tiddler_types()\n<details>\n <summary>List tiddlers with wrong type</summary>\n\t<dl>\n <$list filter=\"[subfilter<inputFilter>]\">\n\t<$list filter=\"[<currentTiddler>get[type]match[application/x-tiddler-dictionary]][<currentTiddler>get[type]match[application/json]]\" variable=ignore\n\temptyMessage=\"\"\"<dt><$link/></dt><dd><$view field=type/></dd>\"\"\">\n\t</$list>\n\t</$list>\n\t</dl>\n</details>\n\\end\n\n\n\\define show_warning_message()\nDynamic editable table from ''indexes'' expects all input tiddlers are of dataTiddler (json or dictionary) types. Using tiddlers of non //json// or //x-tiddler-dictionary// types as input can unintentionally overwrite the data in the text field of those tiddlers.<br>\n<br>\nCheck the tiddler types to find which tiddlers are not of dataTiddler types!<br>\n<<show_tiddler_types>>\n\\end\n\n\n\\define check_tiddlers_type_for_table_from_indexes(isEditable)\n <$list filter=\"[<fieldOrIndex>]-field\" variable=ignore><!-- only dataTiddler -->\n\t<$list filter=\"[<__isEditable__>match[yes]]\" variable=ignore> <!-- only editable table -->\n\t<$list filter=\"[<tempWarningMsg>is[missing]]\" variable=ignore><!-- dismiss if tempWarningMsg is set -->\n\t<$list filter=\"[subfilter<inputFilter>each[type]get[type]]-[[application/x-tiddler-dictionary]]-[[application/json]]\" variable=ignore>\n\t <div style=\"color: white;background-color:#ff0033;padding:8px;text-align:center;width:100%;\">\n\t Danger: Editable dynamic table from idexes with mixed types of tiddlers! \n\t <$button class=\"tc-btn-invisible tc-tiddlylink\" style=\"fill:white;\" tooltip=\"Dismiss alert and continue with the current selection!\">{{$:/core/images/close-button}}\n <$action-setfield $tiddler=<<tempWarningMsg>> text=\"dissmiss\"/>\n </$button>\n\t </div>\n\t <div style=\"border:1px solid #ff0033;padding:8px;\">\n\t <<show_warning_message>>\n\t </div>\n </$list>\n\t</$list>\n\t</$list>\n\t</$list>\n\\end\t\n"},"$:/plugins/kookma/shiraz/macros/image-basic":{"title":"$:/plugins/kookma/shiraz/macros/image-basic","created":"20181119183704246","modified":"20210808052511253","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-basic(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-basic image-align-$align$\" style=\"width:$width$;\">\n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n <figcaption>$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-card":{"title":"$:/plugins/kookma/shiraz/macros/image-card","created":"20190913094619863","modified":"20210808052511263","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-card(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", pos:\"top\", alt:\"\")\n\\import $:/plugins/kookma/shiraz/macros/image-card-utility\n<$reveal tag=\"div\" type=\"match\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-top img=<<__img__>> title=<<__title__>> text=<<__text__>>\n footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-bottom img=<<__img__>> title=<<__title__>> text=<<__text__>>\n footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n</$reveal>\n\\end\n\n\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n</div>\n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-card-utility":{"title":"$:/plugins/kookma/shiraz/macros/image-card-utility","created":"20191209113750505","modified":"20210808052511268","type":"text/vnd.tiddlywiki","text":"\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n</div>\n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n <div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n <div class=\"h5 card-title\">$title$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n <div class=\"card-text\">$text$</div>\n </$reveal> \n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n </$reveal>\n </div> \n <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-overlay":{"title":"$:/plugins/kookma/shiraz/macros/image-overlay","created":"20181117203737197","modified":"20210808052511276","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-overlay(img, width:\"30%\", align:\"none\", caption:\"\", title:\"\", text:\"\", fadein:\"left\", alt:\"\")\n\\import $:/plugins/kookma/shiraz/macros/image-overlay-utility\n<div class=\"image-overlay-container image-align-$align$\" style=\"width:$width$;\">\n <h3 class=\"image-overlay-title\">$caption$</h3>\n <div class=\"image-overlay-content\">\n <div class=\"image-overlay-content-overlay\"></div>\n <$image class=\"image-overlay-content-image\" source=<<__img__>> alt=<<__alt__>>/>\n <$set name=\"fdcls\" filter=\"$fadein$ +[splitbefore[ ]] +[addprefix[image-overlay-fadeIn-]]\">\n <div class=<<_cls-content-details>> >\n <h3 class=\"image-overlay-content-title\">$title$</h3>\n <p class=\"image-overlay-content-text\">$text$</p>\n </div>\n </$set>\n </div>\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-overlay-utility":{"title":"$:/plugins/kookma/shiraz/macros/image-overlay-utility","created":"20191209114338849","modified":"20210808052511284","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define _cls-content-details() image-overlay-content-details $(fdcls)$"},"$:/plugins/kookma/shiraz/macros/image-polaroid":{"title":"$:/plugins/kookma/shiraz/macros/image-polaroid","created":"20181117203654803","modified":"20210808052511292","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-polaroid(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-polaroid image-align-$align$\" style=\"width:$width$;\">\n <$image source=\"\"\"$img$\"\"\" tooltip=\"\"\"$tooltip$\"\"\"/>\n <figcaption class=\"image-polaroid-caption\">$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-pretty":{"title":"$:/plugins/kookma/shiraz/macros/image-pretty","created":"20181117203541398","modified":"20210808052511297","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-pretty(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-pretty image-align-$align$\" style=\"width:$width$;\">\n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n <figcaption class=\"image-pretty-caption\">$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-slidein":{"title":"$:/plugins/kookma/shiraz/macros/image-slidein","created":"20181117040544570","modified":"20210808052511301","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-slidein(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", slidein:\"left\", alt:\"\")\n<figure class=\"image-slidein mr-cap-$slidein$ image-align-$align$\" style=\"width:$width$;\">\n <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>>/>\n <figcaption>$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/list-search":{"title":"$:/plugins/kookma/shiraz/macros/list-search","author":"Jeremy Ruston","created":"20191209101857832","creator":"Mohammad","description":"creates few paragraphs of dumy text","modified":"20210808052511310","modifier":"Mohammad","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define list-search( filter:\"[!is[system]]\", search:\"search:title\", template:\"$:/core/ui/ListItemTemplate\",\n class:\"\", stateTiddler:\"\", placeholder:\"keywords\")\n<$set name=\"state\" filter=\"[[$:/temp/list-search]addsuffix[/$stateTiddler$]addsuffix<qualify>]\">\n<div class=<<__class__>> >\n<$edit-text tiddler=<<state>> type=\"search\" tag=\"input\" default=\"\" placeholder=\"$placeholder$\"/>\n</div>\n<$reveal state=<<state>> type=\"match\" text=\"\" class=<<__class__>> tag=div>\n<$list filter=\"$filter$\" template=<<__template__>>/>\n</$reveal>\n<$reveal state=<<state>> type=\"nomatch\" text=\"\" class=<<__class__>> tag=div>\n<$set name=term tiddler=<<state>> field=\"text\">\n<$list filter=\"$filter$+[$search$<term>]\" template=<<__template__>>/>\n</$set>\n</$reveal>\n</$set>\n\\end\n<!-- from Tobias Beer list-search with modification-->"},"$:/plugins/kookma/shiraz/macros/multicol":{"title":"$:/plugins/kookma/shiraz/macros/multicol","created":"20191018063242993","modified":"20210808052511318","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define multicol(src, ncol:\"\", class:\"\")\n<div class=\"sh-multicol$ncol$ $class$\">\n\n$src$\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/slider":{"title":"$:/plugins/kookma/shiraz/macros/slider","created":"20190322161929431","description":"Slider macro shows (hides) its content.","modified":"20210808052511326","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define slider(label, src, labelClass, srcClass, status:\"closed\")\n<$vars revealState = \"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\"\n source = {{{ [<__src__>get[text]else<__src__>] }}} >\n\n\n<h2 class=\"$labelClass$\">\n <$reveal type=\"nomatch\" state=<<revealState>> text=\"open\" default=\"$status$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"open\">\n <span class=\"kk-sh-slider\"><$transclude tiddler=\"$:/core/images/right-arrow\" /></span>\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$status$\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"closed\">\n <span class=\"kk-sh-slider\"><$transclude tiddler=\"$:/core/images/down-arrow\" /></span>\n </$button>\n </$reveal>\n $label$\n</h2>\n\n<$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$status$\" class=\"$srcClass$\" tag=div>\n\n<<source>>\n</$reveal>\n\n</$vars>\n\\end"},"$:/plugins/kookma/shiraz/macros/space":{"title":"$:/plugins/kookma/shiraz/macros/space","created":"20170629183034888","modified":"20210808052511332","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define vspace(height:\"25px\")\n<p style=\"margin-bottom: $height$;\"></p>\n\\end\n\n\\define hspace(width:\"25px\")\n<span style=\"margin-left: $width$;\"></span>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/text-utility":{"title":"$:/plugins/kookma/shiraz/macros/text-utility","created":"20181101154956345","modified":"20210808052511341","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define tc(src:\"\", color:\"red\") <span style=\"color:$color$;\">$src$</span>\n\\define bc(src:\"\", color:\"yellow\") <span style=\"background-color:$color$;\">$src$</span>\n\\define mono(src:\"\", class:\"\") <code class=\"mono $class$\">$src$</code>\n\\define transform(case:\"\", src:\"\", class:\"\") <span class=\"text-$case$ $class$\">$src$</span>"},"$:/plugins/kookma/shiraz/readme":{"title":"$:/plugins/kookma/shiraz/readme","created":"20210225163850254","modified":"20220726105755934","tags":"","type":"text/vnd.tiddlywiki","text":"; Shiraz\nShiraz is a small framework of stylesheets, templates and macros to create stylish contents in Tiddlywiki. Shiraz has customized elements like alerts, cards, panels, images, static tables, dynamic tables, quick table, badges, texts, etc. Shiraz uses some modified CSS classes from [[Bootstrap|https://getbootstrap.com/]] 4.3.1.\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Shiraz/\n* Code: https://github.com/kookma/TW-Shiraz\n"},"$:/plugins/kookma/shiraz/styles/alerts-leftbar":{"title":"$:/plugins/kookma/shiraz/styles/alerts-leftbar","text":".leftbar{\n border-width:0px !important;\n border-radius:0px !important;\n border-left-width: 5px !important;\n}","created":"20181208184228896","modified":"20210808052511357","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bglowtone-colors":{"title":"$:/plugins/kookma/shiraz/styles/bglowtone-colors","text":"/* Colors taked from [1] https://www.bg-w3schools.bg-com/colors/colors_names.bg-asp \n[2] http://www.bg-workwithcolor.bg-com/color-chart-full-01.bg-htm*/\n/*Low tone background colors*/\n.bg-mistyrose{background-color:#ffe4e1;}\n.bg-lemonchiffon{background-color:#fffacd;}\n.bg-lavenderblush{background-color:#fff0f5;}\n.bg-lavender{background-color:#e6e6fa;}\n.bg-honeydew{background-color:#f0fff0;}\n.bg-lightcyan{background-color:#e0ffff;}\n.bg-aliceblue{background-color:#f0f8ff;}\n.bg-cornsilk{background-color:#fff8dc;}\n.bg-gainsboro{background-color:#dcdcdc;}\n.bg-bisque{background-color:#ffe4c4;}\n.bg-snow{background-color:#fffafa;}","created":"20181029071532524","list":"mistyrose lemonchiffon lavenderblush lavender honeydew lightcyan aliceblue cornsilk gainsboro bisque snow","modified":"20210808052511365","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/alerts":{"title":"$:/plugins/kookma/shiraz/styles/bs/alerts","text":"/*Was taken from bootstrap 4.1.3*/\n.alert {\n position: relative;\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n.alert-primary {\n color: #004085;\n background-color: #cce5ff;\n border-color: #b8daff;\n}\n\n.alert-primary hr {\n border-top-color: #9fcdff;\n}\n.alert-secondary {\n color: #383d41;\n background-color: #e2e3e5;\n border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n border-top-color: #c8cbcf;\n}\n\n.alert-success {\n color: #155724;\n background-color: #d4edda;\n border-color: #c3e6cb;\n}\n\n.alert-success hr {\n border-top-color: #b1dfbb;\n}\n.alert-info {\n color: #0c5460;\n background-color: #d1ecf1;\n border-color: #bee5eb;\n}\n\n.alert-info hr {\n border-top-color: #abdde5;\n}\n.alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border-color: #ffeeba;\n}\n\n.alert-warning hr {\n border-top-color: #ffe8a1;\n}\n\n.alert-danger {\n color: #721c24;\n background-color: #f8d7da;\n border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n border-top-color: #f1b0b7;\n}\n.alert-light {\n color: #818182;\n background-color: #fefefe;\n border-color: #fdfdfe;\n}\n\n.alert-light hr {\n border-top-color: #ececf6;\n}\n.alert-dark {\n color: #1b1e21;\n background-color: #d6d8d9;\n border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n border-top-color: #b9bbbe;\n}\n","created":"20180820171551129","modified":"20210808052511374","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/background-colors":{"title":"$:/plugins/kookma/shiraz/styles/bs/background-colors","text":".bg-primary {\n background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n background-color: #0062cc !important;\n}\n\n.bg-secondary {\n background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n background-color: #545b62 !important;\n}\n\n.bg-success {\n background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n background-color: #1e7e34 !important;\n}\n\n.bg-info {\n background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n background-color: #117a8b !important;\n}\n\n.bg-warning {\n background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n background-color: #d39e00 !important;\n}\n\n.bg-danger {\n background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n background-color: #bd2130 !important;\n}\n\n.bg-light {\n background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n background-color: #1d2124 !important;\n}\n\n.bg-white {\n background-color: #fff !important;\n}\n\n.bg-transparent {\n background-color: transparent !important;\n}","created":"20180820170518161","modified":"20210808052511382","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/badge":{"title":"$:/plugins/kookma/shiraz/styles/bs/badge","text":"/* Extracted from bootstrap 4.1.3 */\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-primary {\n color: #fff;\n background-color: #007bff;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #0062cc;\n}\n\n.badge-secondary {\n color: #fff;\n background-color: #6c757d;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #545b62;\n}\n\n.badge-success {\n color: #fff;\n background-color: #28a745;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1e7e34;\n}\n\n.badge-info {\n color: #fff;\n background-color: #17a2b8;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #117a8b;\n}\n\n.badge-warning {\n color: #212529;\n background-color: #ffc107;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #d39e00;\n}\n\n.badge-danger {\n color: #fff;\n background-color: #dc3545;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #bd2130;\n}\n\n.badge-light {\n color: #212529;\n background-color: #f8f9fa;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n color: #212529;\n text-decoration: none;\n background-color: #dae0e5;\n}\n\n.badge-dark {\n color: #fff;\n background-color: #343a40;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n color: #fff;\n text-decoration: none;\n background-color: #1d2124;\n}\n\n","created":"20181122140031075","modified":"20210808052511390","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/borders":{"title":"$:/plugins/kookma/shiraz/styles/bs/borders","text":".border {\n border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.border-primary {\n border-color: #007bff !important;\n}\n\n.border-secondary {\n border-color: #6c757d !important;\n}\n\n.border-success {\n border-color: #28a745 !important;\n}\n\n.border-info {\n border-color: #17a2b8 !important;\n}\n\n.border-warning {\n border-color: #ffc107 !important;\n}\n\n.border-danger {\n border-color: #dc3545 !important;\n}\n\n.border-light {\n border-color: #f8f9fa !important;\n}\n\n.border-dark {\n border-color: #343a40 !important;\n}\n\n.border-white {\n border-color: #fff !important;\n}\n\n.rounded {\n border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem !important;\n border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem !important;\n border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem !important;\n border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n border-radius: 50% !important;\n}\n\n.rounded-0 {\n border-radius: 0 !important;\n}\n","created":"20180820174710383","modified":"20210808052511397","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/btn":{"title":"$:/plugins/kookma/shiraz/styles/bs/btn","text":"/* Button and btn classes Mohammad*/\n.btn {\n display: inline-block;\n font-weight: 400;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n line-height: 1.5;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n\n.btn:hover, .btn:focus {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n cursor: pointer;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #0069d9;\n border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n color: #fff;\n background-color: #007bff;\n border-color: #007bff;\n}\n\n.btn-secondary {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n color: #fff;\n background-color: #5a6268;\n border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n color: #fff;\n background-color: #6c757d;\n border-color: #6c757d;\n}\n\n.btn-success {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #218838;\n border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n color: #fff;\n background-color: #28a745;\n border-color: #28a745;\n}\n\n.btn-info {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #138496;\n border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n color: #fff;\n background-color: #17a2b8;\n border-color: #17a2b8;\n}\n\n.btn-warning {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-warning:hover {\n color: #212529;\n background-color: #e0a800;\n border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n color: #212529;\n background-color: #ffc107;\n border-color: #ffc107;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c82333;\n border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n color: #fff;\n background-color: #dc3545;\n border-color: #dc3545;\n}\n\n.btn-light {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n color: #212529;\n background-color: #e2e6ea;\n border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n color: #212529;\n background-color: #f8f9fa;\n border-color: #f8f9fa;\n}\n\n.btn-dark {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-dark:hover {\n color: #fff;\n background-color: #23272b;\n border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n color: #fff;\n background-color: #343a40;\n border-color: #343a40;\n}\n\n.btn-link {\n font-weight: 400;\n color: #007bff;\n background-color: transparent;\n}\n\n.btn-link:hover {\n color: #0056b3;\n text-decoration: underline;\n background-color: transparent;\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n text-decoration: underline;\n border-color: transparent;\n box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n color: #6c757d;\n pointer-events: none;\n}\n\n/* button size */\n\n.btn-lg{\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm{\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}","created":"20180822044340070","modified":"20210808052511406","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card":{"title":"$:/plugins/kookma/shiraz/styles/bs/card","text":"/* Extracted from bootstrap 4.1.3 */\n.card {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: border-box;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card > hr {\n margin-right: 0;\n margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: rgba(0, 0, 0, 0.03);\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n border-top: 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: rgba(0, 0, 0, 0.03);\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n","created":"20180822174608965","modified":"20210808052511411","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-column":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-column","text":"/* Extracted from bootstrap 4.3.1 */\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n -webkit-column-count: 3;\n -moz-column-count: 3;\n column-count: 3;\n -webkit-column-gap: 1.25rem;\n -moz-column-gap: 1.25rem;\n column-gap: 1.25rem;\n orphans: 1;\n widows: 1;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}","created":"20181122175345419","modified":"20210808052511418","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-deck":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-deck","text":"/* Extracted from bootstrap 4.1.3 */\n\n.card-deck {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-deck .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-deck {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n -ms-flex-direction: column;\n flex-direction: column;\n margin-right: 15px;\n margin-bottom: 0;\n margin-left: 15px;\n }\n}","created":"20180822174847352","modified":"20210808052511426","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-group":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-group","text":"/* Extracted from bootstrap 4.1.3 */\n.card-group {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n\n.card-group > .card {\n margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n .card-group {\n -ms-flex-flow: row wrap;\n flex-flow: row wrap;\n }\n .card-group > .card {\n -ms-flex: 1 0 0%;\n flex: 1 0 0%;\n margin-bottom: 0;\n }\n .card-group > .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group > .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-top,\n .card-group > .card:first-child .card-header {\n border-top-right-radius: 0;\n }\n .card-group > .card:first-child .card-img-bottom,\n .card-group > .card:first-child .card-footer {\n border-bottom-right-radius: 0;\n }\n .card-group > .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-top,\n .card-group > .card:last-child .card-header {\n border-top-left-radius: 0;\n }\n .card-group > .card:last-child .card-img-bottom,\n .card-group > .card:last-child .card-footer {\n border-bottom-left-radius: 0;\n }\n .card-group > .card:only-child {\n border-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-top,\n .card-group > .card:only-child .card-header {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n }\n .card-group > .card:only-child .card-img-bottom,\n .card-group > .card:only-child .card-footer {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n border-radius: 0;\n }\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n border-radius: 0;\n }\n}\n","created":"20181122175111676","modified":"20210808052511431","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/clearfix":{"title":"$:/plugins/kookma/shiraz/styles/bs/clearfix","text":".clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}","created":"20190919042042391","modified":"20210808052511439","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/float":{"title":"$:/plugins/kookma/shiraz/styles/bs/float","text":".float-left {\n float: left;\n}\n\n.float-right {\n float: right;\n}\n\n.float-none {\n float: none;\n}\n","created":"20180823142040855","modified":"20210808052511446","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/my-adjustment":{"title":"$:/plugins/kookma/shiraz/styles/bs/my-adjustment","text":"/* My adjustments to bootstrap 4.1.3 css classes */\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n/* Link is hacked to be compatible with bootstrap \nclasses remove it if the TW core objects break\n*/\n\n","created":"20180822044831813","modified":"20210808052511454","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/shadow":{"title":"$:/plugins/kookma/shiraz/styles/bs/shadow","text":".shadow-sm {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n box-shadow: none !important;\n}","created":"20180823114259911","modified":"20210808052511462","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing":{"title":"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing","text":"/* Extracted from bootstrap 4.3.1 */\n/*Defines margins, paddings, width and height*/\n.w-25 {\n width: 25% !important;\n}\n.w-50 {\n width: 50% !important;\n}\n.w-75 {\n width: 75% !important;\n}\n.w-100 {\n width: 100% !important;\n}\n.w-auto {\n width: auto !important;\n}\n.h-25 {\n height: 25% !important;\n}\n.h-50 {\n height: 50% !important;\n}\n.h-75 {\n height: 75% !important;\n}\n.h-100 {\n height: 100% !important;\n}\n.h-auto {\n height: auto !important;\n}\n.mw-100 {\n max-width: 100% !important;\n}\n.mh-100 {\n max-height: 100% !important;\n}\n.m-0 {\n margin: 0 !important;\n}\n.mt-0,\n.my-0 {\n margin-top: 0 !important;\n}\n.mr-0,\n.mx-0 {\n margin-right: 0 !important;\n}\n.mb-0,\n.my-0 {\n margin-bottom: 0 !important;\n}\n.ml-0,\n.mx-0 {\n margin-left: 0 !important;\n}\n.m-1 {\n margin: 0.25rem !important;\n}\n.mt-1,\n.my-1 {\n margin-top: 0.25rem !important;\n}\n.mr-1,\n.mx-1 {\n margin-right: 0.25rem !important;\n}\n.mb-1,\n.my-1 {\n margin-bottom: 0.25rem !important;\n}\n.ml-1,\n.mx-1 {\n margin-left: 0.25rem !important;\n}\n.m-2 {\n margin: 0.5rem !important;\n}\n.mt-2,\n.my-2 {\n margin-top: 0.5rem !important;\n}\n.mr-2,\n.mx-2 {\n margin-right: 0.5rem !important;\n}\n.mb-2,\n.my-2 {\n margin-bottom: 0.5rem !important;\n}\n.ml-2,\n.mx-2 {\n margin-left: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n margin-left: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n margin-left: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n margin-left: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n padding-left: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n padding-left: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n padding-left: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n padding-left: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n padding-left: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n padding-left: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n margin-left: auto !important;\n}\n","created":"20180822191952379","modified":"20210808052511469","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-alignment":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-alignment","text":".text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}","created":"20180822051223866","modified":"20210808052511477","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-colors":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-colors","text":"/* from bootstrap 4.1.3 */\n\n.text-white {\n color: #fff !important;\n}\n\n.text-primary {\n color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n color: #0062cc !important;\n}\n\n.text-secondary {\n color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n color: #545b62 !important;\n}\n\n.text-success {\n color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n color: #1e7e34 !important;\n}\n\n.text-info {\n color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n color: #117a8b !important;\n}\n\n.text-warning {\n color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n color: #d39e00 !important;\n}\n\n.text-danger {\n color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n color: #bd2130 !important;\n}\n\n.text-light {\n color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n color: #dae0e5 !important;\n}\n\n.text-dark {\n color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n color: #1d2124 !important;\n}\n\n.text-body {\n color: #212529 !important;\n}\n\n.text-muted {\n color: #6c757d !important;\n}\n\n.text-black-50 {\n color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n","created":"20180820173351023","modified":"20210808052511485","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-utility":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-utility","text":"/* Can be removed latter. This is used for illustration of bootstrap cards */\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-weight-normal {\n font-weight: 400 !important;\n}\n\n.font-weight-bold {\n font-weight: 700 !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n\n\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.2;\n color: inherit;\n}\n\n.h1 {\n font-size: 2.5rem;\n}\n\n.h2 {\n font-size: 2rem;\n}\n\n.h3 {\n font-size: 1.75rem;\n}\n\n.h4 {\n font-size: 1.5rem;\n}\n\n.h5 {\n font-size: 1.25rem;\n}\n\n.h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.2;\n}\n\n.hr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.small {\n font-size: 80%;\n font-weight: 400;\n}\n\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n","created":"20180822130528002","modified":"20210808052511493","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/clear-float":{"title":"$:/plugins/kookma/shiraz/styles/clear-float","text":"/* Resolve issue for floating objects which cross the tiddler frame!\nThe below code should force the tiddler to always wrap around floating elements, so that they are always inside\nRef: https://groups.google.com/d/msg/tiddlywiki/5bZwwj6cyac/2LzFeA7AAwAJ\n*/\n\n.tc-tiddler-body:before, .tc-tiddler-body:after {\n content: \"\";\n display: table;\n}\n.tc-tiddler-body:after {\n clear: both;\n}\n.tc-tiddler-body {\n zoom: 1;\n}","created":"20190902043605186","modified":"20210808052511498","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab":{"title":"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab","text":".tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n background: none;\n border: none;\n border-bottom: solid 1px #737373;\n font-weight: bold;\n color: #DB4C3F;\n}","created":"20191209105546612","modified":"20211117172558880","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/csvtable":{"title":"$:/plugins/kookma/shiraz/styles/csvtable","text":"/* todo section ------------*/\n.tc-tiddler-body p.dblock {\n\tdisplay:none;\n}\n\n/*\nOnly used with csv table\nSee $:/plugins/kookma/shiraz/macros/csvtables/table-csv\nThe @@ produces a p tag.\n*/","created":"20220724164156072","modified":"20220804042939414","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/csvtable-katex":{"title":"$:/plugins/kookma/shiraz/styles/csvtable-katex","text":".falign .katex-display > .katex {text-align:left;}\n.ralign .katex-display > .katex {text-align:right;}\n.table-mathbox tr td{vertical-align: baseline;} /* baseline aligned text and fomula in table cell*/\n\n/*\nOnly used with csv table + katex\nSee $:/plugins/kookma/shiraz/macros/csvtables/formats-math\n*/","created":"20210913204223405","modified":"20210914150205318","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/csvtable-star":{"title":"$:/plugins/kookma/shiraz/styles/csvtable-star","text":"/* Styles for star rating used with table-csv macro */\n.shiraz-star svg{\nwidth: 1.2em;\nheight: 1.2em;\nvertical-align: middle;\nfill:#FF9529; /*Deep Saffron*/\n}","created":"20210808144209865","modified":"20220801113747091","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dbadge":{"title":"$:/plugins/kookma/shiraz/styles/dbadge","text":"/*Credits: \nNishant Srivastava https://codepen.io/nisrulz/pen/bpQWLW\nMohammad Rahmani: https://github.com/kookma\n*/\n.dbadge {\n display: inline-block;\n margin: 0.0em;\n}\n.dbadge > span {\n color: #ffffff;\n font-size: 0.8em;\n font-weight: 400;\n line-height: 1;\n padding: .2em .6em;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;}\n\n.dbadge-subject{\n background-color: #656565;\n border-bottom-left-radius: 0.25em;\n border-top-left-radius: 0.25em;}\n.dbadge-status {\n border-bottom-right-radius: 0.25em;\n border-top-right-radius: 0.25em;}\n\n.dbadge-primary {\n background-color: #337ab7;}\n.dbadge-success {\n background-color: #5cb85c;}\n.dbadge-info {\n background-color: #5bc0de;}\n.dbadge-warning {\n background-color: #f0ad4e;}\n.dbadge-danger {\n background-color: #d9534f;}","created":"20181204192835967","modified":"20210808052511511","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/details-slider":{"title":"$:/plugins/kookma/shiraz/styles/details-slider","text":"/*details html5 macro*/\ndetails > summary {\n padding: 2px 6px;\n font-weight:500;\n outline:none;\n}\ndetails > div {\n padding: 2px 6px;\n margin: 0;\n}\n\n\n/* Styles for summary cursor\nurl: https://css-tricks.com/two-issues-styling-the-details-element-and-how-to-solve-them/\n*/\n\nsummary {\n cursor: pointer;\n}\n\nsummary > * {\n display: inline;\n}\n\n\nbutton .kk-sh-slider svg{\nwidth: 0.8em;\nheight: 0.8em;\nvertical-align: middle;\n}\n\n","created":"20181101185908941","modified":"20220801113903959","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dynamic-tables":{"title":"$:/plugins/kookma/shiraz/styles/dynamic-tables","text":"/* edit-text box for dynamic table */\n.shiraz-dtable-textbox {\n width:100%;\n padding-left: 5px;\n border: none;\n}\n\n.shiraz-dtable-textbox:focus {\n outline: none;\n border: 1px solid #5778d8;\n background: transparent;\n}\n\n.tbl-inpt-edit { width: 100%; background-color: transparent; border: none; color: #000000;}\n\nbutton.tbl-sort-svg > svg { text-shadow: none; fill:#000000; height:10px; padding:0 0 2px 0; }\n\nth .tc-tiddlylink, th a { text-shadow: none; margin: 0 0 0 0; padding: 0 0 0 0; color:#000000; font-weight: bold; }\n\n\n/* DELETE CONFIRMATION */\ntable thead .tbl-delete-confirm > th {\n color: white;\n background-color:#ff0033;\n padding: 8px;\n margin: 0px;\n text-align:center;\n\tfont-weight:normal;\n}\n\ntable thead .tbl-delete-confirm > th > button {\n color: white;\n fill: white;\n}\n\n/* -- pagination --*/\n.shiraz-dtable-page-footer td{\n\tmargin: 0 0 0 0;\n\tpadding: 4px 7px 4px 7px;\n}\n\n.shiraz-dtable-page-footer select{\n\tpadding:0;\n\tmargin:0;\n\tborder:none;\t\n}\n\n.shiraz-dtable-page-footer {\n\ttext-align:center;\n}\n\n.shiraz-dtable-page-prev{\n\tfloat:left;\n\tmargin-right:8px;\n}\n\n.shiraz-dtable-page-next{\n\tfloat:right;\n\tmargin-left:8px;\n}\n\n.shiraz-dtable-page-footer button svg {height:0.7em;}\n.shiraz-dtable-page-footer button {outline: none; line-height:normal;}\n.shiraz-dtable-page-footer button:disabled {display:none;}\n\n/* to format the expanded record (tiddler body) - for local customization like KaTeX numbering */\n.shiraz-dtable-expanded-record{ }\n\n/*to adjust the column width for date/due-date fields*/\n.shiraz-dtable-date{\n\twidth:7em;\n}","created":"20191128184537594","modified":"20211117172018885","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dynamic-tables-var":{"title":"$:/plugins/kookma/shiraz/styles/dynamic-tables-var","created":"20210224171009495","modified":"20220803192224020","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"/* these are dynamic or variable properties based on the tiddlywiki palette */\n\n.shiraz-dtable-page-footer select{\n\tbackground-color: <<color table-header-background>>;\n\tcolor:<<color foreground>>;\n}\n\n.shiraz-dtable-page-footer > td{\n\tbackground-color: <<color table-header-background>>;\n}\n\n/* customize the table footer used for numerical summary*/\n.shiraz-dtable-footer tr td{\n\tbackground-color: <<color table-footer-background>>;\n\tborder:none;\n}\n\n/* correct button color to support dark theme */\n.tbl-container table thead th button{\n\tcolor:<<colour button-foreground>>\n}\n.tbl-container table thead th button svg {\n\tfill:<<colour button-foreground>>;\n}"},"$:/plugins/kookma/shiraz/styles/image-alignment":{"title":"$:/plugins/kookma/shiraz/styles/image-alignment","text":"/*Image aligning classes*/\n.image-align-right{\n float:right;\n margin:0.5em 0 1.3em 1.4em;\n}\n.image-align-left{\n float:left;\n margin: 0.5em 1.4em 1.3em 0;\n}\n.image-align-center{\n display:block;\n margin: 0.5em auto 1.3em; \n}\n\n.image-float-none {\n float: none !important;\n}","created":"20190918193736314","modified":"20210808052511534","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-basic":{"title":"$:/plugins/kookma/shiraz/styles/image-basic","text":".image-basic {\n text-align: center;\n font-style: italic;\n font-size: smaller;\n text-indent: 0;\n padding: 0.5em;\n}","created":"20181119182848505","modified":"20210808052511542","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-overlay":{"title":"$:/plugins/kookma/shiraz/styles/image-overlay","text":".image-overlay-container{\n width: 50%; \n box-sizing: border-box;\n}\n\n@media screen and (max-width: 640px){\n .image-overlay-container{\n display: block;\n width: 100%;\n }\n}\n\n@media screen and (min-width: 900px){\n .image-overlay-container{\n width: 33.33%;\n }\n}\n\n.image-overlay-container .image-overlay-title{\n color: #1a1a1a;\n text-align: center;\n margin-bottom:10px;\n}\n\n.image-overlay-content {\n position: relative;\n width: 90%;\n max-width: 400px;\n margin: auto;\n overflow: hidden;\n}\n\n.image-overlay-content .image-overlay-content-overlay {\n background: rgba(0,0,0,0.7);\n position: absolute;\n height: 99%;\n width: 100%;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n opacity: 0;\n -webkit-transition: all 0.4s ease-in-out 0s;\n -moz-transition: all 0.4s ease-in-out 0s;\n transition: all 0.4s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-overlay{\n opacity: 1;\n}\n\n.image-overlay-content-image{\n width: 100%;\n}\n\n.image-overlay-content-details {\n position: absolute;\n text-align: center;\n padding-left: 1em;\n padding-right: 1em;\n width: 100%;\n top: 50%;\n left: 50%;\n opacity: 0;\n -webkit-transform: translate(-50%, -50%);\n -moz-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transition: all 0.3s ease-in-out 0s;\n -moz-transition: all 0.3s ease-in-out 0s;\n transition: all 0.3s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-details{\n top: 50%;\n left: 50%;\n opacity: 1;\n}\n\n.image-overlay-content-details h3{\n color: #fff;\n font-weight: 500;\n letter-spacing: 0.15em;\n margin-bottom: 0.5em;\n text-transform: uppercase;\n}\n\n.image-overlay-content-details p{\n color: #fff;\n font-size: 0.8em;\n}\n\n.image-overlay-fadeIn-bottom{\n top: 80%;\n}\n\n.image-overlay-fadeIn-top{\n top: 20%;\n}\n\n.image-overlay-fadeIn-left{\n left: 20%;\n}\n\n.image-overlay-fadeIn-right{\n left: 80%;\n}","created":"20181116173704182","modified":"20210808052511547","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-polaroid":{"title":"$:/plugins/kookma/shiraz/styles/image-polaroid","text":".image-polaroid {\n min-width:64px;\n background-color: #f8f9fa;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n.image-polaroid img {\n width: 100%;\n padding:10px;\n height: auto;\n}\n.image-polaroid .image-polaroid-caption {\n padding:10px 15px 10px;\n text-align: center; \n line-height: 1.4em;\n font-weight:300;\n font-size: 0.9em; \n}","created":"20181116094450565","modified":"20210808052511555","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-pretty":{"title":"$:/plugins/kookma/shiraz/styles/image-pretty","text":".image-pretty {\n min-width:64px;\n border: 1px solid #c8ccd1;\n background-color:#f8f9fa;\n}\n.image-pretty:hover {\n border: 1px solid #777;\n}\n.image-pretty img {\n padding:2px;\n width: 100%;\n height: auto;\n}\n.image-pretty .image-pretty-caption {\n padding:10px 15px 10px;\n text-align: center; \n line-height: 1.4em;\n font-weight:300;\n font-size: 0.9em; \n}\n\n","created":"20181115182806512","modified":"20210808052511563","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-slidein":{"title":"$:/plugins/kookma/shiraz/styles/image-slidein","text":".image-slidein { \n display: block; \n position: relative; \n /*float: left;*/\n overflow: hidden; \n /* margin: 0 20px 20px 0;*/\n}\n\n.image-slidein img {\n width: 100%;\n height: auto;\n}\n\n.image-slidein figcaption { \n position: absolute; \n background: rgba(0,0,0,0.75); \n color: white; \n padding: 10px 20px; \n opacity: 0;\n -webkit-transition: all 0.6s ease;\n -moz-transition: all 0.6s ease;\n -o-transition: all 0.6s ease;\n}\n.image-slidein:hover figcaption {\n opacity: 1;\n}\n.image-slidein:before { \n content: \"?\"; \n position: absolute; \n font-weight: 800; \n background: rgba(255,255,255,0.75); \n text-shadow: 0 0 5px white;\n color: black;\n width: 24px;\n height: 24px;\n -webkit-border-radius: 12px;\n -moz-border-radius: 12px;\n border-radius: 12px;\n text-align: center;\n font-size: 14px;\n line-height: 24px;\n -moz-transition: all 0.6s ease;\n opacity: 0.75;\t\n}\n.image-slidein:hover:before {\n opacity: 0;\n}\n\n.mr-cap-left:before { bottom: 10px; left: 10px; }\n.mr-cap-left figcaption { bottom: 0; left: -30%; }\n.mr-cap-left:hover figcaption { left: 0; }\n\n.mr-cap-right:before { bottom: 10px; right: 10px; }\n.mr-cap-right figcaption { bottom: 0; right: -30%; }\n.mr-cap-right:hover figcaption { right: 0; }\n\n.mr-cap-top:before { top: 10px; left: 10px; }\n.mr-cap-top figcaption { left: 0; top: -30%; }\n.mr-cap-top:hover figcaption { top: 0; }\n\n.mr-cap-bottom:before { bottom: 10px; left: 10px; }\n.mr-cap-bottom figcaption { left: 0; bottom: -30%;}\n.mr-cap-bottom:hover figcaption { bottom: 0; }\n","created":"20181117040213926","modified":"20210808052511579","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/mono":{"title":"$:/plugins/kookma/shiraz/styles/mono","text":".mono {\n\tcolor:unset;\n\tbackground-color: #f7f7f9;\n\tborder: 1px solid #e1e1e8;\n\twhite-space: pre-wrap;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: \"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;\n}","created":"20181010192406005","modified":"20210808052511602","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/column":{"title":"$:/plugins/kookma/shiraz/styles/multicols/column","text":"/* multicolumn layouts with fixed column number works on the whole tiddler */\n.multicol .tc-tiddler-body {\n column-width: 14em;\n column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.multicol2 .tc-tiddler-body {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.multicol3 .tc-tiddler-body {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n\n/* remove the extra space from first paragraph */\n.multicol .tc-tiddler-body > :first-child, \n.multicol2 .tc-tiddler-body > :first-child, \n.multicol3 .tc-tiddler-body > :first-child { margin-top: 0;}\n\n/*-------------------------------------------------------------------------------*/\n/* Classes for using with macro and div elements */\n.sh-multicol {\n column-width: 14em;\n column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.sh-multicol2 {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.sh-multicol3 {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n/* remove the extra space from first paragraph */\n.sh-multicol > :first-child,\n.sh-multicol2 > :first-child,\n.sh-multicol3 > :first-child { margin-top: 0;}","created":"20190627204703061","modified":"20210808052511607","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex":{"title":"$:/plugins/kookma/shiraz/styles/multicols/flex","text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n/* margin-right: -15px;\n margin-left: -15px;*/\n}\n\n.flex-col,\n.flex-col-1, \n.flex-col-2, \n.flex-col-3,\n.flex-col-4 {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n/* for small screen width>=576px\nhttps://getbootstrap.com/docs/4.3/layout/grid/\n*/\n@media (min-width: 576px) {\n.flex-col {flex: 1 1 0; max-width: 100%;}\n.flex-col-1 {flex: 0 0 25%; max-width:25%}\n.flex-col-2 {flex: 0 0 50%; max-width:50%}\n.flex-col-3 {flex: 0 0 75%; max-width:75%}\n.flex-col-4 {flex: 0 0 100%; max-width:100%}\n}\n\n.flex-col > :first-child,\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child,\n.flex-col-4 > :first-child {\n margin-top: 0;}\n\n\n/* Alignment */\n.flex-align-items-center {\n align-items: center !important;\n}\n.flex-justify-content-center {\n justify-content: center !important;\n}\n\n.flex-no-gutters {\n margin-right: 0;\n margin-left: 0;\n}","created":"20191014193910006","modified":"20210808052511613","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex backup":{"title":"$:/plugins/kookma/shiraz/styles/multicols/flex backup","text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n.flex-col-1, \n.flex-col-2, \n.flex-col-3 {\n position: relative;\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n.flex-col-1{flex: 1 1 0;}\n.flex-col-2{flex: 2 1 0;}\n.flex-col-3{flex: 3 1 0;}\n\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child {\n\tmargin-top: 0;}","created":"20191030140900552","modified":"20210808052511618","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/storyriver":{"title":"$:/plugins/kookma/shiraz/styles/multicols/storyriver","text":"/* create story river in two column layout */\n.tc-story-river {\n display: flex;\n flex-wrap: wrap;\n}\n\n.tc-tiddler-frame\n{\n max-width: 49%; margin-right: 1%;\n /*max-width: 32%; margin-right: 1%; */\n}\n","created":"20140523214749659","modified":"20210808150936240","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/notebook":{"title":"$:/plugins/kookma/shiraz/styles/notebook","text":"@media print{\n .notebook .tc-tiddler-body {\n padding-left:60px;\n margin-top:25px;\n }\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper {\n padding-left:60px;\n }\n}\n\n@media screen{\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper,\n\t.notebook .tc-tiddler-body {\n padding-left:30px;\n }\n\n}\t\n\n@media screen and (max-width:960px) {\n .notebook .tc-tiddler-title,\n .notebook .tc-subtitle,\n .notebook .tc-tags-wrapper,\n .notebook .tc-tiddler-body {\n padding-left:60px;\n }\n\n}\n/*prevent applying left border in edit mode */\n.notebook:not([data-tiddler-title^=\"Draft of\"]):before {\n content: '';\n position: absolute;\n top: 0; bottom: 0; left: 0;\n width: 50px;\n background: radial-gradient(#575450 6px, transparent 7px) repeat-y;\n background-size: 30px 30px;\n border-right: 3px solid #D44147;\n\t z-index:1;\n}\n\n.notebook .tc-tiddler-body {\n\t position: relative;\n background: linear-gradient(transparent, transparent 1.95em, #91D1D3 1.95em);\n background-size: 2em 2em;\n\t min-height:90px; \n}\n\n.notebook .tc-tiddler-body{\n\t padding-top:20px;\n font-family: \"Handlee\", cursive;\n font-weight:300;\n line-height:2em;\n color:#696969;\n}\n\n/* Setting font for other elements */\n.notebook .tc-tiddler-body pre,\n.notebook .tc-tiddler-body code,\n.notebook .tc-tiddler-body pre code\n{\n font-family: \"Handlee\", cursive;\n font-weight:300;\n}","created":"20210420164111716","modified":"20210808052511631","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/sticky-footer":{"title":"$:/plugins/kookma/shiraz/styles/sticky-footer","text":".sticky-footer {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 0.5rem;\n background-color: #efefef;\n text-align: center;\n margin-top: 5px;\n box-sizing: border-box;\n width: 100%;\n}\n","created":"20180907070611557","modified":"20210808052511635","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tables":{"title":"$:/plugins/kookma/shiraz/styles/tables","text":".table-tight{\n\tfont-size:0.8em;\n}\n\n\n/*\nThis tiddler defines the custom stylesheet for tables \nApril 13, 2018\n*/\n\n/*center aligned table*/\n.table-center {\n margin:0 auto;\n}\n\n/* Table caption at top */\n.table-caption-top caption {\n caption-side:top;\n margin-bottom:0.2rem;\n}\n\n/* Striped row table */\n.table-striped-row tr:nth-child(even) td{\n background-color:#F3F6F6; \n}\n\n/* Striped column table */\n.table-striped-col tbody tr td:nth-child(odd) {\n\tbackground-color: #F3F6F6;\n}\n\n/*Borderless table*/\n.table-borderless, \n.table-borderless thead td, \n.table-borderless th, \n.table-borderless tr, \n.table-borderless td{\n border:0;\n}\n\n/* Table lines should be used with table-borderless for abbreviations and two column layout */\n\n.table-lines thead td, .table-lines th{\n border-bottom: 2px solid #dddddd;\n\t background-color:unset;\n }\n.table-lines td{\n border-bottom: 1px solid #dddddd;\n background-color:unset;\n }\n\n/* Table hover (yellow background on mouse over) */\n.table-hover tbody tr:hover{\n color: #212529;\n background-color: #e6e6e6;\n}\n.table-hover-yellow tbody tr:hover{background-color: #ffffcc;}\n.table-hover-cyan tbody tr:hover{background-color: #e6ffff;}\n\n/* Table with colored header */\n.thead-primary thead td, .thead-primary th{background-color: #007bff; color: #fff;}\n.thead-secondary thead td, .thead-secondary th{background-color: #6c757d; color: #fff;}\n.thead-success thead td, .thead-success th{background-color: #28a745; color: #fff;}\n.thead-warning thead td, .thead-warning th{background-color: #ffc107; color: #fff;}\n.thead-danger thead td, .thead-danger th{background-color: #dc3545; color: #fff;}\n.thead-info thead td, .thead-info th{background-color: #17a2b8; color: #fff;}\n.thead-dark thead td, .thead-dark th{background-color: #343a40; color: #fff;}\n.thead-light thead td, .thead-light th{background-color: #f8f9fa; color: #212529;}\n\n/* Table with colored header correct to fill svgs with white color */\n.thead-primary > thead> tr > td svg, .thead-primary > thead> tr > th svg,\n.thead-secondary > thead> tr > td svg, .thead-secondary > thead> tr > th svg,\n.thead-success > thead> tr > td svg, .thead-success > thead> tr > th svg,\n.thead-warning > thead> tr > td svg, .thead-warning > thead> tr > th svg,\n.thead-danger > thead> tr > td svg, .thead-danger > thead> tr > th svg,\n.thead-info > thead> tr > td svg, .thead-info > thead> tr > th svg,\n.thead-dark > thead> tr > td svg, .thead-dark > thead> tr > th svg\n {fill:#ffffff; padding:0 0 3px 0; }\n\n\n.thead-primary th .tc-tiddlylink, .thead-primary th a,\n.thead-secondary th .tc-tiddlylink, .thead-primary th a,\n.thead-success th .tc-tiddlylink, .thead-primary th a,\n.thead-warning th .tc-tiddlylink, .thead-primary th a,\n.thead-danger th .tc-tiddlylink, .thead-primary th a,\n.thead-info th .tc-tiddlylink, .thead-primary th a,\n.thead-dark th .tc-tiddlylink, .thead-primary th a{color:#ffffff}\n","created":"20180413092232257","modified":"20210808052511640","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tiddler-title-class":{"title":"$:/plugins/kookma/shiraz/styles/tiddler-title-class","text":".title-primary .tc-title {\n color: #007bff;\n}\n.title-secondary .tc-title {\n color: #6c757d;\n}\n.title-success .tc-title {\n color: #28a745;\n}\n.title-info .tc-title {\n color: #17a2b8;\n}\n.title-warning .tc-title {\n color: #ffc107;\n}\n.title-danger .tc-title {\n color: #dc3545;\n}\n.title-light .tc-title {\n color: #f8f9fa;\n}\n.title-dark .tc-title {\n color: #343a40;\n}\n.title-white .tc-title {\n color: #fff;\n}","created":"20191101112257846","modified":"20210808052511648","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/ui/colorify-buttons":{"title":"$:/plugins/kookma/shiraz/styles/ui/colorify-buttons","text":"/* These css rules makes page control buttons in beatiful color */\n\n/*page control buttons*/\n.tc-page-controls .tc-image-new-button { fill: #5EB95E; } /*New tiddler button*/\n.tc-page-controls .tc-image-options-button { fill:#8058A5; } /*Open control pannel*/\n\n/* These css rules makes tiddler viewtoolbar buttons in beatiful color */\n\n.tc-tiddler-controls .tc-image-edit-button{fill:#f37b1d}\n.tc-tiddler-controls .tc-image-info-button{fill:#0e90d2}","created":"20191029092047069","modified":"20220801115310318","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/ui/edit-toolbar-buttons":{"title":"$:/plugins/kookma/shiraz/styles/ui/edit-toolbar-buttons","text":"/*Tiddler edit toolbar buttons as traffic lights*/\n.tc-tiddler-controls .tc-image-delete-button {fill:#ebb;}\n.tc-tiddler-controls .tc-image-cancel-button {fill:#ed9;}\n.tc-tiddler-controls .tc-image-done-button {fill:#beb;}","created":"20191029091851469","modified":"20220801114726830","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/ui/view-toolbar-button-visibility":{"title":"$:/plugins/kookma/shiraz/styles/ui/view-toolbar-button-visibility","text":"/* Mouseover toolbar visibility: courtesy from Tobias Beer*/\n.tc-tiddler-frame .tc-titlebar button {\n opacity: 0;\n transition: opacity .5s ease-in-out;\n}\n.tc-tiddler-frame:hover .tc-titlebar button {\n zoom: 1;\n filter: alpha(opacity=100);\n opacity: 1;\n}\n","created":"20191029094209435","modified":"20220801114522318","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/templates/body/color":{"title":"$:/plugins/kookma/shiraz/templates/body/color","created":"20200210160016959","modified":"20210808052511653","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"color","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n<style>\n.dt:not(:disabled):dt(.disabled) {cursor: pointer;}\na.dt.disabled,fieldset:disabled a.dt {pointer-events: none;}\n</style>\n<$link overrideClass=\"dt disabled\" to=\"\">\n<$edit-text tag=input type=color tiddler=<<currentRecord>> field=color/>\n</$link>\n\\end\n\n\\define edit_color() <$edit-text tag=input type=color tiddler=<<currentRecord>> field=<<currentColumn>>/>\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<edit_color>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/date":{"title":"$:/plugins/kookma/shiraz/templates/body/date","created":"20170128100657312","modified":"20211117172100619","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"created modified","type":"text/vnd.tiddlywiki","text":"<td class=\"shiraz-dtable-date\">\n<$view tiddler=<<currentRecord>> field=<<currentColumn>> format=\"date\" template=\"YYYY.0MM.0DD\"/>\n</td>"},"$:/plugins/kookma/shiraz/templates/body/default":{"title":"$:/plugins/kookma/shiraz/templates/body/default","created":"20191125202328213","modified":"20210808052511665","tags":"$:/tags/Table/BodyTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/due-date":{"title":"$:/plugins/kookma/shiraz/templates/body/due-date","created":"20200206191120454","modified":"20211117172046922","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"due-date","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n<$set tiddler=<<currentRecord>> field=<<currentColumn>> name=due-date>\n<$text text={{{[<due-date>split[-]split[.]join[]format:date[YYYY.0MM.0DD]]}}} />\n</$set>\n\\end\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\\define edit_date() <$edit-text tag=input type=date tiddler=<<currentRecord>> field=<<currentColumn>>/>\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\" class=\"shiraz-dtable-date\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<edit_date>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>\n\n<!-- Part of Task Manager\n this template ALWAYS works on fields -->"},"$:/plugins/kookma/shiraz/templates/body/email":{"title":"$:/plugins/kookma/shiraz/templates/body/email","created":"20191202210913762","modified":"20210808052511678","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"email","type":"text/vnd.tiddlywiki","text":"\\define display-email-address()\n<a class=\"tc-tiddlylink-external\" href=\"mailto:$(currentRecord)$!!$(currentColumn)$\" rel=\"noopener noreferrer\" target=\"_blank\">\n<<showCell>>\n</a>\n\\end\n\\define display-email-address_Locked()\n<a class=\"tc-tiddlylink-external\" href=\"mailto:$(currentRecord)$!!$(currentColumn)$\" rel=\"noopener noreferrer\" target=\"_blank\">\n<<showCell_Locked>>\n</a>\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<display-email-address>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n<<display-email-address_Locked>>\n</$list>\n</$reveal>\n\n"},"$:/plugins/kookma/shiraz/templates/body/priority":{"title":"$:/plugins/kookma/shiraz/templates/body/priority","created":"20200424102701026","modified":"20210808052511686","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"priority","type":"text/vnd.tiddlywiki","text":"\\define circle(color, fill)\n<svg width=\"12\" height=\"12\" >\n<circle cx=\"6\" cy=\"6\" r=\"5\" stroke=<<__color__>> fill=<<__fill__>> stroke-width=\"1\"/>\n</svg>\n\\end\n\n\\define showCell()\n<$list filter=\"[<currentRecord>get<currentColumn>match[very high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#dc3545\" fill=\"#f8d7da\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#ff8c00\" fill=\"#fff3cd\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[normal]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#17a2b8\" fill=\"#d1ecf1\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#007bff\" fill=\"#cce5ff\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[very low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#6c757d\" fill=\"#e2e3e5\"/>\n</$list>\n <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> />\n\\end\n\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\n\\define select_priority()\n<$select tiddler=<<currentRecord>> field=<<currentColumn>> default=\"\"><option value=''>Select...</option><option value='very high'>very high</option><option value='high'>high</option><option value='normal'>normal</option><option value='low'>low</option><option value='very low'>very low</option><option value=''>no priority</option></$select>\n\\end\n\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<select_priority>> >\n <<showCell_Locked>>\n</$list>\n<$reveal>\n\n<!-- Part of Task Manager\n this template ALWAYS works on fields\n -->"},"$:/plugins/kookma/shiraz/templates/body/status":{"title":"$:/plugins/kookma/shiraz/templates/body/status","created":"20200424100127763","modified":"20210808052511690","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"status","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\\define select_status()\n<$select tiddler=<<currentRecord>> field=<<currentColumn>> default=\"\"><option value=''>Select...</option><option value='open'>open</option><option value='not started'>not started</option><option value='in-work'>in-work</option><option value='on-hold'>on-hold</option><option value='complete'>complete</option><option value='rework'>rework</option><option value='closed'>closed</option></$select>\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<select_status>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>\n\n<!-- Part of Task Manager\n this template ALWAYS works on fields -->"},"$:/plugins/kookma/shiraz/templates/body/tags":{"title":"$:/plugins/kookma/shiraz/templates/body/tags","created":"20191125193831767","modified":"20210808052511699","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tags","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$list filter=\"[title<currentRecord>tags[]]\">\n<span class=\"tc-tag-list-item\" >\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} color={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<tempTagPopup>> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<tempTagPopup>> style=\"position:absolute; z-index:9999;\" type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n</$list>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox","created":"20200206150644636","modified":"20220803160452747","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"\\define rowStyle() color:<<colour foreground>>; background-color:<<colour table-header-background>>;\n<td style=\"width:28px;text-align:center;\">\n<$checkbox tiddler=<<currentRecord>> tag=\"Done\"\ncheckactions=\"\"\"<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> $value=<<rowStyle>> /><$action-setfield $tiddler=<<currentRecord>> status=\"complete\"/>\"\"\"\nuncheckactions=\"\"\"<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> /><$action-setfield $tiddler=<<currentRecord>> status=\"rework\"/>\"\"\" />\n</td>\n\n<!-- classic style\n\"color:#155724;background-color:#d4edda;\"\n<<colour tab-foreground>>; background-color:<<colour tab-background>>\n-->"},"$:/plugins/kookma/shiraz/templates/body/tbl-clone":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-clone","created":"20201203153613838","modified":"20210808052511708","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"\\define cloneTiddler() <$action-createtiddler $basetitle=<<currentRecord>> $template=<<currentRecord>> />\n\n<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td style=\"width:28px;text-align:center;\">\n <$button actions=<<cloneTiddler>> class=\"tc-btn-invisible\">\n\t {{$:/core/images/clone-button}}\n\t</$button>\n</td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/body/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-delete","created":"20170212101814663","modified":"20210808052511715","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td style=\"width:28px;text-align:center;\">\n <$button class=\"tc-btn-invisible\">\n <$action-sendmessage $message=\"tm-delete-tiddler\" $param=<<currentRecord>>/>\n {{$:/core/images/delete-button}}\n </$button>\n</td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/body/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-expand","created":"20200209072642825","modified":"20210808052511720","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" state=<<tempPathExpand>> text=\"show\" tag=\"td\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\">\n <$action-setfield $tiddler=<<tempTableExpand>> $index=<<currentRecord>> $value=\"show\" />\n {{$:/core/images/right-arrow}}\n </$button>\n</$reveal>\n<$reveal type=\"match\" state=<<tempPathExpand>> text=\"show\" tag=\"td\">\n <$button class=\"tc-btn-invisible tc-tiddlylink\">\n <$action-setfield $tiddler=<<tempTableExpand>> $index=<<currentRecord>>/>\n {{$:/core/images/down-arrow}}\n </$button>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/tbl-linktype":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-linktype","created":"20210501184147078","modified":"20210808052511724","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-linktype","type":"text/vnd.tiddlywiki","text":"<td>\n<$text text={{{ [all[current]links[]match<currentRecord>then[link]] [all[current]backlinks[]match<currentRecord>then[backlink]] [all[current]tagging[]match<currentRecord>then[tagging]] ~[[transclusion]] }}} />\n</td>\n<!-- \ntb-linktype is not sortable not editable. The priority is as below:\nlink, backlink, tagging, transclusion\n-->"},"$:/plugins/kookma/shiraz/templates/body/title":{"title":"$:/plugins/kookma/shiraz/templates/body/title","created":"20170128100357203","modified":"20210808052511731","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"title","type":"text/vnd.tiddlywiki","text":"<td>\n<$link to=<<currentRecord>>><$text text=<<currentRecord>> /></$link>\n</td>"},"$:/plugins/kookma/shiraz/templates/body/type":{"title":"$:/plugins/kookma/shiraz/templates/body/type","created":"20200210063953546","modified":"20210808052511737","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"type","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n<td>\n<<showCell>>\n</td>\n<!-- Note that the showCell here overrides the global showCell from table-dynamic macro -->"},"$:/plugins/kookma/shiraz/templates/footer/default":{"title":"$:/plugins/kookma/shiraz/templates/footer/default","created":"20200130171717175","modified":"20210808052511744","tags":"$:/tags/Table/FooterTemplate","type":"text/vnd.tiddlywiki","text":"<$vars idx={{{ [<currentColumn>addsuffix[/]addsuffix<footerRow>] }}}>\n<$set name=getFieldOrIndex filter=\"[<fieldOrIndex>]-index\" value=\"get\" emptyValue=\"getindex\">\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$transclude tiddler=<<tempTableFooter>> index=<<idx>> mode=\"inline\" />\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$edit-text tiddler=<<tempTableFooter>> index=<<idx>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n</$reveal>\n</$set>\n</$vars>"},"$:/plugins/kookma/shiraz/templates/footer/tbl-clone":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-clone","created":"20201203155343568","modified":"20210808052511749","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td></td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/footer/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-delete","created":"20200130174835714","modified":"20210808052511757","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td></td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/footer/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-expand","created":"20200130173518861","modified":"20210808052511762","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<td style=\"width:28px;\"></td>"},"$:/plugins/kookma/shiraz/templates/header/default":{"title":"$:/plugins/kookma/shiraz/templates/header/default","created":"20170205223914688","modified":"20210808165151493","tags":"$:/tags/Table/HeaderTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableSort>> stateIndex=\"sortIndex\" text=<<currentColumn>> tag=\"th\">\n<$button setTitle=<<tempTableSort>> setIndex=\"sortIndex\" setTo=<<currentColumn>> class=\"tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"hasnegate\" $value=\"false\"/>\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"\"/>\n<span style=\"text-transform: capitalize;\"><$text text=<<currentColumn>>/></span>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableSort>> stateIndex=\"sortIndex\" text=<<currentColumn>> tag=\"th\">\n<$list filter=\"[<tempTableSort>getindex[hasnegate]match[false]]\" variable=ignore><!--set negate for sort-->\n<$button setTitle=<<tempTableSort>> setIndex=\"hasnegate\" setTo=\"true\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"!\"/>\n<span style=\"text-transform: capitalize;\"><$text text=<<currentColumn>>/></span> {{$:/core/images/down-arrow}}\n</$button>\n</$list>\n<$list filter=\"[<tempTableSort>getindex[hasnegate]match[true]]\" variable=ignore><!--remove negate for sort-->\n<$button setTitle=<<tempTableSort>> setIndex=\"hasnegate\" setTo=\"false\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"\"/>\n<span style=\"text-transform: capitalize;\"><$text text=<<currentColumn>>/></span> {{$:/core/images/up-arrow}}\n</$button>\n</$list>\n</$reveal>\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox","created":"20200206151157578","modified":"20220803160745475","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"\\define rowStyle() color:<<colour foreground>>; background-color:<<colour table-header-background>>;\n\n\\define chk-checkactions()\n<$list filter=\"[subfilter<inputFilter>]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<<currentRecord>> $tags=\"+[append[Done]]\" />\n<$action-setfield $tiddler=<<currentRecord>> status=\"complete\"/>\n<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> $value=<<rowStyle>> />\n</$list>\n\\end\n\\define chk-uncheckactions()\n<$list filter=\"[subfilter<inputFilter>]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<<currentRecord>> $tags=\"+[remove[Done]]\" />\n<$action-setfield $tiddler=<<currentRecord>> status=\"rework\"/>\n<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> />\n</$list>\n\\end\n\n<th style=\"width:28px;min-width:28px;\">\n<$checkbox checkactions=<<chk-checkactions>> uncheckactions=<<chk-uncheckactions>> />\n</th>\n\n<!-- old style for checked row\n\"color:#155724;background-color:#d4edda;\"\n-->"},"$:/plugins/kookma/shiraz/templates/header/tbl-clone":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-clone","created":"20201203155440168","modified":"20210808052511782","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-clone","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<th style=\"width:28px;text-align:center;\">\n<span>\n<$button class=\"tc-btn-invisible\" disabled=yes tooltip=\"disabled button\" style=\"cursor:default\">\n{{$:/core/images/clone-button}}\n</$button>\n</span>\n</th>\n</$list>"},"$:/plugins/kookma/shiraz/templates/header/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-delete","created":"20170212102107998","modified":"20210808052511788","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<th style=\"width:28px;text-align:center;\">\n <span>\n <$button class=\"tc-btn-invisible\">\n <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" text=<<currentTable>>/>\n {{$:/core/images/delete-button}}\n </$button>\n </span>\n</th>\n</$list>"},"$:/plugins/kookma/shiraz/templates/header/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-expand","created":"20200209072944418","modified":"20220109164215950","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<th style=\"width:28px;min-width:28px;\">\n <$list filter=\"[<tempTableExpand>indexes[]limit[1]]\">\n <$button class=\"tc-btn-invisible\">{{$:/core/images/fold-button}}\n <$action-setfield $tiddler=<<tempTableExpand>> text=\"\"/>\n </$button>\n </$list>\n</th>"},"$:/plugins/kookma/shiraz/templates/header/tbl-linktype":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-linktype","created":"20210517200330994","modified":"20210808052511806","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-linktype","type":"text/vnd.tiddlywiki","text":"<th style=\"width:32px;text-align:center;cursor:default;\">Linktype</th>\n<!-- \ntb-linktype is not sortable not editable\n-->"},"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette":{"title":"$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette","caption":"{{$:/plugins/kookma/shiraz/images/palette-switch}} {{$:/language/Buttons/Shiraz/Caption}}","created":"20201210171047824","dark-palette":"$:/palettes/SolarFlare","description":"Toggle between light/dark color palette","light-palette":"$:/palettes/Vanilla","list-after":"","modified":"20220803185853934","tags":"$:/tags/PageControls","type":"text/vnd.tiddlywiki","text":"\\whitespace trim\n<$vars \ndarkPalette ={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!dark-palette}}\nlightPalette={{$:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette!!light-palette}}\n> \n<$button \n tooltip={{$:/language/Buttons/Shiraz/Hint}} \n aria-label={{$:/language/Buttons/Shiraz/Caption}} \n class=<<tv-config-toolbar-class>>\n>\n <$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n {{$:/plugins/kookma/shiraz/images/palette-switch}}\n </$list>\n\n <$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n <span class=\"tc-btn-text\">switch palettes</span>\n </$list>\n\n <$reveal type=\"match\" state=\"$:/palette\" text=<<darkPalette>> > \n <$action-setfield $tiddler=\"$:/palette\" text=<<lightPalette>> />\n </$reveal>\n <$reveal type=\"nomatch\" state=\"$:/palette\" text=<<darkPalette>> >\n <$action-setfield $tiddler=\"$:/palette\" text=<<darkPalette>> >\n </$reveal>\n</$button>\n</$vars>"},"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings":{"title":"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings","caption":"Shiraz","created":"20191018054657077","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20220801115256994","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"These settings let you customise the behaviour of Shiraz plugin.\n\n---\n\n;Show Shiraz setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar</$checkbox>\n\n;Options\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/multicols/storyriver\" tag=\"$:/tags/Stylesheet\"> Multicolumn story river</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/ui/colorify-buttons\" tag=\"$:/tags/Stylesheet\"> Colorful UI buttons</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/ui/view-toolbar-button-visibility\" tag=\"$:/tags/Stylesheet\"> Tiddler visibility on mouse hover</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/ui/edit-toolbar-buttons\" tag=\"$:/tags/Stylesheet\"> Traffic lights for edit toolbar buttons</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab\" tag=\"$:/tags/Stylesheet\"> Colorify sidebar tabs</$checkbox>\n\n;Set dark and light palettes\n{{$:/plugins/kookma/shiraz/ui/set-dark-light-palette}}\n\n\n"},"$:/plugins/kookma/shiraz/ui/set-dark-light-palette":{"title":"$:/plugins/kookma/shiraz/ui/set-dark-light-palette","created":"20210510155820574","dark-palette":"$:/palettes/SolarFlare","light-palette":"$:/palettes/Vanilla","modified":"20210808052511827","tags":"","type":"text/vnd.tiddlywiki","text":"\\define switchpaletteTid() $:/plugins/kookma/shiraz/ui/Buttons/SwitchPalette\n\n\\define selectPelette(title, default, tiddler, field)\n<label class=\"kk-switch-label\">$title$</label>\n<$select tiddler=<<__tiddler__>> field=<<__field__>> default=\"\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Palette]]\" >\n<option value=<<currentTiddler>> >\n<$view field='name'>\n <$view field='title'/>\n</$view>\n</option>\n</$list>\n</$list>\n\\end\n\n<div style=\"margin-left:40px\">\n\n<$macrocall $name=selectPelette \n title=\"Dark palette\" filter=<<filterNight>> \n\tdefault=\"$:/palettes/SolarizedDark\" field=\"dark-palette\" \n\ttiddler=<<switchpaletteTid>> /><br>\n\n<$macrocall $name=selectPelette \n title=\"Light palette\" filter=<<filterDay>> \n\tdefault=\"$:/palettes/Vanilla\" field=\"light-palette\" \n\ttiddler=<<switchpaletteTid>> />\n\n<label class=\"kk-switch-label\">Reset to default</label>\n<$button> {{$:/core/images/erase}}\n<$action-setfield \n $tiddler=<<switchpaletteTid>> \n\t$field=dark-palette \n\t$value={{!!dark-palette}} />\n<$action-setfield \n $tiddler=<<switchpaletteTid>> \n\t$field=light-palette \n\t$value={{!!light-palette}} />\t\n\t\n<$action-setfield \n $tiddler=\"$:/palette\" \n\t$field=text\n\t$value={{!!light-palette}} />\t\t\n</$button>\n</div>\n<style>\n.kk-switch-label{\n width:105px;\n display: inline-block;\n}\n</style>\t"},"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer":{"title":"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer","created":"20180907071314793","modified":"20210808052511833","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]has[sticky-footer]]\">\n<div class=\"sticky-footer\">\n{{!!sticky-footer}}\n</div>\n</$list>\n"},"$:/language/Buttons/Shiraz/Hint":{"title":"$:/language/Buttons/Shiraz/Hint","created":"20210520125309893","modified":"20210808054302552","tags":"","type":"text/vnd.tiddlywiki","text":"Switch dark/light color palette"},"$:/language/Buttons/Shiraz/Caption":{"title":"$:/language/Buttons/Shiraz/Caption","created":"20210520125335245","modified":"20210808054312009","tags":"","type":"text/vnd.tiddlywiki","text":"Switch dark/light color palette"}}}
{"tiddlers":{"$:/plugins/kookma/tamasha/animations/slideIn":{"title":"$:/plugins/kookma/tamasha/animations/slideIn","text":"/* https://www.w3schools.com/w3css/w3css_animate.asp*/\n.tamasha-animation-slidedown{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}\n.tamasha-animation-slideleft{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}\n.tamasha-animation-slideright{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}\n.tamasha-animation-slideup{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}\n.tamasha-animation-slidezoom {animation:animatezoom 0.8s ease-out}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}","created":"20210130184033628","modified":"20210131150814704","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/history":{"title":"$:/plugins/kookma/tamasha/history","created":"20210107204722366","modified":"20210202174123721","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log https://kookma.github.io/TW-Tamasha/#ChangeLog\n\n* ''0.4.2'' -- 2021.02.02 -- linear scaling of font size, new kimia theme\n* ''0.4.2'' -- 2021.02.01 -- css and ui cleanup\n* ''0.4.0'' -- 2021.01.27 -- dynamic font size for slide\n* ''0.3.0'' -- 2021.01.25 -- new shortcut keys, new transition effects for progress bar\n* ''0.2.0'' -- 2021.01.24 -- beta release\n* ''0.1.0'' -- 2020.12.12 -- alpha release\n"},"$:/plugins/kookma/tamasha/license":{"title":"$:/plugins/kookma/tamasha/license","created":"20210107204722371","modified":"20210129140611672","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2020 - 2021 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/tamasha/macros/frame":{"title":"$:/plugins/kookma/tamasha/macros/frame","created":"20210119143256561","modified":"20210131165620152","tags":"$:/tags/Macro/Tamasha","type":"text/vnd.tiddlywiki","text":"\\define presentation-frame-focus-selector() .$(myState)$\n\\define presentation-frame-class() tamasha-presentation-frame $(myState)$\n\n\\define slideBackground() [<stateNavigatorTid>get[text]] ~[tag<mainTag>first[]] :and[get[background]addprefix[background-color:]addsuffix[;]]\n"},"$:/plugins/kookma/tamasha/macros/navigator":{"title":"$:/plugins/kookma/tamasha/macros/navigator","created":"20201231071150623","modified":"20210129140329956","tags":"$:/tags/Macro/Tamasha","type":"text/vnd.tiddlywiki","text":"\\define stateNavigatorTid() $:/state/tamasha/navigator/$(currentTiddler)$/$(myState)$\n\\define loopSlides() [tag<mainTag>$(loopState)$[]]\n\n\\define goHome() <$action-setfield $tiddler=<<stateNavigatorTid>> text={{{[tag<mainTag>first[]]}}}/>\n\\define goEnd() <$action-setfield $tiddler=<<stateNavigatorTid>> text={{{[tag<mainTag>last[]]}}}/>\n\n\n\n\\define nextSlide() \n<$vars currentTid={{{[<stateNavigatorTid>get[text]] ~[tag<mainTag>first[]]}}}>\n<$list filter=\"[<loopShow>match[yes]then[first]else[last]]\" variable=\"loopState\">\n<$action-setfield $tiddler=<<stateNavigatorTid>> \n text={{{ [tag<mainTag>after<currentTid>] ~[subfilter<loopSlides>] }}} />\n</$list>\t\n</$vars>\n\\end\n\n\\define previousSlide()\n<$vars currentTid={{{[<stateNavigatorTid>get[text]]}}}>\n<$list filter=\"[<loopShow>match[yes]then[last]else[first]]\" variable=\"loopState\">\n<$action-setfield $tiddler=<<stateNavigatorTid>> \n text={{{ [tag<mainTag>before<currentTid>] ~[subfilter<loopSlides>] }}} />\n</$list>\t\t\n</$vars>\n\\end\n\n\\define navigator()\n<$list filter=\"[<stateNavigatorTid>get[text]] ~[tag<mainTag>first[]]\" variable=\"currentSlide\" emptyMessage=\"No slide existed or wrong input\">\n\t<div class=<<animationClass>> ><!-- this div also used for flexbox layout -->\n\t<$transclude tiddler=<<myTemplate>> mode=block/>\n\t</div>\n</$list> \n\\end"},"$:/plugins/kookma/tamasha/macros/presenter":{"title":"$:/plugins/kookma/tamasha/macros/presenter","created":"20210122151112086","modified":"20210131195124929","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define presenter(tag, loop:\"no\", footer:\"\", template:\"vanilla\", theme:\"vanda\", animation, state)\n\\import [all[tiddlers+shadows]tag[$:/tags/Macro/Tamasha]]\n<$vars\n mainTag=<<__tag__>>\n loopShow=<<__loop__>>\n slideFooter=<<__footer__>> \n myTemplate={{{ [all[tiddlers+shadows]tag[$:/tags/Tamasha/Template]search:title<__template__>] ~$:/plugins/kookma/tamasha/templates/vanilla }}} \n myTheme={{{ [all[tiddlers+shadows]tag[$:/tags/Tamasha/Theme]getindex<__theme__>] ~[<__theme__>] }}}\n animationClass={{{[<__animation__>trim[]!is[blank]addprefix[tamasha-animation-]]}}}\n myState={{{ [<__state__>trim[]is[blank]then[presenter]else<__state__>addsuffix<qualify>] }}}\n SlidesCount={{{[tag<__tag__>count[]]}}}\n >\n<$keyboard key=\"F\" actions=<<toggle-presentation-mode>> >\n<$keyboard key=\"escape\" actions=<<toggle-author-mode>> >\n<$keyboard key=\"H\" actions=<<goHome>> >\n<$keyboard key=\"E\" actions=<<goEnd>> >\n<$keyboard key=\"right down enter space\" actions=<<nextSlide>> >\n<$keyboard key=\"left up backspace\" actions=<<previousSlide>> >\n\n<div class=<<myTheme>> ><!-- apply theme -->\n<div class=<<presentation-frame-class>> tabindex=1 style={{{[subfilter<slideBackground>]}}} >\n\n<!-- Presentation Mode -->\n<div class={{{[<statePresentTid>getindex[overlayClass]] ~[[tamasha-overlay]]}}} style={{{[subfilter<slideBackground>]}}} >\n<$transclude tiddler=\"$:/plugins/kookma/tamasha/ui/slide\" mode=block/>\n</div>\n\n<!-- Author mode -->\n<div><!-- reserved for further development-->\n<$transclude tiddler=\"$:/plugins/kookma/tamasha/ui/slide\" mode=block/>\n</div>\n\n</div>\n</div>\n\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n\n<$reveal type=\"match\" stateTitle=<<statePresentTid>> stateIndex=\"mode\" text=\"presentation-mode\">\n<style>body { overflow: hidden; /* Hide scrollbars */ }</style>\n</$reveal>\n\n</$vars>\n\\end\n"},"$:/plugins/kookma/tamasha/macros/toggle":{"title":"$:/plugins/kookma/tamasha/macros/toggle","created":"20201231090618034","modified":"20210129122518224","tags":"$:/tags/Macro/Tamasha","type":"text/vnd.tiddlywiki","text":"\\define statePresentTid() $:/state/tamasha/presentation/$(currentTiddler)$/$(myState)$\n\n\\define toggle-presentation-mode() \n<$action-setfield $tiddler=<<statePresentTid>> $index=\"overlayClass\" $value=\"tamasha-overlay open\"/>\n<$action-setfield $tiddler=<<statePresentTid>> $index=\"mode\" $value=\"presentation-mode\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<presentation-frame-focus-selector>> />\n\\end\n\\define toggle-author-mode()\n<$action-setfield $tiddler=<<statePresentTid>> $index=\"overlayClass\" $value=\"tamasha-overlay\"/>\n<$action-setfield $tiddler=<<statePresentTid>> $index=\"mode\" $value=\"author-mode\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<presentation-frame-focus-selector>> />\n\\end"},"$:/plugins/kookma/tamasha/readme":{"title":"$:/plugins/kookma/tamasha/readme","created":"20210107204722374","modified":"20210129122518233","tags":"","type":"text/vnd.tiddlywiki","text":"; Tamasha\nTamasha is a presentation app based on Tiddlywiki 5.1.23+\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Tamasha/\n* Code: https://github.com/kookma/TW-Tamasha\n"},"$:/plugins/kookma/tamasha/styles/buttons":{"title":"$:/plugins/kookma/tamasha/styles/buttons","created":"20201231045002172","modified":"20210129122518307","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":".tamasha-viewer-nav {\n\tvisibility: hidden;\n\topacity: 0.02;\n transition: visibility 0.5s, opacity 0.75s linear;\n\n\tfont-size:1.3em;\n\tbackground-color: <<colour background>>;\n\t/*border: 2px solid #9a9a9aaa;*/\n}\n\n.tamasha-presentation-frame:hover .tamasha-viewer-nav {\n\tvisibility: visible;\n\topacity: 0.6;\n}\n\n.tamasha-nav-button svg{\n\tfill: #9a9a9a;\n}\n\n.tamasha-nav-button:hover svg{\n/*\tfill: #ffffff; */\n fill: <<color foreground>>\n}\n.tamasha-nav-button,\n.tamasha-nav-button:focus {\n\toutline:none;\n}\n\n.tamasha-viewer-nav .tamasha-toolbar-separator {\n\tbackground-color:#9a9a9a;\n}\n\n"},"$:/plugins/kookma/tamasha/styles/content":{"title":"$:/plugins/kookma/tamasha/styles/content","text":".tamasha-slide-content{\t\n/*\tborder:1px dotted orange;*/ /*for debug purpose*/\n}","created":"20201231044947045","modified":"20210129174303521","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/footer":{"title":"$:/plugins/kookma/tamasha/styles/footer","text":".tamasha-slide-footer{\t\n/*\tborder-bottom: 1px dotted green;*/\n/*\t font-size:18px;\n line-height:24px;\t\n\tfont-weight:400; */\n\n}\n\n.tamasha-slide-footer span{\n\topacity: 0.8;\n/*\tcolor: darkblue;*/\n}","created":"20210115133308688","modified":"20210129122518323","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/frame":{"title":"$:/plugins/kookma/tamasha/styles/frame","created":"20210117164656409","modified":"20210129122518330","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":".tamasha-presentation-frame{\n border: 1px solid #B2FBF6CC;\n}\n.tamasha-presentation-frame:focus{\n\toutline:none;\n}"},"$:/plugins/kookma/tamasha/styles/layout/buttons":{"title":"$:/plugins/kookma/tamasha/styles/layout/buttons","text":"/* buttons, slidenumber and progressbar are positioned based on\n .tamasha-presentation-frame\n*/\n\n.tamasha-viewer-nav {\n\tleft: 1.5rem;\n\tposition: absolute;\n\tbottom: 1rem;\n\tborder-radius:2px;\n\tpadding:4px 10px;\n}\n\n.tamasha-viewer-nav .tamasha-toolbar-separator {\n\tdisplay:inline-block;\n\twidth:2px;\n\theight:1.3em;\n\tmargin:0 4px;\n\tvertical-align: top;\n}","created":"20210106134346667","modified":"20210129122518339","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/layout/content":{"title":"$:/plugins/kookma/tamasha/styles/layout/content","text":".tamasha-slide-content {\n font-size: 1.3rem;\n line-height: 1.85rem;\n padding: 30px;\n margin: 0 auto;\n max-width: 900px;\n height: 480px;\n overflow: hidden;\n margin-bottom: 4rem;\n}\n\n.tamasha-overlay .tamasha-slide-content {\n font-size: 3vh;\n line-height: 5vh;\n height: auto;\n padding: 8vh;\n}\n","created":"20210106135745822","modified":"20210202180141281","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/layout/footer":{"title":"$:/plugins/kookma/tamasha/styles/layout/footer","text":".tamasha-slide-footer{\t\n\tposition: absolute; \n\tleft: 0; \n\tright: 0; \n\tmargin-left: auto; \n\tmargin-right: auto; \n\tbottom:1rem;\n\tmax-width:100%;\n\toverflow:hidden;\n\ttext-align:center;\n\tdisplay:inline-block;\n\tmax-width:40%;\n}","created":"20210115104602585","modified":"20210129122518356","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/layout/frame":{"title":"$:/plugins/kookma/tamasha/styles/layout/frame","text":".tamasha-presentation-frame{\n\tposition:relative;\t\t\n\twidth:100%;\n\theight:100%;\n}","created":"20210117092237012","modified":"20210129122518364","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/layout/overlay":{"title":"$:/plugins/kookma/tamasha/styles/layout/overlay","text":".tamasha-overlay {\n\theight: 0px; \n\tposition:fixed;\n\ttop:0; left:0;\n\tz-index:1500;\n\toverflow-y: hidden;\n\twidth:100%;\n}\n\n.tamasha-overlay.open {\n\theight: 100%; /* use full screen height */\n\tmax-height:100%;\n}","created":"20210106134000981","modified":"20210129122518382","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/layout/progressbar":{"title":"$:/plugins/kookma/tamasha/styles/layout/progressbar","text":".tamasha-progress{\n\tleft:0;\n\tbottom: 0;\n\tposition: absolute;\n\twidth:100%;\n\theight:4px;\n}\n\n.tamasha-progress .bar{\n\tdisplay: block;\n\theight:100%;\n\twidth:100%; \n\ttransform-origin:0 0;\n\ttransform:sclaeX(0);\n\ttransition: transform 0.8s ease-in-out;\n}","created":"20210115133910870","modified":"20210129153532287","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/layout/slidelist":{"title":"$:/plugins/kookma/tamasha/styles/layout/slidelist","text":".tamasha-popup{\n\tleft: 50px;\n\tposition: absolute;\n\tbottom: 60px;\n\n\tpadding-right:30px; /* to adapt with ol used inside popup */\n\tborder-radius:4px;\n\n\tmax-height:50%;\n\toverflow-y:auto;\n\tmax-width:50%;\n}\n\n.tamasha-popup .tc-btn-invisible{\n\ttext-align:left;\n}","created":"20210106140729502","modified":"20210131180409213","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/layout/slidenumber":{"title":"$:/plugins/kookma/tamasha/styles/layout/slidenumber","text":".tamasha-slide-number {\n\tposition: absolute;\n\tbottom: 1rem;\n\tright: 1.5rem;\n}\n\n.tamasha-number-circle {\n\tbox-sizing: content-box; \n\twidth: 1.5em;\n\theight: 1.5em;\n\tline-height: 1.5em;\n\ttext-align: center;\n\tborder-radius: 50%; \n}\n/* change the circle size: increase line-height=width=height */","created":"20210106140007444","modified":"20210129122518399","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/overlay":{"title":"$:/plugins/kookma/tamasha/styles/overlay","created":"20201231041850064","modified":"20210131122746614","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":".tamasha-overlay {\n\ttransition-property: all;\n\ttransition-duration: 1s;\n\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\tbackground-color:<<colour background>>;\n}\n"},"$:/plugins/kookma/tamasha/styles/progressbar":{"title":"$:/plugins/kookma/tamasha/styles/progressbar","created":"20210110170610895","modified":"20210131184913509","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":"\\define progress-light() #e5e5e5\n\\define progress-dark() #494949\n\\define bar-light() #9a9a9a\n\\define bar-dark() #d79921\n\n<$vars \nlight=\"Blanca Blue Muted ContrastLight DesertSand Rocker SolarFlare SolarizedLight SpartanDay Vanilla [[Notebook Beige]] [[Notebook Grey]]\"\ndark=\"ContrastDark CupertinoDark DarkPhotos GruvboxDark Nord SolarizedDark SpartanNight Twilight\"\npalette={{{ [[$:/palette]get[text]removeprefix[$:/palettes/]] }}}\n>\n<$list filter=\"[enlist<dark>search:title<palette>then[dark]else[light]]\" variable=colorMacro>\n\n.tamasha-progress{\n\tbackground-color:<$macrocall $name={{{[<colorMacro>addprefix[progress-]]}}} />;\n}\n.tamasha-progress .bar{\n\tbackground-color:<$macrocall $name={{{[<colorMacro>addprefix[bar-]]}}} />;\n}\n</$list>\n</$vars>"},"$:/plugins/kookma/tamasha/styles/scrollbars":{"title":"$:/plugins/kookma/tamasha/styles/scrollbars","text":"/* custom scrollbar */\n.tamasha-popup::-webkit-scrollbar {\n width: 20px;\n}\n\n.tamasha-popup::-webkit-scrollbar-track {\n background-color: transparent;\n}\n\n.tamasha-popup::-webkit-scrollbar-thumb {\n background-color: #666666;\n border-radius: 20px;\n border: 6px solid transparent;\n background-clip: content-box;\n}\n\n.tamasha-popup::-webkit-scrollbar-thumb:hover {\n background-color: #909090; /* #a8bbbf;*/\n}","created":"20210101193022396","modified":"20210131184304342","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/slidelist":{"title":"$:/plugins/kookma/tamasha/styles/slidelist","text":".tamasha-popup{\n\tbackground-color: #323232;\n\tfont-size:1em;\n\tbox-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19);\n}\n\n.tamasha-popup .tc-btn-invisible{\n\tcolor:#b9b9b9;\n}\n\n.tamasha-popup button:focus{\n\toutline:none;\n}\n\n/* change number color*/\n.tamasha-popup li::marker { \n\tcolor:#b9b9b9;\n}\n\n/* slide in view: current slide in the slideList */\n.tamasha-popup .currentSlide .tc-btn-invisible,\n.tamasha-popup .currentSlide::marker {\n\tcolor:#fff;\n\tfont-size:0.9em;\n}\n\n","created":"20210101161416909","modified":"20210131180440752","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/styles/slidenumber":{"title":"$:/plugins/kookma/tamasha/styles/slidenumber","created":"20210101212605633","modified":"20210129122518439","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":".tamasha-number-circle {\n\tborder: 0.1em solid #666;\n\tfont-size: 1.2em;\n\tfont-weight:300;\n\tbackground: <<colour background>>;\n\tcolor: #666;\n\topacity:0.9;\n}"},"$:/plugins/kookma/tamasha/styles/uisetting":{"title":"$:/plugins/kookma/tamasha/styles/uisetting","created":"20210202180320935","modified":"20210202180601520","tags":"$:/tags/Stylesheet","type":"text/vnd.tiddlywiki","text":".noslidenumber .tamasha-slide-number{display:none}\n.noprogressbar .tamasha-progress{display:none}\n.nonavbutton .tamasha-viewer-nav {display:none}"},"$:/plugins/kookma/tamasha/templates/nolink":{"title":"$:/plugins/kookma/tamasha/templates/nolink","created":"20210131183020336","modified":"20210131183212076","tags":"$:/tags/Tamasha/Template","type":"text/vnd.tiddlywiki","text":"\\define tv-wikilinks() no\n<h2 class=\"title\"><$transclude tiddler=<<currentSlide>> field=title /></h2>\n<$transclude tiddler=<<currentSlide>> mode=block/>"},"$:/plugins/kookma/tamasha/templates/simple":{"title":"$:/plugins/kookma/tamasha/templates/simple","created":"20201231073430523","modified":"20210131183003513","tags":"$:/tags/Tamasha/Template","type":"text/vnd.tiddlywiki","text":"<$transclude tiddler=<<currentSlide>> mode=block/>"},"$:/plugins/kookma/tamasha/templates/vanilla":{"title":"$:/plugins/kookma/tamasha/templates/vanilla","created":"20210126130000247","modified":"20210131182956741","tags":"$:/tags/Tamasha/Template","type":"text/vnd.tiddlywiki","text":"<h2 class=\"title\"><$link to=<<currentSlide>> /></h2>\n<$transclude tiddler=<<currentSlide>> mode=block/>"},"$:/plugins/kookma/tamasha/themes/composite":{"title":"$:/plugins/kookma/tamasha/themes/composite","text":"vanda: vanda\nmitra: mitra\nkimia: kimia\nroya: vanda roya\nhoma: vanda homa\nleila: mitra leila\nirana: vanda irana","type":"application/x-tiddler-dictionary","created":"20210124104008856","modified":"20210131181446453","tags":"$:/tags/Tamasha/Theme"},"$:/plugins/kookma/tamasha/themes/homa":{"title":"$:/plugins/kookma/tamasha/themes/homa","text":".homa .tamasha-presentation-frame, \n.homa .tamasha-overlay {\n\tcolor:#ffffff;\n/*\tbackground-color:#A52A2A;*/\n\tbackground-image: linear-gradient(to left, #4d154f, #3b0f2f, #230c18, #000000);\n}\n.homa .tamasha-presentation-frame a:link {\n\tcolor: yellow;\n}\n.homa .tamasha-presentation-frame a:visited {\n\tcolor: #00ff00;\n}\n.homa .tamasha-slide-content pre {\n\tbackground-color: #230c18;\n}\n/* ---------- tables ---------- */\n.homa .tamasha-slide-content table th, \n.homa .tamasha-slide-content table thead td {\n\tbackground-color: #4d154f;\n}\n.homa .tamasha-slide-content table tfoot td{\n\tbackground-color: #4d154f;\n}","created":"20210124104512255","modified":"20210131181305897","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/themes/irana":{"title":"$:/plugins/kookma/tamasha/themes/irana","text":".irana .tamasha-presentation-frame, \n.irana .tamasha-overlay {\ncolor:#efefef;\nbackground-color: #ee5522;\nbackground-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2000 1500'%3E%3Cdefs%3E%3CradialGradient id='a' gradientUnits='objectBoundingBox'%3E%3Cstop offset='0' stop-color='%23FB3'/%3E%3Cstop offset='1' stop-color='%23ee5522'/%3E%3C/radialGradient%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='0' y1='750' x2='1550' y2='750'%3E%3Cstop offset='0' stop-color='%23f7882b'/%3E%3Cstop offset='1' stop-color='%23ee5522'/%3E%3C/linearGradient%3E%3Cpath id='s' fill='url(%23b)' d='M1549.2 51.6c-5.4 99.1-20.2 197.6-44.2 293.6c-24.1 96-57.4 189.4-99.3 278.6c-41.9 89.2-92.4 174.1-150.3 253.3c-58 79.2-123.4 152.6-195.1 219c-71.7 66.4-149.6 125.8-232.2 177.2c-82.7 51.4-170.1 94.7-260.7 129.1c-90.6 34.4-184.4 60-279.5 76.3C192.6 1495 96.1 1502 0 1500c96.1-2.1 191.8-13.3 285.4-33.6c93.6-20.2 185-49.5 272.5-87.2c87.6-37.7 171.3-83.8 249.6-137.3c78.4-53.5 151.5-114.5 217.9-181.7c66.5-67.2 126.4-140.7 178.6-218.9c52.3-78.3 96.9-161.4 133-247.9c36.1-86.5 63.8-176.2 82.6-267.6c18.8-91.4 28.6-184.4 29.6-277.4c0.3-27.6 23.2-48.7 50.8-48.4s49.5 21.8 49.2 49.5c0 0.7 0 1.3-0.1 2L1549.2 51.6z'/%3E%3Cg id='g'%3E%3Cuse href='%23s' transform='scale(0.12) rotate(60)'/%3E%3Cuse href='%23s' transform='scale(0.2) rotate(10)'/%3E%3Cuse href='%23s' transform='scale(0.25) rotate(40)'/%3E%3Cuse href='%23s' transform='scale(0.3) rotate(-20)'/%3E%3Cuse href='%23s' transform='scale(0.4) rotate(-30)'/%3E%3Cuse href='%23s' transform='scale(0.5) rotate(20)'/%3E%3Cuse href='%23s' transform='scale(0.6) rotate(60)'/%3E%3Cuse href='%23s' transform='scale(0.7) rotate(10)'/%3E%3Cuse href='%23s' transform='scale(0.835) rotate(-40)'/%3E%3Cuse href='%23s' transform='scale(0.9) rotate(40)'/%3E%3Cuse href='%23s' transform='scale(1.05) rotate(25)'/%3E%3Cuse href='%23s' transform='scale(1.2) rotate(8)'/%3E%3Cuse href='%23s' transform='scale(1.333) rotate(-60)'/%3E%3Cuse href='%23s' transform='scale(1.45) rotate(-30)'/%3E%3Cuse href='%23s' transform='scale(1.6) rotate(10)'/%3E%3C/g%3E%3C/defs%3E%3Cg transform='rotate(0 0 0)'%3E%3Cg transform='rotate(0 0 0)'%3E%3Ccircle fill='url(%23a)' r='3000'/%3E%3Cg opacity='0.5'%3E%3Ccircle fill='url(%23a)' r='2000'/%3E%3Ccircle fill='url(%23a)' r='1800'/%3E%3Ccircle fill='url(%23a)' r='1700'/%3E%3Ccircle fill='url(%23a)' r='1651'/%3E%3Ccircle fill='url(%23a)' r='1450'/%3E%3Ccircle fill='url(%23a)' r='1250'/%3E%3Ccircle fill='url(%23a)' r='1175'/%3E%3Ccircle fill='url(%23a)' r='900'/%3E%3Ccircle fill='url(%23a)' r='750'/%3E%3Ccircle fill='url(%23a)' r='500'/%3E%3Ccircle fill='url(%23a)' r='380'/%3E%3Ccircle fill='url(%23a)' r='250'/%3E%3C/g%3E%3Cg transform='rotate(0 0 0)'%3E%3Cuse href='%23g' transform='rotate(10)'/%3E%3Cuse href='%23g' transform='rotate(120)'/%3E%3Cuse href='%23g' transform='rotate(240)'/%3E%3C/g%3E%3Ccircle fill-opacity='0.1' fill='url(%23a)' r='3000'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\");\nbackground-attachment: fixed;\nbackground-size: cover;\n/*https://www.svgbackgrounds.com*/\n}\n\n.irana .tamasha-slide-content pre {\n background-color: #2e2e2e;\n}\n/* ---------- tables ---------- */\n.irana .tamasha-slide-content table th, \n.irana .tamasha-slide-content table thead td {\n background-color: #ee5522;\n}\n.irana .tamasha-slide-content table tfoot td {\n\tbackground-color: #ef5d23;\n}\n\n.irana .tamasha-presentation-frame a:link {\n\tcolor:#efefef;\n}","created":"20210124105817944","modified":"20210201062332534","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/themes/kimia":{"title":"$:/plugins/kookma/tamasha/themes/kimia","text":"/* hide ui elements */\n.kimia .tamasha-slide-number,\n.kimia .tamasha-viewer-nav {\n\tdisplay:none;\n}\n\n/*\n.kimia .tamasha-progress {\n\tdisplay:none;\n}\n*/\n\n.kimia .tamasha-slide-content {\t\n}\n\n\n.kimia .tamasha-slide-content .title{ /* used with vanilla template*/\n font-weight:300;\n}\n","created":"20210124154218942","modified":"20210202173934083","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/themes/leila":{"title":"$:/plugins/kookma/tamasha/themes/leila","text":".leila .tamasha-presentation-frame, \n.leila .tamasha-overlay {\ncolor:#ffffff;\n/*background-color:#A52A2A;*/\nbackground: linear-gradient(90deg, #4b6cb7 0%, #182848 100%);\n}\n\n.leila .tamasha-presentation-frame a:link {\n color: yellow;\n}\n\n.leila .tamasha-presentation-frame a:visited {\n color: #00ff00;\n}\n\n.leila .tamasha-slide-content pre {\n background-color: #182848;\n}\n\n/* ---------- tables ---------- */\n.leila .tamasha-slide-content table th, \n.leila .tamasha-slide-content table thead td {\n background-color: #4b6cb7;\n}","created":"20210124104852479","modified":"20210131181305924","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/themes/mitra":{"title":"$:/plugins/kookma/tamasha/themes/mitra","text":".mitra .tamasha-slide-content {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttext-align:center;\n}\n\n.mitra .tamasha-slide-content{\n\tfont-weight:500;\n}\n\n.mitra .tamasha-slide-content .title{ /* used with vanilla template*/\n font-size:1.5em;\n line-height:1.5em;\n font-weight:500;\n}\n\n.mitra .tamasha-slide-content ol,\n.mitra .tamasha-slide-content ul{\n\ttext-align:left;\n}\n/* ---------- code ---------- */\n.mitra .tamasha-slide-content code,\n.mitra .tamasha-slide-content pre {\n\tfont-size:0.9em;\n\tline-height:1.2em;\n\ttext-align:left;\n}\n\n/* ---------- tables ---------- */\n.mitra .tamasha-slide-content table td,\n.mitra .tamasha-slide-content table th {\n\tfont-size:0.8em;\n\tfont-weight:400;\n}\n\n.mitra .tamasha-slide-content table caption {\n\tcaption-side:top;\n\tfont-size:1em;\n\tmargin-bottom:0.2rem;\n}\n","created":"20210118164232308","modified":"20210202171514557","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/themes/roya":{"title":"$:/plugins/kookma/tamasha/themes/roya","text":".roya .tamasha-presentation-frame, \n.roya .tamasha-overlay {\ncolor:#000;\nbackground-color: #ffaa00;\nbackground-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25' viewBox='0 0 1600 800'%3E%3Cg %3E%3Cpath fill='%23ffb100' d='M486 705.8c-109.3-21.8-223.4-32.2-335.3-19.4C99.5 692.1 49 703 0 719.8V800h843.8c-115.9-33.2-230.8-68.1-347.6-92.2C492.8 707.1 489.4 706.5 486 705.8z'/%3E%3Cpath fill='%23ffb800' d='M1600 0H0v719.8c49-16.8 99.5-27.8 150.7-33.5c111.9-12.7 226-2.4 335.3 19.4c3.4 0.7 6.8 1.4 10.2 2c116.8 24 231.7 59 347.6 92.2H1600V0z'/%3E%3Cpath fill='%23ffbf00' d='M478.4 581c3.2 0.8 6.4 1.7 9.5 2.5c196.2 52.5 388.7 133.5 593.5 176.6c174.2 36.6 349.5 29.2 518.6-10.2V0H0v574.9c52.3-17.6 106.5-27.7 161.1-30.9C268.4 537.4 375.7 554.2 478.4 581z'/%3E%3Cpath fill='%23ffc500' d='M0 0v429.4c55.6-18.4 113.5-27.3 171.4-27.7c102.8-0.8 203.2 22.7 299.3 54.5c3 1 5.9 2 8.9 3c183.6 62 365.7 146.1 562.4 192.1c186.7 43.7 376.3 34.4 557.9-12.6V0H0z'/%3E%3Cpath fill='%23ffcc00' d='M181.8 259.4c98.2 6 191.9 35.2 281.3 72.1c2.8 1.1 5.5 2.3 8.3 3.4c171 71.6 342.7 158.5 531.3 207.7c198.8 51.8 403.4 40.8 597.3-14.8V0H0v283.2C59 263.6 120.6 255.7 181.8 259.4z'/%3E%3Cpath fill='%23ffd624' d='M1600 0H0v136.3c62.3-20.9 127.7-27.5 192.2-19.2c93.6 12.1 180.5 47.7 263.3 89.6c2.6 1.3 5.1 2.6 7.7 3.9c158.4 81.1 319.7 170.9 500.3 223.2c210.5 61 430.8 49 636.6-16.6V0z'/%3E%3Cpath fill='%23ffe038' d='M454.9 86.3C600.7 177 751.6 269.3 924.1 325c208.6 67.4 431.3 60.8 637.9-5.3c12.8-4.1 25.4-8.4 38.1-12.9V0H288.1c56 21.3 108.7 50.6 159.7 82C450.2 83.4 452.5 84.9 454.9 86.3z'/%3E%3Cpath fill='%23ffeb49' d='M1600 0H498c118.1 85.8 243.5 164.5 386.8 216.2c191.8 69.2 400 74.7 595 21.1c40.8-11.2 81.1-25.2 120.3-41.7V0z'/%3E%3Cpath fill='%23fff558' d='M1397.5 154.8c47.2-10.6 93.6-25.3 138.6-43.8c21.7-8.9 43-18.8 63.9-29.5V0H643.4c62.9 41.7 129.7 78.2 202.1 107.4C1020.4 178.1 1214.2 196.1 1397.5 154.8z'/%3E%3Cpath fill='%23ffff66' d='M1315.3 72.4c75.3-12.6 148.9-37.1 216.8-72.4h-723C966.8 71 1144.7 101 1315.3 72.4z'/%3E%3C/g%3E%3C/svg%3E\");\nbackground-attachment: fixed;\nbackground-size: cover;\n/*https://www.svgbackgrounds.com*/\n}","created":"20210124102959224","modified":"20210131181305948","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/themes/vanda":{"title":"$:/plugins/kookma/tamasha/themes/vanda","text":"/* ---------- code ---------- */\n.vanda .tamasha-slide-content code,\n.vanda .tamasha-slide-content pre {\n\tfont-size:0.9em;\n\tline-height:1.2em;\n\ttext-align:left;\n}\n\n/* ---------- tables ---------- */\n.vanda .tamasha-slide-content table td,\n.vanda .tamasha-slide-content table th {\n\tfont-size:0.8em;\n\tfont-weight:400;\n}\n\n.vanda .tamasha-slide-content table caption {\n\tcaption-side:top;\n\tfont-size:1em;\n\tmargin-bottom:0.2rem;\n}\n","created":"20210120160001447","modified":"20210202171418172","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/tamasha/ui/buttons":{"title":"$:/plugins/kookma/tamasha/ui/buttons","created":"20201231162035877","modified":"20210129122518531","type":"text/vnd.tiddlywiki","text":"\\define btn-toggle-presentation-mode()\n<$button class=\"tc-btn-invisible tamasha-nav-button\" actions=<<toggle-presentation-mode>> > {{$:/core/images/full-screen-button}} </$button>\n\\end\n\\define btn-toggle-author-mode()\n<$button class=\"tc-btn-invisible tamasha-nav-button\" actions=<<toggle-author-mode>> >{{$:/core/images/close-button}}</$button>\n\\end\n\n<div class=\"tamasha-viewer-nav\">\n<$button class=\"tc-btn-invisible tamasha-nav-button\" actions=<<previousSlide>> >{{$:/core/images/left-arrow}}\n</$button>\n<$button class=\"tc-btn-invisible tamasha-nav-button\" actions=<<nextSlide>> >{{$:/core/images/right-arrow}}\n</$button>\n<div class=\"tamasha-toolbar-separator\"> </div>\n<$button class=\"tc-btn-invisible tamasha-nav-button\" \n actions=\"\"\"<$action-listops $tiddler=<<stateListboxTid>> $field=\"text\" $subfilter=\"+[toggle[slideList]]\" />\"\"\" >\n\t {{$:/core/images/down-arrow}}\n</$button>\n<div class=\"tamasha-toolbar-separator\"> </div>\n<$list filter=\"[<statePresentTid>getindex[mode]match[presentation-mode]]\" \n variable=ignore emptyMessage=\"\"\"<<btn-toggle-presentation-mode>>\"\"\" \t>\n <<btn-toggle-author-mode>>\n</$list>\n</div>"},"$:/plugins/kookma/tamasha/ui/content":{"title":"$:/plugins/kookma/tamasha/ui/content","created":"20201231053912984","modified":"20210129122518539","type":"text/vnd.tiddlywiki","text":"<div class=\"tamasha-slide-content\">\n<<navigator>>\n</div>\n"},"$:/plugins/kookma/tamasha/ui/footer":{"title":"$:/plugins/kookma/tamasha/ui/footer","created":"20210115074727216","modified":"20210129122518546","tags":"","type":"text/vnd.tiddlywiki","text":"<div class=\"tamasha-slide-footer\">\n<span><<slideFooter>></span>\n</div>"},"$:/plugins/kookma/tamasha/ui/progressbar":{"title":"$:/plugins/kookma/tamasha/ui/progressbar","created":"20210112195456179","modified":"20210129165936287","tags":"","type":"text/vnd.tiddlywiki","text":"\\define calculate-progress()\n<span class=\"bar\"\n style={{{ [tag<mainTag>allbefore{$(stateNavigatorTid)$!!text}count[]add[1]divide<SlidesCount>fixed[2]addprefix[transform:scaleX(]addsuffix[);]] }}} >\n</span>\n\\end\n\n<div class=\"tamasha-progress\">\n\t<<calculate-progress>>\n</div>\n"},"$:/plugins/kookma/tamasha/ui/slide":{"title":"$:/plugins/kookma/tamasha/ui/slide","created":"20210114052937118","modified":"20210131180949356","tags":"","type":"text/vnd.tiddlywiki","text":"<$transclude tiddler=\"$:/plugins/kookma/tamasha/ui/content\" mode=block/>\n<$transclude tiddler=\"$:/plugins/kookma/tamasha/ui/footer\" mode=block/>\n<$transclude tiddler=\"$:/plugins/kookma/tamasha/ui/buttons\" mode=block/>\n<$transclude tiddler=\"$:/plugins/kookma/tamasha/ui/slidelist\" mode=block/>\n<$transclude tiddler=\"$:/plugins/kookma/tamasha/ui/slidenumber\" mode=block/>\n<$transclude tiddler=\"$:/plugins/kookma/tamasha/ui/progressbar\" mode=block/>"},"$:/plugins/kookma/tamasha/ui/slidelist":{"title":"$:/plugins/kookma/tamasha/ui/slidelist","created":"20201231205342137","modified":"20210131180949432","tags":"$:/tags/Macro/Tamasha","type":"text/vnd.tiddlywiki","text":"\\define stateListboxTid() $:/state/tamasha/listbox/$(currentTiddler)$/$(myState)$\n\n\\define gotoSlide() \n<$action-setfield $tiddler=<<stateNavigatorTid>> text=<<selectedTid>> />\n<$action-listops $tiddler=<<stateListboxTid>> $field=\"text\" $subfilter=\"+[toggle[slideList]]\" />\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<presentation-frame-focus-selector>> />\n\\end\n\n\n<$list filter=\"[<stateListboxTid>get[text]match[slideList]]\" variable=\"null\">\n<div class=\"tamasha-popup\">\n<ol>\n<$list filter=\"[tag<mainTag>]\" variable=\"selectedTid\">\n<li class={{{[<stateNavigatorTid>get[text]match<selectedTid>then[currentSlide]]}}} >\n<$button class=\"tc-btn-invisible\" actions=<<gotoSlide>> >\n<$view tiddler=<<selectedTid>> field=\"title\"/>\n</$button>\n</li>\n</$list>\n</ol>\n</div>\n</$list>\n"},"$:/plugins/kookma/tamasha/ui/slidenumber":{"title":"$:/plugins/kookma/tamasha/ui/slidenumber","created":"20210102082138734","modified":"20210129122518568","type":"text/vnd.tiddlywiki","text":"\\define calc-slideNumber()\n<$vars currentTid={{{[<stateNavigatorTid>get[text]] ~[tag<mainTag>first[]]}}}>\n<$text text={{{ [tag<mainTag>allbefore:include<currentTid>count[]pad[2]] }}} />\n</$vars>\n\\end\n<div class=\"tamasha-slide-number\">\n<div class=\"tamasha-number-circle\"><<calc-slideNumber>></div>\n</div>"}}}
{
"tiddlers": {
"$:/plugins/telmiger/details/details.css": {
"text": "/* details and summary */\n\ndetails {\n transition: height 1s ease;\n padding: 0 0.5em 0 0.66em;\n margin-top: 0.66em;\n margin-bottom: 0.66em;\n}\n\ndetails + details {\n margin-top: -0.46em;\n}\n\ndetails[open] {\n padding-bottom: 1em;\n}\n\ndetails:not([open]) { \n cursor: pointer;\n}\n\ndetails > summary {\n display: list-item;\n margin: 0 -0.5em 0 -0.66em;\n padding: 0.2em 0.5em 0.2em 0.66em;\n padding-left: 1.76em; /* adjust for indentation */\n text-indent: -1.1em;\n cursor: pointer;\n}\n\ndetails[open] > summary {\n margin-bottom: 1em;\n}\n\ndetails[open] > *:first-child:not(summary) {\n margin-top: 1em;\n}\n",
"title": "$:/plugins/telmiger/details/details.css",
"tags": "$:/tags/Stylesheet",
"modifier": "Thomas Elmiger",
"modified": "20180929131615369",
"creator": "Thomas Elmiger",
"created": "20170122140815442"
},
"$:/plugins/telmiger/details/details.js": {
"text": "/*\\\ntitle: $:/plugins/telmiger/details/details.js\ntype: application/javascript\nmodule-type: widget\n\nDetails widget v 0.8\n\nWill output an HTML 5 <details> section including a <summary>\n\n```\n\t<details>\n\t\t<summary>This sums it up</summary> \n\t\tAll the details follow here.\n\t</details>\n```\n\n|Parameter |Description |h\n|summary |Optional text to display as summary. Wins over field (see below). |\n|open |Optional initial state, set to \"open\" to show details on load. Defaults to \"\". |\n|state |An optional TextReference containing the state. Wins over open. |\n|field |Optionally, the summary is taken from the field with this name in a given tiddler. Defaults to \"title\". |\n|tiddler |Optional title of a tiddler to watch, connected to field. Defaults to current tiddler. |\n|class |Optional CSS classes to be assigned to the details tag. |\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DetailsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDetailsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDetailsWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute attributes\n\tthis.computeAttributes();\n\t// Execute logic\n\tthis.execute();\n\t// Create elements\n\tthis.detailsDomNode = this.document.createElement(\"details\");\n\tif(this.detailsClass !== \"\") {\n\t\t// this.detailsClass += \" \";\n\t\t// this.detailsClass += \"tc-details\";\n\t\tthis.detailsDomNode.setAttribute(\"class\",this.detailsClass);\n\t}\n\tif(this.detailsOpen == \"open\") {\n\t\tthis.detailsDomNode.setAttribute(\"open\",\"open\");\n\t}\n\tif(this.detailsSummary !== \"\") {\n\t\tthis.summaryDomNode = this.document.createElement(\"summary\");\n\t\t// this.summaryDomNode.setAttribute(\"class\",\"tc-summary\");\n\t\tthis.detailsDomNode.appendChild(this.summaryDomNode);\n\t\tthis.summaryDomNode.appendChild(this.document.createTextNode(this.detailsSummary));\n\t}\n// register an event listener\n/* Maybe this can be reactivated later, see below.\n\tif(this.detailsStateTitle) {\n\t\t$tw.utils.addEventListeners(this.detailsDomNode,[\n\t\t\t{name: \"toggle\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t]);\n\t}\n*/\n// As iOS mobile browsers lack support of toggle events on details \n// we emulate the toggle event using click\n\tif(this.detailsStateTitle && this.summaryDomNode) {\n\t\t$tw.utils.addEventListeners(this.summaryDomNode,[\n\t\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t]);\n\t} else {\n\t\tif(this.detailsStateTitle) {\n\t\t\t$tw.utils.addEventListeners(this.detailsDomNode,[\n\t\t\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t\t]);\n\t\t}\n\t}\n\t// Insert the details into the DOM and render any children\n\tthis.parentDomNode.insertBefore(this.detailsDomNode,nextSibling);\n\tthis.renderChildren(this.detailsDomNode,null);\n\tthis.domNodes.push(this.detailsDomNode);\n};\n\n/*\nRetrieve the value of the summary\n*/\nDetailsWidget.prototype.getSummary = function() {\n\tvar summary = \"\";\n\tif(this.summaryTitle === \"Tiddler not found\" && this.summaryField === \"\") {\n\t// nothing defined: leave empty \n\t\tsummary = \"\";\n\t} else {\n\t\t// tiddler defined? use defined field or title\n\t\tif(this.myTiddler) {\n\t\t\tif(this.summaryField === \"title\" || this.summaryField === \"\") {\n\t\t\t\tsummary = this.summaryTitle;\n\t\t\t} else {\n\t\t\t\tif(this.summaryField === \"text\") {\n \t\t// getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\t\tsummary = this.wiki.getTiddlerText(this.summaryTitle);\n\t\t\t\t} else {\n\t\t\t\t\tsummary = this.myTiddler.fields[this.summaryField];\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.summaryField !== \"\" && this.summaryField !== \"text\") {\n\t\t\t\t// try defined field in current tiddler\n\t\t\t\tvar tiddler = this.wiki.getTiddler(this.getVariable(\"currentTiddler\"));\n\t\t\t\tsummary = tiddler.fields[this.summaryField];\n\t\t\t} else {\n\t\t\t\tsummary = \"\";\n\t\t\t}\n\t\t}\n\t}\n return summary;\n};\n\n/*\nRetrieve the value of the state text reference\n*/\nDetailsWidget.prototype.getStateFromReference = function() {\n var state = this.detailsStateTitle ? this.wiki.getTextReference(this.detailsStateTitle,\"\",this.getVariable(\"currentTiddler\")) : \"\";\n return state;\n};\n\n/*\nCheck all open signals, state fields/tiddlers get priority\n*/\nDetailsWidget.prototype.getOpenState = function() {\n\tvar result = \"\";\n\tif((this.detailsOpenDefault !== \"\" && this.detailsOpenDefault !== \"no\") \n\t || this.detailsState === \"open\") {\n\t\tresult = \"open\";\n\t } \n\tif(this.detailsStateTitle !==\"\" && this.detailsState !== \"open\") {\n\t\tresult = \"\";\n\t}\n\treturn result;\n};\n\n/*\nUpdate the state text reference after click event\n*/\nDetailsWidget.prototype.updateState = function(openState) {\n\tvar fieldValue = \"false\";\n\tvar currentTiddler = this.getVariable(\"currentTiddler\");\n // get the title for the (existing/new) tiddler\n\tvar tr = $tw.utils.parseTextReference(this.detailsStateTitle);\n\tvar tidTitle = tr.title || currentTiddler;\n // is it an existing state tiddler?\n\tvar isStateTiddler = (tr.title === this.detailsStateTitle);\n\tvar hasStateTiddler = this.wiki.tiddlerExists(tr.title);\n\tvar currentStateTiddler = (tr.title === currentTiddler);\n\tif(isStateTiddler || hasStateTiddler || (currentStateTiddler && tr.field !== \"text\")) { \n\t\t// Set the state field (but never overwrite the current tiddler’s text field\n\t\tthis.wiki.setText(tidTitle,tr.field,tr.index,openState);\n\t} else {\n\t\tif(!hasStateTiddler && tidTitle !== currentTiddler) {\n\t\t\tthis.createTiddler(tidTitle);\n\t\t\tthis.wiki.setText(tidTitle,tr.field,tr.index,openState);\n\t\t} else {\n\t\t\tconsole.log (\"Something went wrong in updateState\");\n\t\t}\n\t}\n};\n\n/*\nCreate a tiddler with a title only\n*/\nDetailsWidget.prototype.createTiddler = function(tidTitle) {\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: tidTitle,\n\t\t\ttags: []\n\t\t}\n\t));\n};\n\n/*\nSet openState according to click\n*/\nDetailsWidget.prototype.handleToggleEvent = function(event) {\n\t// check if an open attribute is present\n\tvar newState = this.detailsDomNode.open ? \"\" : \"open\";\n\t// update only, if the node has a new state\n\tif(newState !== this.detailsState) {\n\t\tthis.updateState(newState);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDetailsWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes \n\tvar tryTiddler = this.getAttribute(\"tiddler\");\n\tthis.myTiddler = this.wiki.getTiddler(tryTiddler);\n\tthis.summaryTitle = this.myTiddler ? tryTiddler : \"Tiddler not found\";\n\tthis.summaryField = this.getAttribute(\"field\",\"\");\n\tthis.detailsSummary = this.getAttribute(\"summary\") || this.getSummary();\n\tthis.detailsStateTitle = this.getAttribute(\"state\",\"\");\n\tthis.detailsState = this.getStateFromReference();\n\tthis.detailsOpenDefault = this.getAttribute(\"open\",\"\");\n\tthis.detailsOpen = this.getOpenState();\n\tthis.detailsClass = this.getAttribute(\"class\",\"\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDetailsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.summary || changedAttributes.state || changedAttributes.open || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tvar testState = this.getStateFromReference();\n\t\tif(testState !== this.detailsState) {\n\t\t\t// state change\n\t\t\tthis.refreshSelf();\n\t\t\trefreshed = true;\n\t\t} \n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.details = DetailsWidget;\n\n})();",
"type": "application/javascript",
"title": "$:/plugins/telmiger/details/details.js",
"tags": "Plugins",
"module-type": "widget",
"modifier": "Thomas Elmiger",
"modified": "20180929212032187",
"creator": "Thomas Elmiger",
"created": "20170124173619910"
},
"$:/plugins/telmiger/details/icon": {
"created": "20170205205314072",
"text": "<svg class=\"tc-image-button telmiger-icon\" viewBox=\"0 0 128 128\" xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" viewBox=\"0 0 128 128\" role=\"img\" aria-labelledby=\"title\"><title id=\"title\">T</title><path class=\"circle\" d=\"M64 2C30 2 2 29.753 2 64c0 34.235 27.753 62 62 62s62-27.752 62-62C126 29.753 98.221 2 64 2z\"/><path class=\"t\" d=\"M100.41 63.254c-2.886 1.92-7.544 2.883-13.979 2.883h-8.008c-4.246 0-7.331.845-9.254 2.536-1.922 1.69-3.449 5.086-4.576 10.19 0 0-.181 1.481-.503 1.481s-.369-.877-.518-1.586a37.897 37.897 0 0 0-.721-2.754c-.631-2.137-1.262-3.753-1.894-4.847-.764-1.359-1.727-2.452-2.889-3.28-1.162-.83-2.49-1.326-3.985-1.492l-2.092-.248H41.73c-6.144 0-10.711-.962-13.7-2.884-4.976-3.159-7.649-9.129-8.02-17.91-.03-.706.003-1.351.132-2.171h.585c.399 3.975 3.679 7.048 6.086 9.219 2.408 2.172 6.269 3.258 11.581 3.258h9.313c5.347 0 9.257 1.226 11.731 3.68 2.231 2.213 3.701 5.68 4.406 10.4.076.511.03.736.178.736.149 0 .11-.256.17-.783.713-6.122 3.085-10.219 7.117-12.294 2.487-1.292 6.434-1.906 11.841-1.839l6.368.1c4.311.066 7.942-.788 10.893-2.56 2.953-1.773 6.447-5.079 6.844-9.917h.595c.183.478.16 1.576.127 2.333-.371 8.752-2.894 14.668-7.567 17.749z\"/></svg>\n<style>\n.telmiger-icon .circle { fill: #e2001a }\n.telmiger-icon .t { fill: #fff }\n</style>",
"title": "$:/plugins/telmiger/details/icon",
"tags": "",
"modified": "20171219183752113"
},
"$:/plugins/telmiger/details/license": {
"text": "!! Plugin license\n!!!The MIT License (MIT)\n\n```\nCopyright © 2017/2018 Thomas Elmiger – thomas-elmiger.ch\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```",
"title": "$:/plugins/telmiger/details/license",
"tags": "",
"modified": "20170205214435064",
"created": "20170205213335455"
},
"$:/plugins/telmiger/details/readme": {
"created": "20170205212323032",
"text": "! ~DetailsWidget\n\n{{$:/plugins/telmiger/details/about}}\n\nDocumentation can be found at http://tid.li/tw5/plugins.html#DetailsWidget\n",
"title": "$:/plugins/telmiger/details/readme",
"tags": "",
"modified": "20200603211110057"
},
"$:/plugins/telmiger/details/colours.css": {
"text": "/* details and summary colours */\n\ndetails {\n background-color: <<colour tiddler-info-tab-background>>;\n color: <<colour foreground>>;\n}\n\ndetails summary {\n background-color: <<colour dropdown-tab-background>>;\n}\n\ndetails.notification summary {\n background-color: <<colour notification-background>>;\n /* TW leaves color undefined/uses foreground */\n}\n\ndetails.warning summary {\n background-color: #ffbbaf;\n color: #000;\n}\n\ndetails.success summary {\n background-color: #88edc5;\n color: #000;\n}\n",
"title": "$:/plugins/telmiger/details/colours.css",
"tags": "$:/tags/Stylesheet",
"modifier": "Thomas Elmiger",
"modified": "20180926204140772",
"creator": "Thomas Elmiger",
"created": "20180925155320737"
},
"$:/plugins/telmiger/DetailsWidget/support": {
"created": "20200603204816640",
"text": "{{$:/plugins/telmiger/support}}",
"title": "$:/plugins/telmiger/DetailsWidget/support",
"tags": "",
"modified": "20200603204849180"
},
"$:/plugins/telmiger/support": {
"created": "20200604213259310",
"text": "!! Support the Author\n\n''Hi!'' I’m Thomas, the author of [[tid.li/tw5/plugins.html|https://tid.li/tw5/plugins.html]]. Feedback is always welcome, as well as funding for maintenance, support and new projects :)\n\n---\n\n!!! One Time Support\n\nIf using my plugins just makes you happy, consider a one time payment via ~PayPal to reward the effort:\n\nhttps://www.paypal.me/telmiger\n\n---\n\n!!! Permanent Support\n\nIf my tools make you more productive or save you time in your job or your everyday life, you can support me as a Patron: \n\nhttps://www.patreon.com/telmiger\n\n---\n\n!!! Thank You\n\nSubstantial parts of my availabe time go to the deveopment of useful plugins for [[TiddlyWiki|https://tiddlywiki.com/]]. – Many others do the same and I would like to thank them all, especially [[Jeremy Ruston|https://tiddlywiki.com/#JeremyRuston]] and all the active members of the community!\n\n//Hereby I promise to share future revenues (if any) with other developers who’s works I use or who inspired me.//\n\nIf you like my work, I would be very happy to hear from you.\n\n''Thank you very much for your support!''<br>\n//Thomas//\n\nhttps://thomas-elmiger.ch",
"title": "$:/plugins/telmiger/support",
"tags": "",
"modifier": "Thomas Elmiger",
"modified": "20200604213305050",
"creator": "Thomas Elmiger"
},
"$:/plugins/telmiger/details/about": {
"created": "20200603211101398",
"modified": "20200603211101398",
"title": "$:/plugins/telmiger/details/about",
"text": "Create HTML 5 `<details>` elements including a `<summary>` using this widget.\n\n<$details summary=\"The details element – W3C definition\">\n\n<<<\nThe [[details|http://w3c.github.io/html/interactive-elements.html#elementdef-details]] element represents a disclosure widget from which the user can obtain additional information or controls.\n<<< W3C\n\n</$details>\n\n<$details summary=\"Code example\" open=\"no\">\n\n```\n<$details summary=\"This should be open\" open=\"yes\">\n\nContent will be immediately visible if open is set to \"yes\".\n\n</$details>\n```\n\n</$details>",
"tags": ""
}
}
}
{"tiddlers":{"$:/plugins/tiddlywiki/bibtex/deserializer.js":{"title":"$:/plugins/tiddlywiki/bibtex/deserializer.js","text":"/*\\\ntitle: $:/plugins/tiddlywiki/bibtex/deserializer.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nBibTeX file deserializer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar bibtexParse = require(\"$:/plugins/tiddlywiki/bibtex/bibtexParse.js\");\n\n/*\nParse an BibTeX file into tiddlers\n*/\nexports[\"application/x-bibtex\"] = function(text,fields) {\n\tvar data,\n\t\tresults = [];\n\t// Parse the text\n\ttry {\n\t\tdata = bibtexParse.toJSON(text)\n\t} catch(ex) {\n\t\tdata = ex.toString();\n\t}\n\tif(typeof data === \"string\") {\n\t\treturn [{\n\t\t\ttitle: \"BibTeX import error\",\n\t\t\ttext: data\n\t\t}];\n\t}\n\t// Convert each entry\n\t$tw.utils.each(data,function(entry) {\n\t\tvar fields = {\n\t\t\ttitle: entry.citationKey,\n\t\t\t\"bibtex-entry-type\": entry.entryType\n\t\t};\n\t\t$tw.utils.each(entry.entryTags,function(value,name) {\n\t\t\tfields[\"bibtex-\" + name.toLowerCase()] = value;\n\t\t});\n\t\tresults.push(fields);\n\t});\n\t// Return the output tiddlers\n\treturn results;\n};\n\n})();\n","type":"application/javascript","module-type":"tiddlerdeserializer"},"$:/plugins/tiddlywiki/bibtex/readme":{"title":"$:/plugins/tiddlywiki/bibtex/readme","text":"The BibTeX plugin provides a deserializer that can convert bibliographic entries in `.bib` files into individual tiddlers.\n\nYou 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.\n\nThe conversion is as follows:\n\n* `title` comes from citationKey\n* `bibtex-entry-type` comes from entryType\n* all `entryTags` are assigned to fields with the prefix `bibtex-`\n\nThe BibTeX plugin is based on the library [[bibtexParseJs by Henrik Muehe and Mikola Lysenko|https://github.com/ORCID/bibtexParseJs]].\n"},"$:/plugins/tiddlywiki/bibtex/bibtexParse.js":{"text":"/* start bibtexParse 0.0.24 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Choice of compact (default) or pretty output from toBibtex:\n//\t\tNick Bailey, 2017.\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n\n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw TypeError(\"Token mismatch: match\", \"expected \" + s + \", found \"\n + this.input.substring(this.pos));\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw TypeError(\"Unterminated value: value_braces\");\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw TypeError(\"Unterminated value: value_comment\", + this.input.substring(start));\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw TypeError(\"Unterminated value: value_quotes\", this.input.substring(start));\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected: single_value\" + this.input.substring(start) + ' for key: ' + k;\n\n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function(optional) {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw TypeError(\"Runaway key: key\");\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n if (optional && this.input[this.pos] != ',') {\n this.pos = start;\n return null;\n };\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n\n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n key = key.trim()\n return [ key, val ];\n } else {\n throw TypeError(\"Value expected, equals sign missing: key_equals_value\",\n this.input.substring(this.pos));\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key(true);\n this.currentEntry['entryType'] = d.substring(1);\n if (this.currentEntry['citationKey'] != null) {\n this.match(\",\");\n }\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.alernativeCitationKey = function () {\n this.entries.forEach(function (entry) {\n if (!entry.citationKey && entry.entryTags) {\n entry.citationKey = '';\n if (entry.entryTags.author) {\n entry.citationKey += entry.entryTags.author.split(',')[0] += ', ';\n }\n entry.citationKey += entry.entryTags.year;\n }\n });\n }\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d.toUpperCase() == \"@STRING\") {\n this.string();\n } else if (d.toUpperCase() == \"@PREAMBLE\") {\n this.preamble();\n } else if (d.toUpperCase() == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n\n this.alernativeCitationKey();\n };\n };\n\n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n /* Increased the amount of white-space to make entries\n * more attractive to humans. Pass compact as false\n * to enable */\n exports.toBibtex = function(json, compact) {\n if (compact === undefined) compact = true;\n var out = '';\n \n var entrysep = ',';\n var indent = '';\n if (!compact) {\n\t\t entrysep = ',\\n';\n\t\t indent = ' '; \n }\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + entrysep;\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = indent;\n for (var jdx in json[i].entryTags) {\n if (tags.trim().length != 0)\n tags += entrysep + indent;\n tags += jdx + (compact ? '={' : ' = {') + \n json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += compact ? '}\\n' : '\\n}\\n\\n';\n }\n return out;\n\n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","type":"application/javascript","title":"$:/plugins/tiddlywiki/bibtex/bibtexParse.js","module-type":"library"},"$:/plugins/tiddlywiki/bibtex/license":{"text":"\nThe MIT License (MIT)\nCopyright (c) 2013 ORCID, Inc.\n\nCopyright (c) 2010 Henrik Muehe\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","type":"text/plain","title":"$:/plugins/tiddlywiki/bibtex/license"}}}
{"tiddlers":{"$:/plugins/tiddlywiki/jszip/docs":{"title":"$:/plugins/tiddlywiki/jszip/docs","text":"The following messages are provided to allow programmatic manipulation of ZIP files stored within tiddlers:\n\n!! Create ZIP file\n\n```\n<$action-sendmessage $message=\"tm-zip-create\" $param=\"MyZipTiddler\"/>\n```\n\n* ''$param'': title of tiddler to contain ZIP file\n\n!! Add/replace text file within ZIP file\n\n```\n<$action-sendmessage $message=\"tm-zip-add-text-file\" $param=\"MyZipTiddler\" filename=\"my/newfilename.txt\" text=\"The content\"/>\n```\n\n* ''$param'': title of tiddler containing ZIP file\n* ''filename'': filename of file to be added\n* ''text'': text content of file to be added\n\n!! Render tiddler to ZIP file\n\n```\n<$action-sendmessage $message=\"tm-zip-render-file\" $param=\"MyZipTiddler\" filename=\"my/newfilename.txt\" tiddler=\"HelloThere\" template=\"The content\" mode=\"block\" output=\"text/plain\"/>\n```\n\n* ''$param'': title of tiddler containing ZIP file\n* ''filename'': filename of output file\n* ''tiddler'': optional title of currentTiddler for rendering template\n* ''template'': title of template tiddler to be rendered\n* ''mode'': optional parsing mode \"block\" (default) or \"inline\"\n* ''output'': output format: \"text/plain\" (default) for the text content or \"text/html\" for the full HTML content, including tags\n\n!! Download a ZIP file\n\n```\n<$action-sendmessage $message=\"tm-zip-download\" $param=\"MyZipTiddler\" filename=\"myzipfile.zip\"/>\n```\n\n* ''$param'': title of tiddler containing ZIP file\n* ''filename'': filename to be suggested to browser for downloaded file\n"},"$:/plugins/tiddlywiki/jszip/examples":{"title":"$:/plugins/tiddlywiki/jszip/examples","text":"\\define actions-render-static-site()\n<$action-sendmessage $message=\"tm-zip-create\" $param=\"$:/temp/_ZipTiddler\"/>\n<$set name=\"tv-filter-export-link\" value=\"[slugify[]addsuffix[.html]]\">\n<$list filter=\"[all[tiddlers]!is[system]limit[25]]\">\n<$action-sendmessage $message=\"tm-zip-render-file\" $param=\"$:/temp/_ZipTiddler\" filename={{{ [<currentTiddler>slugify[]addsuffix[.html]] }}} tiddler=<<currentTiddler>> template=\"$:/core/templates/static.tiddler.html\"/>\n</$list>\n</$set>\n<$action-sendmessage $message=\"tm-zip-render-file\" $param=\"$:/temp/_ZipTiddler\" filename=\"static.css\" template=\"$:/core/templates/static.template.css\"/>\n<$action-sendmessage $message=\"tm-zip-download\" $param=\"$:/temp/_ZipTiddler\" filename=\"myzip.zip\"/>\n\\end\n\n! Rendering a Static Site to a Zip File\n\nThe actions below create a ZIP file containing a static HTML rendering of the first 100 non-system tiddlers:\n\n<pre>\n<$text text=<<actions-render-static-site>>/>\n</pre>\n\n<$button actions=<<actions-render-static-site>>>\nRender site\n</$button>\n\n<$list filter=\"[!is[system]duplicateslugs[]limit[1]]\" emptyMessage=\"''(There are no duplicate slugs)''\">\n''The following tiddlers have duplicate slugs:''\n\n<ul>\n<$list filter=\"[all[tiddlers]!is[system]limit[25]duplicateslugs[]]\">\n<li><$link><$text text=<<currentTiddler>>/></$link></li>\n</$list>\n</ul>\n</$list>\n\nTemporary zip file: $:/temp/_ZipTiddler\n"},"$:/plugins/tiddlywiki/jszip/jszip.js":{"text":"/*!\n\nJSZip - A Javascript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2014 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/master/LICENSE\n*/\n!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\u0003\u0004\",c.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",c.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",c.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",c.DATA_DESCRIPTOR=\"PK\u0007\\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\");\n},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,\nn+=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)});","type":"application/javascript","title":"$:/plugins/tiddlywiki/jszip/jszip.js","module-type":"library"},"$:/plugins/tiddlywiki/jszip/license":{"text":"JSZip is dual licensed. You may use it under the MIT license *or* the GPLv3\nlicense.\n\nThe MIT License\n===============\n\nCopyright (c) 2009-2014 Stuart Knightley, David Duponchel, Franz Buchinger, António Afonso\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n\nGPL version 3\n=============\n\n GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n Preamble\n\n The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works. By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users. We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors. You can apply it to\nyour programs, too.\n\n When we speak of free software, we are referring to freedom, not\nprice. Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights. Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received. You must make sure that they, too, receive\nor can get the source code. And you must show them these terms so they\nknow their rights.\n\n Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software. For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so. This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software. The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable. Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts. If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary. To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n The precise terms and conditions for copying, distribution and\nmodification follow.\n\n TERMS AND CONDITIONS\n\n 0. Definitions.\n\n \"This License\" refers to version 3 of the GNU General Public License.\n\n \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n \"The Program\" refers to any copyrightable work licensed under this\nLicense. Each licensee is addressed as \"you\". \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy. The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy. Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies. Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License. If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n 1. Source Code.\n\n The \"source code\" for a work means the preferred form of the work\nfor making modifications to it. \"Object code\" means any non-source\nform of a work.\n\n A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form. A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities. However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work. For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n The Corresponding Source for a work in source code form is that\nsame work.\n\n 2. Basic Permissions.\n\n All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met. This License explicitly affirms your unlimited\npermission to run the unmodified Program. The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work. This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force. You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright. Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n Conveying under any other circumstances is permitted solely under\nthe conditions stated below. Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n 4. Conveying Verbatim Copies.\n\n You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n 5. Conveying Modified Source Versions.\n\n You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n a) The work must carry prominent notices stating that you modified\n it, and giving a relevant date.\n\n b) The work must carry prominent notices stating that it is\n released under this License and any conditions added under section\n 7. This requirement modifies the requirement in section 4 to\n \"keep intact all notices\".\n\n c) You must license the entire work, as a whole, under this\n License to anyone who comes into possession of a copy. This\n License will therefore apply, along with any applicable section 7\n additional terms, to the whole of the work, and all its parts,\n regardless of how they are packaged. This License gives no\n permission to license the work in any other way, but it does not\n invalidate such permission if you have separately received it.\n\n d) If the work has interactive user interfaces, each must display\n Appropriate Legal Notices; however, if the Program has interactive\n interfaces that do not display Appropriate Legal Notices, your\n work need not make them do so.\n\n A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit. Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n 6. Conveying Non-Source Forms.\n\n You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n a) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by the\n Corresponding Source fixed on a durable physical medium\n customarily used for software interchange.\n\n b) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by a\n written offer, valid for at least three years and valid for as\n long as you offer spare parts or customer support for that product\n model, to give anyone who possesses the object code either (1) a\n copy of the Corresponding Source for all the software in the\n product that is covered by this License, on a durable physical\n medium customarily used for software interchange, for a price no\n more than your reasonable cost of physically performing this\n conveying of source, or (2) access to copy the\n Corresponding Source from a network server at no charge.\n\n c) Convey individual copies of the object code with a copy of the\n written offer to provide the Corresponding Source. This\n alternative is allowed only occasionally and noncommercially, and\n only if you received the object code with such an offer, in accord\n with subsection 6b.\n\n d) Convey the object code by offering access from a designated\n place (gratis or for a charge), and offer equivalent access to the\n Corresponding Source in the same way through the same place at no\n further charge. You need not require recipients to copy the\n Corresponding Source along with the object code. If the place to\n copy the object code is a network server, the Corresponding Source\n may be on a different server (operated by you or a third party)\n that supports equivalent copying facilities, provided you maintain\n clear directions next to the object code saying where to find the\n Corresponding Source. Regardless of what server hosts the\n Corresponding Source, you remain obligated to ensure that it is\n available for as long as needed to satisfy these requirements.\n\n e) Convey the object code using peer-to-peer transmission, provided\n you inform other peers where the object code and Corresponding\n Source of the work are being offered to the general public at no\n charge under subsection 6d.\n\n A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling. In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage. For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product. A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source. The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information. But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed. Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n 7. Additional Terms.\n\n \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law. If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit. (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.) You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n a) Disclaiming warranty or limiting liability differently from the\n terms of sections 15 and 16 of this License; or\n\n b) Requiring preservation of specified reasonable legal notices or\n author attributions in that material or in the Appropriate Legal\n Notices displayed by works containing it; or\n\n c) Prohibiting misrepresentation of the origin of that material, or\n requiring that modified versions of such material be marked in\n reasonable ways as different from the original version; or\n\n d) Limiting the use for publicity purposes of names of licensors or\n authors of the material; or\n\n e) Declining to grant rights under trademark law for use of some\n trade names, trademarks, or service marks; or\n\n f) Requiring indemnification of licensors and authors of that\n material by anyone who conveys the material (or modified versions of\n it) with contractual assumptions of liability to the recipient, for\n any liability that these contractual assumptions directly impose on\n those licensors and authors.\n\n All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10. If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term. If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n 8. Termination.\n\n You may not propagate or modify a covered work except as expressly\nprovided under this License. Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License. If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n 9. Acceptance Not Required for Having Copies.\n\n You are not required to accept this License in order to receive or\nrun a copy of the Program. Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance. However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work. These actions infringe copyright if you do\nnot accept this License. Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n 10. Automatic Licensing of Downstream Recipients.\n\n Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License. You are not responsible\nfor enforcing compliance by third parties with this License.\n\n An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations. If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License. For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n 11. Patents.\n\n A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based. The\nwork thus licensed is called the contributor's \"contributor version\".\n\n A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version. For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement). To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients. \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License. You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n 12. No Surrender of Others' Freedom.\n\n If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all. For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n 13. Use with the GNU Affero General Public License.\n\n Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work. The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n 14. Revised Versions of this License.\n\n The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time. Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n Each version is given a distinguishing version number. If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation. If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n Later license versions may give you additional or different\npermissions. However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n 15. Disclaimer of Warranty.\n\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. Limitation of Liability.\n\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n 17. Interpretation of Sections 15 and 16.\n\n If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n END OF TERMS AND CONDITIONS\n","type":"text/plain","title":"$:/plugins/tiddlywiki/jszip/license"},"$:/plugins/tiddlywiki/jszip/readme":{"title":"$:/plugins/tiddlywiki/jszip/readme","text":"This plugin provides primitives for working with Zip files. It also makes the [[JSZip|https://stuk.github.io/jszip/]] library available for use by other plugins.\n"},"$:/plugins/tiddlywiki/jszip/startup.js":{"title":"$:/plugins/tiddlywiki/jszip/startup.js","text":"/*\\\ntitle: $:/plugins/tiddlywiki/jszip/startup.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget event handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar JSZip = require(\"$:/plugins/tiddlywiki/jszip/jszip.js\");\n\n// Export name and synchronous status\nexports.name = \"jszip\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Install the root widget event handlers\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-zip-create\",function(event) {\n\t\tif(event.param) {\n\t\t\tvar zip = new JSZip();\n\t\t\tsaveZipTiddler(event.param,zip);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-zip-add-text-file\",function(event) {\n\t\tvar paramObject = event.paramObject || {};\n\t\tif(event.param && paramObject.filename && paramObject.text) {\n\t\t\tvar zip = loadZipTiddler(event.param);\n\t\t\tzip.file(paramObject.filename,paramObject.text);\n\t\t\tsaveZipTiddler(event.param,zip);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-zip-render-file\",function(event) {\n\t\tvar paramObject = event.paramObject || {};\n\t\tif(event.param && paramObject.filename && paramObject.template) {\n\t\t\tvar zip = loadZipTiddler(event.param),\n\t\t\t\toutputType = paramObject.output || \"text/plain\",\n\t\t\t\ttemplateTitle = paramObject.template,\n\t\t\t\ttext = $tw.wiki.renderTiddler(outputType,templateTitle,{\n\t\t\t\t\tparseAsInline: paramObject.mode === \"inline\",\n\t\t\t\t\tparentWidget: event.widget,\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tcurrentTiddler: paramObject.tiddler\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\tzip.file(paramObject.filename,text);\n\t\t\tsaveZipTiddler(event.param,zip);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-zip-download\",function(event) {\n\t\tvar paramObject = event.paramObject || {};\n\t\tif(event.param) {\n\t\t\tdownloadZipFile(event.param,paramObject.filename || \"file.zip\");\n\t\t}\n\t});\n};\n\nfunction loadZipTiddler(title) {\n\treturn $tw.wiki.getGlobalCache(\"jszip\",function() {\n\t\tvar zip = new JSZip(),\n\t\t\ttiddler = $tw.wiki.getTiddler(title);\n\t\tif(tiddler && tiddler.fields.type === \"application/zip\") {\n\t\t\ttry {\n\t\t\t\tzip.load(tiddler.fields.text,{\n\t\t\t\t\tbase64: true\n\t\t\t\t});\n\t\t\t} catch(e) {\n\t\t\t\tconsole.log(\"JSZip error: \" + e)\n\t\t\t}\n\t\t}\n\t\treturn zip;\t\t\n\t});\n}\n\nfunction saveZipTiddler(title,zip) {\n\tvar data = zip.generate({\n\t\t\ttype: \"base64\"\n\t\t});\n\t$tw.wiki.addTiddler({\n\t\ttitle: title,\n\t\ttype: \"application/zip\",\n\t\ttext: data\n\t});\n}\n\nfunction downloadZipFile(title,filename) {\n\tvar tiddler = $tw.wiki.getTiddler(title);\n\tif(tiddler && tiddler.fields.text && tiddler.fields.type === \"application/zip\") {\n\t\tvar link = document.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",\"data:application/zip;base64,\" + encodeURIComponent(tiddler.fields.text));\n\t\tlink.setAttribute(\"download\",filename);\n\t\tdocument.body.appendChild(link);\n\t\tlink.click();\n\t\tdocument.body.removeChild(link);\n\t}\n}\n\n})();\n","type":"application/javascript","module-type":"startup"}}}
{"tiddlers":{"$:/config/DefaultColourMappings/menubar-foreground":{"title":"$:/config/DefaultColourMappings/menubar-foreground","text":"#fff"},"$:/config/DefaultColourMappings/menubar-background":{"title":"$:/config/DefaultColourMappings/menubar-background","text":"#5778d8"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols","text":"hide"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/server":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/server","text":"hide"},"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar":{"title":"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar","text":"hide"},"$:/config/plugins/menubar/TableOfContents/Tag":{"title":"$:/config/plugins/menubar/TableOfContents/Tag","text":"TableOfContents"},"$:/config/plugins/menubar/breakpoint":{"title":"$:/config/plugins/menubar/breakpoint","text":"620px"},"$:/plugins/tiddlywiki/menubar/config":{"title":"$:/plugins/tiddlywiki/menubar/config","tags":"$:/tags/ControlPanel/Toolbars","caption":"Menu Bar","text":"\\define config-base() $:/config/plugins/menubar/MenuItems/Visibility/\n\n! Menu Bar Configuration\n\n!! Menu Items\n\nSelect which menu items will be shown. You can also drag items to reorder them.\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/MenuBar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n\n!! Breakpoint Position\n\nThe breakpoint position between narrow and wide screens. Should include CSS units (eg. `400px`).\n\n<$edit-text tiddler=\"$:/config/plugins/menubar/breakpoint\" default=\"\" tag=\"input\"/>\n\n!! Contents Tag\n\nThe tag for the ~TableOfContents used in the Contents dropdown\n\n<$edit-text tiddler=\"$:/config/plugins/menubar/TableOfContents/Tag\" default=\"\" tag=\"input\"/>\n\n!! Menu Bar Colours\n\nTo change the colour of the menu bar, define the colours `menubar-foreground` and `menubar-background` in the currently selected palette\n"},"$:/plugins/tiddlywiki/menubar/items/contents":{"title":"$:/plugins/tiddlywiki/menubar/items/contents","caption":"Contents","description":"Table of Contents","is-dropdown":"yes","tags":"$:/tags/MenuBar","text":"<div class=\"tc-table-of-contents\">\n\n<$macrocall $name=\"toc-selective-expandable\" tag={{$:/config/plugins/menubar/TableOfContents/Tag}}/>\n\n</div>\n"},"$:/plugins/tiddlywiki/menubar/items/hamburger":{"title":"$:/plugins/tiddlywiki/menubar/items/hamburger","tags":"$:/tags/MenuBar","caption":"Hamburger","description":"Show the full menu bar on a narrow screen","custom-menu-content":"{{$:/plugins/tiddlywiki/menubar/items/hamburger}}","show-when":"narrow","text":"<$list filter=\"[[$:/state/popup/menubar/hamburger]get[text]else[no]match[no]]\">\n<$button set=\"$:/state/popup/menubar/hamburger\" setTo=\"yes\">\n{{$:/core/images/menu-button}}\n</$button>\n</$list>\n<$list filter=\"[[$:/state/popup/menubar/hamburger]get[text]else[no]match[yes]]\">\n<$button set=\"$:/state/popup/menubar/hamburger\" setTo=\"no\">\n{{$:/core/images/close-button}}\n</$button>\n</$list>\n"},"$:/plugins/tiddlywiki/menubar/items/pagecontrols":{"title":"$:/plugins/tiddlywiki/menubar/items/pagecontrols","tags":"$:/tags/MenuBar","description":"Page controls from the sidebar","caption":"Page controls","custom-menu-content":"<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/pagecontrols\" mode=\"inline\"/>","text":"\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n"},"$:/plugins/tiddlywiki/menubar/items/search":{"title":"$:/plugins/tiddlywiki/menubar/items/search","custom-menu-content":"{{$:/plugins/tiddlywiki/menubar/items/search}}","description":"Search","caption":"Search","tags":"$:/tags/MenuBar","text":"\\define cancel-search-actions()\n<$set name=\"userInput\" value={{{ [<__storeTitle__>get[text]] }}}>\n<$list filter=\"[<__tiddler__>get[text]!match<userInput>]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[<__storeTitle__>] [<__tiddler__>] [<__selectionStateTitle__>]\"/>\"\"\">\n<$action-setfield $tiddler=<<__tiddler__>> text=<<userInput>>/><$action-setfield $tiddler=<<__refreshTitle__>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\whitespace trim\n<$vars searchTiddler=\"$:/temp/menubarsearch/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">>>\n<span style=\"margin: 0 0.5em;\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/menubarsearch\" storeTitle=<<searchTiddler>> selectionStateTitle=<<searchListState>> \n\t\trefreshTitle=\"$:/temp/menubarsearch/refresh\" tag=\"input\" type=\"search\" focusPopup=\"$:/state/popup/menubar-search-dropdown\" \n\t\tclass=\"tc-popup-handle tc-menu-show-when-wide\" placeholder=\"Search...\" default=\"\" cancelPopups=\"yes\" \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> inputCancelActions=<<cancel-search-actions>> \n\t\tfilterMinLength={{$:/config/Search/MinLength}} configTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\" />\n</$keyboard>\n</$keyboard>\n</span>\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/state/popup/menubar-search-dropdown\" type=\"nomatch\" text=\"\" default=\"\">\n\n<div class=\"tc-block-dropdown tc-search-drop-down\">\n\n<$list filter=\"[<searchTiddler>get[text]minlength[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">Type your search terms</div>\"\"\" variable=\"ignore\">\n\n<$list filter=\"[<searchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$vars configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} userInput={{{ [<searchTiddler>get[text]] }}}>\n\n{{$:/core/ui/SearchResults}}\n\n</$vars>\n\n</$list>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n</$vars>\n"},"$:/plugins/tiddlywiki/menubar/items/server":{"title":"$:/plugins/tiddlywiki/menubar/items/server","tags":"$:/tags/MenuBar","description":"Server options","caption":"Server","custom-menu-content":"<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/server\" mode=\"inline\"/>","text":"<$list filter=\"[[$:/status/IsLoggedIn]get[text]else[no]match[yes]]\" variable=\"ignore\">\n<$transclude tiddler=\"$:/core/ui/Buttons/save-wiki\" mode=\"inline\"/>\n</$list>\n<$list filter=\"[[$:/status/IsLoggedIn]get[text]else[no]match[no]]\" variable=\"ignore\">\n<$button message=\"tm-login\">\nLogin\n</$button>\n</$list>\n"},"$:/plugins/tiddlywiki/menubar/items/sidebar":{"title":"$:/plugins/tiddlywiki/menubar/items/sidebar","caption":"Sidebar","description":"Sidebar","is-dropdown":"yes","tags":"$:/tags/MenuBar","text":"<$scrollable fallthrough=\"none\" class=\"tc-popup-keep tc-menubar-dropdown-sidebar\">\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\" mode=\"inline\"/>\n\n</$scrollable>\n"},"$:/plugins/tiddlywiki/menubar/items/topleftbar":{"title":"$:/plugins/tiddlywiki/menubar/items/topleftbar","tags":"$:/tags/MenuBar","description":"Items from $:/tags/TopLeftBar","caption":"Legacy Top Left Bar","custom-menu-content":"<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/topleftbar\" mode=\"inline\"/>","text":"<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>"},"$:/plugins/tiddlywiki/menubar/items/toprightbar":{"title":"$:/plugins/tiddlywiki/menubar/items/toprightbar","tags":"$:/tags/MenuBar","description":"Items from $:/tags/TopRightBar","caption":"Legacy Top Right Bar","custom-menu-content":"<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/toprightbar\" mode=\"inline\"/>","custom-menu-styles-wide":"float: right;","text":"<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]reverse[]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>"},"$:/plugins/tiddlywiki/menubar/menu":{"title":"$:/plugins/tiddlywiki/menubar/menu","tags":"$:/tags/PageTemplate","text":"\\define menubar-inner(size)\n<ul class=\"tc-menubar-list\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MenuBar]!has[draft.of]] -[all[tiddlers+shadows]tag[$:/tags/TopLeftBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/topleftbar]] -[all[tiddlers+shadows]tag[$:/tags/TopRightBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/toprightbar]]\">\n<$list filter=\"[<currentTiddler>addprefix[$:/config/plugins/menubar/MenuItems/Visibility/]get[text]] ~show +[match[show]]\" variable=\"ignore\">\n<$list filter=\"[[$size$]match[wide]] ~[<currentTiddler>get[show-when]match[$size$]] ~[{$:/state/popup/menubar/hamburger}match[yes]]\" variable=\"ignore\">\n<li style={{!!custom-menu-styles-$size$}} class={{{ [<currentTiddler>get[show-when]addprefix[tc-menubar-]] tc-menubar-item +[join[ ]] }}}>\n<$list filter=\"[<currentTiddler>!is-dropdown[yes]]\" variable=\"listItem\" emptyMessage=\"\"\"\n\t<!-- Dropdown -->\n\t<$set name=\"dropdown-state\" value=<<qualify \"$:/state/popup/topmenu/dropdown/\">>>\n\t<$set name=\"dropdown-state\" value={{{ [<dropdown-state>addsuffix<currentTiddler>] }}}>\n\t<$button popup=<<dropdown-state>> selectedClass=\"tc-selected\">\n\t<$set name=\"tv-wikilinks\" value=\"no\">\n\t<$transclude field=\"caption\" mode=\"inline\"/>\n\t<$text text=\" \"/>\n\t<span class=\"tc-menubar-dropdown-arrow\">\n\t<$transclude tiddler=\"$:/core/images/down-arrow\" mode=\"inline\"/>\n\t</span>\n\t</$set>\n\t</$button>\n\t</$set>\n\t</$set>\n\"\"\">\n<$list filter=\"[<currentTiddler>has[custom-menu-content]]\" variable=\"listItem\" emptyMessage=\"\"\"\n\t<!-- Link -->\n\t<$link to={{!!target}}>\n\t<$set name=\"tv-wikilinks\" value=\"no\">\n\t<$transclude field=\"caption\" mode=\"inline\"/>\n\t</$set>\n\t</$link>\n\"\"\">\n<!-- Custom content -->\n<$transclude field=\"custom-menu-content\" mode=\"inline\"/>\n</$list>\n</$list>\n</li>\n</$list>\n</$list>\n</$list>\n</ul>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MenuBar]!has[draft.of]] -[all[tiddlers+shadows]tag[$:/tags/TopLeftBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/topleftbar]] -[all[tiddlers+shadows]tag[$:/tags/TopRightBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/toprightbar]] +[limit[1]]\" variable=\"listItem\">\n<nav class=\"tc-menubar tc-adjust-top-of-scroll\">\n<div class=\"tc-menubar-narrow\">\n<<menubar-inner narrow>>\n</div>\n<div class=\"tc-menubar-wide\">\n<<menubar-inner wide>>\n</div>\n<div style=\"clear:both;\"/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MenuBar]!has[draft.of]is-dropdown[yes]]\">\n<$list filter=\"[<currentTiddler>addprefix[$:/config/plugins/menubar/MenuItems/Visibility/]get[text]] ~show +[match[show]]\" variable=\"ignore\">\n<$set name=\"dropdown-state\" value=<<qualify \"$:/state/popup/topmenu/dropdown/\">>>\n<$set name=\"dropdown-state\" value={{{ [<dropdown-state>addsuffix<currentTiddler>] }}}>\n<$reveal type=\"popup\" state=<<dropdown-state>> position={{{ [<currentTiddler>get[dropdown-position]else[below]] }}} class={{{ [<currentTiddler>get[class]] }}} tag=\"div\">\n<div class=\"tc-drop-down\">\n<$transclude/>\n</div>\n</$reveal>\n</$set>\n</$set>\n</$list>\n</$list>\n</nav>\n</$list>\n"},"$:/core/ui/PageTemplate/topleftbar":{"title":"$:/core/ui/PageTemplate/topleftbar","text":"<!-- The menubar plugin overrides this tiddler to remove the core top left menu. The menu items that it would include are instead included in the menubar -->"},"$:/core/ui/PageTemplate/toprightbar":{"title":"$:/core/ui/PageTemplate/toprightbar","text":"<!-- The menubar plugin overrides this tiddler to remove the core top right menu. The menu items that it would include are instead included in the menubar -->"},"$:/plugins/tiddlywiki/menubar/readme":{"title":"$:/plugins/tiddlywiki/menubar/readme","text":"!! Introduction\n\nThis plugin provides a menu bar with the following features:\n\n* Menu items take the form of simple text links, dropdowns, or entirely custom content\n* Menu items can be individually enabled via the control panel\n* Responds to reduced screen width by abbreviating the menu items to a \"hamburger\" dropdown\n\n!! Menu Item Tiddlers\n\nMenu items are tagged <<tag $:/tags/MenuBar>>. The following fields are used by this plugin:\n\n|!Field Name |!Purpose |\n|title |Each menu item must have a unique title (not shown to the user) |\n|description |Description for use in listings |\n|tags |Must contain `$:/tags/MenuBar` |\n|caption |The text that is displayed for the menu item. Avoid links, using `~` to suppress CamelCase links if required |\n|target |For simple link menu items specifies a tiddler title as the target of the link |\n|is-dropdown |Set to `yes` to indicate a dropdown menu item |\n|dropdown-position |Optional position for the dropdown (can be ''left'', ''above'', ''aboveleft'', ''aboveright'', ''right'', ''belowleft'', ''belowright'' or ''below'') |\n|text |For dropdown menu items, specifies the body of the dropdown |\n|custom-menu-content |Optional wikitext to be displayed in place of the caption |\n|custom-menu-styles-wide |Optional string of styles to be applied to menu item when the menubar is wide |\n|custom-menu-styles-narrow |Optional string of styles to be applied to menu item when the menubar is narrow |\n\nCustom menu items should make sure that the clickable link or button is an immediate child, and not wrapped in another element.\n\nNote that menu items can be pushed to the right of the menu bar setting the ''custom-menu-styles'' field to `float: right;`.\n"},"$:/plugins/tiddlywiki/menubar/styles":{"title":"$:/plugins/tiddlywiki/menubar/styles","tags":"[[$:/tags/Stylesheet]]","text":"\\define breakpoint-plus-one()\n<$text text={{{ [{$:/config/plugins/menubar/breakpoint}removesuffix[px]add[1]addsuffix[px]] ~[{$:/config/plugins/menubar/breakpoint}] }}} />\n\\end\n\n\\define sidebarbreakpoint-minus-one()\n<$text text={{{ [{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}removesuffix[px]subtract[1]addsuffix[px]] ~[{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}] }}} />\n\\end\n\n\\define set-sidebar-scrollable-top-if-hamburger()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/MenuBar]] -[all[tiddlers+shadows]prefix[$:/config/plugins/menubar/MenuItems/Visibility/]regexp:text[hide]removeprefix[$:/config/plugins/menubar/MenuItems/Visibility/]] -[all[tiddlers+shadows]tag[$:/tags/TopLeftBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/topleftbar]] -[all[tiddlers+shadows]tag[$:/tags/TopRightBar]limit[1]then[$:/plugins/tiddlywiki/menubar/items/toprightbar]] -$:/plugins/tiddlywiki/menubar/items/hamburger +[limit[1]]\">\n\n\t.tc-sidebar-scrollable {\n\t\tmargin-top: 2em;\n\t}\n\n</$list>\n\\end\n\n\\define set-sidebar-scrollable-top()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/MenuBar]] -[all[tiddlers+shadows]prefix[$:/config/plugins/menubar/MenuItems/Visibility/]regexp:text[hide]removeprefix[$:/config/plugins/menubar/MenuItems/Visibility/]] -[all[tiddlers+shadows]tag[$:/tags/TopLeftBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/topleftbar]] -[all[tiddlers+shadows]tag[$:/tags/TopRightBar]limit[1]then[$:/plugins/tiddlywiki/menubar/items/toprightbar]] +[limit[1]]\">\n\n\t.tc-sidebar-scrollable {\n\t\tmargin-top: 2em;\n\t}\n\n</$list>\n<$reveal state=\"$:/state/popup/menubar/hamburger\" type=\"match\" text=\"yes\">\n\n\t<$set name=\"itemCount\" value={{{ [all[tiddlers+shadows]tag[$:/tags/MenuBar]] -[all[tiddlers+shadows]prefix[$:/config/plugins/menubar/MenuItems/Visibility/]regexp:text[hide]removeprefix[$:/config/plugins/menubar/MenuItems/Visibility/]] -[all[tiddlers+shadows]tag[$:/tags/TopLeftBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/topleftbar]] -[all[tiddlers+shadows]tag[$:/tags/TopRightBar]limit[1]then[]else[$:/plugins/tiddlywiki/menubar/items/toprightbar]] +[count[]] }}}>\n\n\t\t.tc-sidebar-scrollable {\n\t\t\tmargin-top: calc(<<itemCount>> * 2em);\n\t\t}\n\n\t</$set>\n\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\nnav.tc-menubar {\n\tposition: fixed;\n\tz-index: 850;\n\tdisplay: inline-block;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n}\n\nnav.tc-menubar ul.tc-menubar-list {\n\tposition: relative;\n\tlist-style-type: none;\n\tmargin: 0;\n\tpadding: 0 0 0 42px;\n\tbackground: <<colour background>>;\n\tbackground: <<colour menubar-background>>;\n\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\thtml nav.tc-menubar ul.tc-menubar-list {\n\t\tpadding: 0 0 0 8px;\n\t}\n\n}\n\nnav.tc-menubar li.tc-menubar-item {\n\tdisplay: inline-block;\n\tmargin: 0;\n\tpadding: 0;\n}\n\nnav.tc-menubar .tc-menubar-narrow li.tc-menubar-item {\n\tdisplay: block;\n}\n\nnav.tc-menubar li.tc-menubar-item > a,\nnav.tc-menubar li.tc-menubar-item > button {\n\tdisplay: inline-block;\n/*\ttext-transform: uppercase; */\n\tline-height: 1;\n\tfont-weight: 700;\n\tcolor: <<colour foreground>>;\n\tcolor: <<colour menubar-foreground>>;\n\tfill: <<colour foreground>>;\n\tfill: <<colour menubar-foreground>>;\n\ttext-decoration: none;\n\tpadding: 0.5em;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tborder-radius: 0;\n\ttext-decoration: none;\n}\n\nnav.tc-menubar li.tc-menubar-item > a.tc-selected,\nnav.tc-menubar li.tc-menubar-item > button.tc-selected {\n\tbackground: <<colour foreground>>;\n\tbackground: <<colour menubar-foreground>>;\n\tcolor: <<colour background>>;\n\tcolor: <<colour menubar-background>>;\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n}\n\nnav.tc-menubar li.tc-menubar-item svg {\n\ttransition: none;\n\twidth: 1em;\n\theight: 1em;\n\tfill: <<colour foreground>>;\n\tfill: <<colour menubar-foreground>>;\n}\n\nnav.tc-menubar li.tc-menubar-item .tc-menubar-dropdown-arrow svg {\n\twidth: 0.5em;\n\theight: 0.5em;\n}\n\nnav.tc-menubar li.tc-menubar-item > a.tc-selected svg,\nnav.tc-menubar li.tc-menubar-item > button.tc-selected svg {\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n}\n\nnav.tc-menubar li.tc-menubar-item > a:hover,\nnav.tc-menubar li.tc-menubar-item > button:hover svg,\nnav.tc-menubar li.tc-menubar-item > button:hover {\n\tbackground: <<colour foreground>>;\n\tbackground: <<colour menubar-foreground>>;\n\tcolor: <<colour background>>;\n\tcolor: <<colour menubar-background>>;\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n\tborder-radius: 0;\n\ttext-decoration: none;\n}\n\nnav.tc-menubar li.tc-menubar-item > a:active,\nnav.tc-menubar li.tc-menubar-item > button:active svg,\nnav.tc-menubar li.tc-menubar-item > button:active {\n\tbackground: <<colour foreground>>;\n\tbackground: <<colour menubar-foreground>>;\n\tcolor: <<colour background>>;\n\tcolor: <<colour menubar-background>>;\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n\tborder-radius: 0;\n\ttext-decoration: none;\n}\n\nnav.tc-menubar .tc-drop-down,\nnav.tc-menubar .tc-block-dropdown {\n\tmax-width: 70vw;\n\tmax-height: 70vh;\n\toverflow: auto;\n}\n\nnav.tc-menubar .tc-drop-down a {\n\ttext-decoration: none;\n}\n\nnav.tc-menubar .tc-drop-down .tc-table-of-contents button {\n\tdisplay: inline-block;\n\twidth: auto;\n}\n\nnav.tc-menubar .tc-drop-down ol {\n\tmargin: 0;\n}\n\nnav.tc-menubar .tc-drop-down .tc-menubar-dropdown-sidebar a,\nnav.tc-menubar .tc-drop-down .tc-menubar-dropdown-sidebar button {\n\tdisplay: inline;\n\twidth: auto;\n}\n\nnav.tc-menubar .tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (max-width: {{$:/config/plugins/menubar/breakpoint}}) {\n\n\t.tc-menubar-wide {\n\t\tdisplay: none;\n\t}\n\n}\n\n@media (min-width: <<breakpoint-plus-one>>) {\n\n\tnav.tc-menubar li.tc-menubar-item.tc-menubar-narrow,\n\t.tc-menubar-narrow {\n\t\tdisplay: none;\n\t}\n\n}\n\n@media (max-width: <<sidebarbreakpoint-minus-one>>) {\n\n\t<<set-sidebar-scrollable-top-if-hamburger>>\n\n}\n\n@media (max-width: {{$:/config/plugins/menubar/breakpoint}}) {\n\n\t<<set-sidebar-scrollable-top>>\n\n}\n@media print {\n\n\tnav.tc-menubar {\n\t\tdisplay: none;\n\t}\n\n}\n"},"$:/tags/MenuBar":{"title":"$:/tags/MenuBar","list":"$:/plugins/tiddlywiki/menubar/items/hamburger $:/plugins/tiddlywiki/menubar/items/topleftbar $:/plugins/tiddlywiki/menubar/items/contents $:/plugins/tiddlywiki/menubar/items/search $:/plugins/tiddlywiki/menubar/items/pagecontrols $:/plugins/tiddlywiki/menubar/items/server $:/plugins/tiddlywiki/menubar/items/toprightbar"}}}
{"tiddlers":{"$:/plugins/tiddlywiki/xlsx-utils/controls":{"title":"$:/plugins/tiddlywiki/xlsx-utils/controls","caption":"XLSX Utilities","tags":"$:/tags/ControlPanel","text":"\\define help-button(state)\n<$button popup=\"\"\"$:/state/expand-help/$state$\"\"\" class=\"tc-btn-invisible tc-popup-keep\">\n{{$:/core/images/help}}\n</$button>\n\\end\n\n\\define help-content(type,state)\n<$reveal tag=\"span\" state=\"\"\"$:/state/expand-help/$state$\"\"\" type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down tc-popup-keep\" style=\"padding: 0.5em; max-width: 30em; white-space: normal;\">\n<$transclude tiddler=\"\"\"$:/plugins/tiddlywiki/xlsx-utils/docs/$type$\"\"\" mode=\"block\"/>\n</div>\n</$reveal>\n\\end\n\n\\define renameProxyTitle()\n$:/state/plugins/tiddlywiki/xlsx-utils/rename-$(currentTiddler)$\n\\end\n\n\\define rename-current-tiddler()\n<$edit-text tag=\"input\" tiddler=<<renameProxyTitle>> placeholder=\"Rename\" default=<<currentTiddler>> size=\"50\"/>\n<$reveal type=\"nomatch\" state=\"\"\"$(renameProxyTitle)$\"\"\" text=<<currentTiddler>> default=<<currentTiddler>> tag=\"span\">\n<$button>\n<$action-deletetiddler $tiddler=<<renameProxyTitle>>/>\ncancel\n</$button>\n<$button>\n<$action-sendmessage $message=\"tm-rename-tiddler\" from=<<currentTiddler>> to={{$(renameProxyTitle)$}}/>\n<$action-deletetiddler $tiddler=<<renameProxyTitle>>/>\nrename\n</$button>\n<$set name=\"proxy-title\" value={{$(renameProxyTitle)$}}>\n<$list filter=\"\"\"[<proxy-title>is[tiddler]]\"\"\">\nWarning: tiddler already exists\n</$list>\n</$set>\n</$reveal>\n\\end\n\n\\define expand-collapse-button(state)\n<$reveal state=\"\"\"$:/state/expand/$state$\"\"\" type=\"match\" text=\"yes\" default=\"no\" tag=\"span\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/state/expand/$state$\"\"\" $value=\"no\"/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal state=\"\"\"$:/state/expand/$state$\"\"\" type=\"nomatch\" text=\"yes\" default=\"no\" tag=\"span\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/state/expand/$state$\"\"\" $value=\"yes\"/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n\\end\n\n\\define expand-collapse-content(state,content,class)\n<$reveal state=\"\"\"$:/state/expand/$state$\"\"\" type=\"match\" text=\"yes\" default=\"no\" tag=\"div\" class=\"\"\"$class$\"\"\" animate=\"yes\" retain=\"yes\">\n$content$\n</$reveal>\n\\end\n\n\\define up-down-buttons(parent,child)\n<$list filter=\"[list<$parent$>butfirst[]field:title<$child$>limit[1]]\" variable=\"listItem\">\n<$button class=\"tc-btn-invisible\">\n<$action-listops $tiddler=<<$parent$>> $subfilter=\"+[move:-1<$child$>]\"/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$list>\n<$list filter=\"[list<$parent$>butlast[]field:title<$child$>limit[1]]\" variable=\"listItem\">\n<$button class=\"tc-btn-invisible\">\n<$action-listops $tiddler=<<$parent$>> $subfilter=\"+[move:1<$child$>]\"/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$list>\n\\end\n\n\\define edit-button(state)\n<$reveal state=\"\"\"$:/state/edit/$state$\"\"\" type=\"nomatch\" text=\"yes\" default=\"no\" tag=\"span\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/state/edit/$state$\"\"\" $value=\"yes\"/>\n<$action-setfield $tiddler=\"\"\"$:/state/expand/$state$\"\"\" $value=\"yes\"/>\n{{$:/core/images/edit-button}}\n</$button>\n</$reveal>\n<$reveal state=\"\"\"$:/state/edit/$state$\"\"\" type=\"match\" text=\"yes\" default=\"no\" tag=\"span\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/state/edit/$state$\"\"\" $value=\"no\"/>\n{{$:/core/images/done-button}} Finish editing\n</$button>\n</$reveal>\n\\end\n\n\\define delete-item-button(filter,parent,title,prompt)\n<$button class=\"tc-btn-invisible\">\n<$action-deletetiddler $filter=\"\"\"$filter$\"\"\"/>\n<$action-listops $tiddler=\"\"\"$parent$\"\"\" $subfilter=\"-[[$title$]]\"/>\n{{$:/core/images/delete-button}}$prompt$\n</$button>\n\\end\n\n\\define edit-field()\n<$select tiddler=<<field>> field=\"import-field-list-op\" default=\"none\">\n<option value=\"none\">Set field</option>\n<option value=\"append\">Append to list field</option>\n</$select>\n<$edit-text tiddler=<<field>> field=\"import-field-name\" size=\"10\" tag=\"input\" placeholder=\"field name\"default=\"\"/>\n<$reveal state=\"\"\"$(field)$!!import-field-list-op\"\"\" type=\"match\" text=\"none\" default=\"none\" tag=\"span\">\nto\n</$reveal>\n<$reveal state=\"\"\"$(field)$!!import-field-list-op\"\"\" type=\"match\" text=\"append\" default=\"none\" tag=\"span\">\nthe\n</$reveal>\n<$select tiddler=<<field>> field=\"import-field-type\" default=\"string\">\n<option value=\"date\">date</option>\n<option value=\"string\">string</option>\n</$select>\n<$select tiddler=<<field>> field=\"import-field-source\" default=\"column\">\n<option value=\"column\">from column</option>\n<option value=\"constant\">constant</option>\n</$select>\n<$reveal state=\"\"\"$(field)$!!import-field-source\"\"\" type=\"match\" text=\"column\" default=\"column\" tag=\"span\">\n<$edit-text tiddler=<<field>> field=\"import-field-column\" tag=\"input\" placeholder=\"column\" default=\"\"/>\nprefixed\n<$edit-text tiddler=<<field>> field=\"import-field-prefix\" tag=\"input\" placeholder=\"prefix\" default=\"\"/>,\nsuffixed\n<$edit-text tiddler=<<field>> field=\"import-field-suffix\" tag=\"input\" placeholder=\"suffix\" default=\"\"/>\n</$reveal>\n<$reveal state=\"\"\"$(field)$!!import-field-source\"\"\" type=\"match\" text=\"constant\" default=\"column\" tag=\"span\">\n<$edit-text tiddler=<<field>> field=\"import-field-value\" tag=\"input\" placeholder=\"constant\" default=\"\"/>\n</$reveal>\n<$checkbox tiddler=<<field>> field=\"import-field-skip-tiddler-if-blank\" checked=\"yes\" unchecked=\"no\" default=\"no\">\nSkip this tiddler when field blank\n<br/>\nTitle:\n<$tiddler tiddler=<<field>>>\n<<rename-current-tiddler>>\n</$tiddler>\n\\end\n\n\\define view-field()\n<$link to=<<field>>>\n<$list filter=\"[<field>!has[import-field-list-op]]\" variable=\"listItem\">\nSet field ''<$view tiddler=<<field>> field=\"import-field-name\"/>'' to\n</$list>\n<$list filter=\"[<field>get[import-field-list-op]prefix[append]]\" variable=\"listItem\">\nAppend to list field ''<$view tiddler=<<field>> field=\"import-field-name\"/>''\n</$list>\n<$list filter=\"[<field>has[import-field-prefix]]\" variable=\"listItem\">\n''<code><$view tiddler=<<field>> field=\"import-field-prefix\"/></code>'' +\n</$list>\n<$list filter=\"[<field>get[import-field-type]prefix[date]]\" variable=\"listItem\">\ndate\n</$list>\n<$list filter=\"[<field>get[import-field-source]prefix[column]]\" variable=\"listItem\">\nvalue from column ''<$view tiddler=<<field>> field=\"import-field-column\"/>''\n</$list>\n<$list filter=\"[<field>get[import-field-source]prefix[constant]]\" variable=\"listItem\">\nconstant ''<code><$view tiddler=<<field>> field=\"import-field-value\"/></code>''\n</$list>\n<$list filter=\"[<field>has[import-field-suffix]]\" variable=\"listItem\">\n+ ''<code><$view tiddler=<<field>> field=\"import-field-suffix\"/></code>''\n</$list>\n</$link>\n\\end\n\n\\define list-fields()\n<ul class=\"tc-import-spec-row-list\">\n<$list filter=\"[list<row>]\" variable=\"field\" emptyMessage=\"<div>(No field import specifiers)</div>\">\n<li class=\"tc-import-spec-field-wrapper\">\n<$reveal state=\"\"\"$:/state/edit/$(row)$\"\"\" type=\"match\" text=\"yes\" default=\"no\" tag=\"span\">\n<<edit-field>>\n<<up-down-buttons parent:\"row\" child:\"field\">>\n<$macrocall $name=\"delete-item-button\" filter=\"[<field>]\" parent=<<row>> title=<<field>>/>\n</$reveal>\n<$reveal state=\"\"\"$:/state/edit/$(row)$\"\"\" type=\"nomatch\" text=\"yes\" default=\"no\" tag=\"span\">\n<<view-field>>\n</$reveal>\n</li>\n</$list>\n</ul>\n\\end\n\n\\define view-row-content()\n<$reveal state=\"\"\"$:/state/edit/$(row)$\"\"\" type=\"match\" text=\"yes\" default=\"no\" tag=\"ul\" class=\"tc-import-spec-row-controls\" animate=\"yes\" retain=\"yes\">\n<li>\n<$macrocall $name=\"delete-item-button\" filter=\"[<row>] [<row>getlist[]]\" parent=<<sheet>> title=<<row>> prompt=\" Delete this row\"/>\n</li>\n<li>\nTitle:\n<$tiddler tiddler=<<row>>>\n<<rename-current-tiddler>>\n</$tiddler>\n</li>\n<li>\nRow type:\n<$select tiddler=<<row>> field=\"import-row-type\" default=\"by-field\">\n<option value=\"by-field\">By field</option>\n<option value=\"by-column\">By column</option>\n</$select>\n</li>\n<li>\n<$button class=\"tc-btn-invisible\">\n<$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\" />\n<$action-listops $tiddler=<<row>> $subfilter=\"[{$:/temp/newtiddler}] +[putfirst[]]\"/>\n{{$:/core/images/new-button}} Add new field\n</$button>\n</li>\n</$reveal>\n<<list-fields>>\n\\end\n\n\\define view-row()\n<div class=\"tc-import-spec-row-wrapper\">\n<h5>\n<$macrocall $name=\"expand-collapse-button\" state=<<row>>/>\nEach row: <$list filter=\"[list<row>import-field-name[title]]\" variable=\"field\" emptyMessage=\"\n<$link to=<<field>>>(title field not set)</$link>\"><<view-field>></$list>\n<$macrocall $name=\"edit-button\" state=<<row>>/>\n<<up-down-buttons parent:\"sheet\" child:\"row\">>\n<$macrocall $name=\"help-button\" state=<<row>>/>\n</h5>\n<$macrocall $name=\"help-content\" type=\"row\" state=<<row>>/>\n<$macrocall $name=\"expand-collapse-content\" state=<<row>> content=<<view-row-content>> class=\"tc-import-spec-row\"/>\n</div>\n\\end\n\n\\define list-rows()\n<div class=\"tc-import-spec-sheet-list\">\n<$list filter=\"[list<sheet>]\" variable=\"row\" emptyMessage=\"<div>(No row import specifiers)</div>\">\n<<view-row>>\n</$list>\n\\end\n\n\\define view-sheet-content()\n<$reveal state=\"\"\"$:/state/edit/$(sheet)$\"\"\" type=\"match\" text=\"yes\" default=\"no\" tag=\"ul\" class=\"tc-import-spec-sheet-controls\" animate=\"yes\" retain=\"yes\">\n<li>\n<$macrocall $name=\"delete-item-button\" filter=\"[<sheet>] [<sheet>getlist[]] [<sheet>getlist[]getlist[]]\" parent=<<workbook>> title=<<sheet>> prompt=\" Delete this sheet\"/>\n</li>\n<li>\nTitle:\n<$tiddler tiddler=<<sheet>>>\n<<rename-current-tiddler>>\n</$tiddler>\n</li>\n<li>\nImport sheet name:\n<$edit-text tiddler=<<sheet>> field=\"import-sheet-name\" size=\"50\"/>\n</li>\n<li>\n<$button class=\"tc-btn-invisible\">\n<$action-createtiddler $basetitle=\"$:/_ExcelImporter/ImportSpecifiers/Row\" $savetitle=\"$:/temp/newtiddler\" import-spec-role=\"row\"/>\n<$action-listops $tiddler=<<sheet>> $subfilter=\"[{$:/temp/newtiddler}] +[putfirst[]]\"/>\n<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/edit/]] }}} $value=\"yes\"/>\n<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/expand/]] }}} $value=\"yes\"/>\n{{$:/core/images/new-button}} Add new row\n</$button>\n</li>\n</$reveal>\n<<list-rows>>\n\\end\n\n\\define view-sheet()\n<div class=\"tc-import-spec-sheet-wrapper\">\n<h4>\n<$macrocall $name=\"expand-collapse-button\" state=<<sheet>>/>\nSheet: <$link to=<<sheet>>><$view tiddler=<<sheet>> field=\"import-sheet-name\"/></$link>\n<$macrocall $name=\"edit-button\" state=<<sheet>>/>\n<<up-down-buttons parent:\"workbook\" child:\"sheet\">>\n<$macrocall $name=\"help-button\" state=<<sheet>>/>\n</h4>\n<$macrocall $name=\"help-content\" type=\"sheet\" state=<<sheet>>/>\n<$macrocall $name=\"expand-collapse-content\" state=<<sheet>> content=<<view-sheet-content>> class=\"tc-import-spec-sheet\"/>\n</div>\n\\end\n\n\\define list-sheets()\n<div class=\"tc-import-spec-workbook-list\">\n<$list filter=\"[list<workbook>]\" variable=\"sheet\" emptyMessage=\"<div>(No sheet import specifiers)</div>\">\n<<view-sheet>>\n</$list>\n</div>\n\\end\n\n\\define view-workbook-content()\n<$reveal state=\"\"\"$:/state/edit/$(workbook)$\"\"\" type=\"match\" text=\"yes\" default=\"no\" tag=\"ul\" class=\"tc-import-spec-workbook-controls\" animate=\"yes\" retain=\"yes\">\n<li>\n<$macrocall $name=\"delete-item-button\" filter=\"[<workbook>] [<workbook>getlist[]] [<workbook>getlist[]getlist[]] [<workbook>getlist[]getlist[]getlist[]]\" prompt=\" Delete this workbook\"/>\n</li>\n<li>\nTitle:\n<$tiddler tiddler=<<workbook>>>\n<<rename-current-tiddler>>\n</$tiddler>\n</li>\n<li>\nCaption:\n<$edit-text tiddler=<<workbook>> field=\"caption\" size=\"50\"/>\n</li>\n<li>\n<$button class=\"tc-btn-invisible\">\n<$action-createtiddler $basetitle=\"$:/_ExcelImporter/ImportSpecifiers/Sheet\" $savetitle=\"$:/temp/newtiddler\" import-spec-role=\"sheet\" import-sheet-name=\"Sheet name\"/>\n<$action-listops $tiddler=<<workbook>> $subfilter=\"[{$:/temp/newtiddler}] +[putfirst[]]\"/>\n<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/edit/]] }}} $value=\"yes\"/>\n<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/expand/]] }}} $value=\"yes\"/>\n{{$:/core/images/new-button}} Add new sheet\n</$button>\n</li>\n</$reveal>\n<<list-sheets>>\n\\end\n\n\\define view-workbook()\n<div class=\"tc-import-spec-workbook-wrapper\">\n<h3>\n<$macrocall $name=\"expand-collapse-button\" state=<<workbook>>/>\nWorkbook: <$link to=<<workbook>>><$view tiddler=<<workbook>> field=\"caption\"/></$link>\n<$macrocall $name=\"edit-button\" state=<<workbook>>/>\n<$macrocall $name=\"help-button\" state=<<workbook>>/>\n</h3>\n<$macrocall $name=\"help-content\" type=\"workbook\" state=<<workbook>>/>\n<$macrocall $name=\"expand-collapse-content\" state=<<workbook>> content=<<view-workbook-content>> class=\"tc-import-spec-workbook\"/>\n</div>\n\\end\n\n\\define list-workbooks()\n<ul class=\"tc-import-spec-editor-controls\">\n<li>\n<$button class=\"tc-btn-invisible\">\n<$action-createtiddler $basetitle=\"$:/_ExcelImporter/ImportSpecifiers/Workbook\" $savetitle=\"$:/temp/newtiddler\" import-spec-role=\"workbook\" caption=\"New workbook\"/>\n<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/edit/]] }}} $value=\"yes\"/>\n<$action-setfield $tiddler={{{ [{$:/temp/newtiddler}addprefix[$:/state/expand/]] }}} $value=\"yes\"/>\n{{$:/core/images/new-button}} Add new workbook\n</$button>\n</li>\n</ul>\n<div class=\"tc-import-spec-editor-list\">\n<$list filter=\"[all[shadows+tiddlers]import-spec-role[workbook]sort[caption]]\" variable=\"workbook\">\n<<view-workbook>>\n</$list>\n</div>\n\\end\n\n<h1>\nControls for XLSX Spreadsheet Utilities\n</h1>\n\n<div class=\"tc-import-spec-selector\">\n<h2>\nCurrent Import Specification\n</h2>\n<$list filter=\"[all[shadows+tiddlers]import-spec-role[workbook]limit[1]]\" emptyMessage=\"\"\"\nThere are no import specifications available. Use the controls below to create one\n\"\"\">\nThis is the import specification that will be used for the next import of an `.XLSX` file\n<$select tiddler=\"$:/config/plugins/tiddlywiki/xlsx-utils/default-import-spec\">\n<$list filter=\"[all[shadows+tiddlers]import-spec-role[workbook]sort[caption]]\">\n<option value=<<currentTiddler>>><$text text={{!!caption}}/></option>\n</$list>\n</$select>\n</$list>\n</div>\n\n<div class=\"tc-import-spec-editor-wrapper\">\n<h2>\n Import Specifications\n<$macrocall $name=\"help-button\" state=\"\"/>\n</h2>\n<$macrocall $name=\"help-content\" type=\"editor\" state=\"\"/>\n<div class=\"tc-import-spec-editor\">\n<<list-workbooks>>\n</div>\n</div>\n"},"$:/plugins/tiddlywiki/xlsx-utils/deserializer.js":{"title":"$:/plugins/tiddlywiki/xlsx-utils/deserializer.js","text":"/*\\\ntitle: $:/plugins/tiddlywiki/xlsx-utils/deserializer.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nXLSX file deserializer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse an XLSX file into tiddlers\n*/\nexports[\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"] = function(text,fields) {\n\t// Collect output tiddlers in an array\n\tvar results = [],\n\t\tXLSXImporter = require(\"$:/plugins/tiddlywiki/xlsx-utils/importer.js\").XLSXImporter,\n\t\timporter = new XLSXImporter({\n\t\t\ttext: text,\n\t\t\twiki: $tw.wiki\n\t\t});\n\t// Return the output tiddlers\n\treturn importer.getResults();\n};\n\n})();\n","type":"application/javascript","module-type":"tiddlerdeserializer"},"$:/plugins/tiddlywiki/xlsx-utils/docs/editor":{"title":"$:/plugins/tiddlywiki/xlsx-utils/docs/editor","text":"!!! Import Specifications\n\nImport specifications govern how spreadsheets are converted into individual tiddlers.\n\nEach \"workbook\" describes how spreadsheets of a particular format should be converted.\n"},"$:/plugins/tiddlywiki/xlsx-utils/docs/row":{"title":"$:/plugins/tiddlywiki/xlsx-utils/docs/row","text":"!!! Row Import Specifications\n\nEach row import specification describes how one tiddler should be extracted from each row of the current sheet.\n\nNote that using multiple row import specifications within a sheet enables multiple tiddlers to be created from each row of the sheet.\n\nRows contain a list of field import specifications that describe how each field of the tiddler should be created.\n\n!!! Field Import Specifications\n\nField import specifications describe the value given to a particular field of a tiddler.\n\nThey follow a rich syntax for describing how each field of the tiddler is created. For example:\n\n* Set field `title` to string from column `Organization`\n* Set field `role` to string constant `organization`\n* Append to list field `list` the string from column `Country` prefixed with `Map:`\n\n"},"$:/plugins/tiddlywiki/xlsx-utils/docs/sheet":{"title":"$:/plugins/tiddlywiki/xlsx-utils/docs/sheet","text":"!!! Sheet Import Specifications\n\nEach sheet import specification describes how a named sheet within a workbook should be converted into individual tiddlers.\n\nSheets contain a list of row import specifications that describe how individual rows of the sheet should be handled.\n\nEach sheet has the name of the sheet that it handles.\n\nNote that the first row of each sheet is interpreted as the title of each column.\n"},"$:/plugins/tiddlywiki/xlsx-utils/docs/workbook":{"title":"$:/plugins/tiddlywiki/xlsx-utils/docs/workbook","text":"!!! Workbook Import Specifications\n\nEach workbook import specification describes how spreadsheets of a particular format should be converted into individual tiddlers.\n\nCreate a new workbook for each type of spreadsheet that you will be working with.\n\nWorkbooks contain a list of sheet import specifications that describe how individual sheets of the workbook should be handled.\n\nEach workbook has a caption that you can use to describe its purpose.\n"},"$:/plugins/tiddlywiki/xlsx-utils/xlsx.js":{"text":"var old_exports = exports,JSZip = require(\"$:/plugins/tiddlywiki/jszip/jszip.js\");exports = {};if($tw.browser){module.exports=undefined;};/* xlsx.js (C) 2013-2015 SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint -W041 */\n/*jshint funcscope:true, eqnull:true */\nvar XLSX = {};\n(function make_xlsx(XLSX){\nXLSX.version = '0.8.0';\nvar current_codepage = 1200, current_cptable;\nif(typeof module !== \"undefined\" && typeof require !== 'undefined') {\n\tif(typeof cptable === 'undefined') cptable = require('./dist/cpexcel');\n\tcurrent_cptable = cptable[current_codepage];\n}\nfunction reset_cp() { set_cp(1200); }\nvar set_cp