From 5b65eb2b2a6d05f2e791a5808cf72a95c74ffd22 Mon Sep 17 00:00:00 2001 From: Oscar Plaisant Date: Tue, 1 Oct 2024 11:38:50 +0200 Subject: [PATCH] update --- .DS_Store | Bin 153604 -> 153604 bytes .obsidian.mobile/.DS_Store | Bin 6148 -> 6148 bytes .obsidian.mobile/appearance.json | 6 +- .obsidian.mobile/community-plugins.json | 7 +- .obsidian.mobile/core-plugins-migration.json | 4 +- .obsidian.mobile/core-plugins.json | 2 +- .obsidian.mobile/graph.json | 131 +- .../plugins/breadcrumbs/data.json | 276 + .obsidian.mobile/plugins/breadcrumbs/main.js | 65389 +++++++++------- .../plugins/breadcrumbs/manifest.json | 11 +- .../plugins/breadcrumbs/styles.css | 114 +- .obsidian.mobile/plugins/cmdr/data.json | 36 + .obsidian.mobile/plugins/cmdr/main.js | 9 + .obsidian.mobile/plugins/cmdr/manifest.json | 11 + .obsidian.mobile/plugins/cmdr/styles.css | 1 + .../plugins/obsidian-day-planner/data.json | 39 + .../plugins/obsidian-day-planner/main.js | 57008 ++++++++++++++ .../obsidian-day-planner/manifest.json | 11 + .../plugins/obsidian-day-planner/styles.css | 1065 + .../plugins/obsidian42-brat/data.json | 16 + .../plugins/obsidian42-brat/main.js | 2420 + .../plugins/obsidian42-brat/manifest.json | 15 + .../plugins/obsidian42-brat/styles.css | 3 + .obsidian.mobile/types.json | 29 + .obsidian.mobile/workspace-mobile.json | 131 +- .obsidian/appearance.json | 7 +- .obsidian/community-plugins.json | 16 +- .obsidian/graph.json | 2 +- .obsidian/hotkeys.json | 156 +- .obsidian/plugins/breadcrumbs/data.json | 4 +- .obsidian/plugins/cmdr/data.json | 29 + .obsidian/plugins/cmdr/main.js | 9 + .obsidian/plugins/cmdr/manifest.json | 11 + .obsidian/plugins/cmdr/styles.css | 1 + .obsidian/plugins/code-styler/data.json | 604 + .obsidian/plugins/code-styler/main.js | 20045 +++++ .obsidian/plugins/code-styler/manifest.json | 11 + .../code-styler/reference-files/cache.json | 1 + .obsidian/plugins/code-styler/styles.css | 1348 + .../data.json | 42 - .../customizable-page-header-buttons/main.js | 60 - .../manifest.json | 10 - .../styles.css | 50 - .../plugins/darlal-switcher-plus/main.js | 6081 +- .../darlal-switcher-plus/manifest.json | 4 +- .../plugins/darlal-switcher-plus/styles.css | 36 +- .obsidian/plugins/languagetool/data.json | 16 + .obsidian/plugins/languagetool/main.js | 35 + .obsidian/plugins/languagetool/manifest.json | 10 + .../styles.css | 112 +- .obsidian/plugins/lovely-mindmap/main.js | 227 +- .../plugins/lovely-mindmap/manifest.json | 2 +- .obsidian/plugins/math-booster/data.json | 155 + .obsidian/plugins/math-booster/main.js | 6050 ++ .obsidian/plugins/math-booster/manifest.json | 12 + .obsidian/plugins/math-booster/styles.css | 330 + .obsidian/plugins/mathlinks/main.js | 1079 + .obsidian/plugins/mathlinks/manifest.json | 10 + .../plugins/obsidian-day-planner/data.json | 66 +- .../plugins/obsidian-day-planner/main.js | 57256 +------------- .../obsidian-day-planner/manifest.json | 2 +- .../plugins/obsidian-day-planner/styles.css | 1062 +- .../obsidian-excalidraw-plugin/data.json | 9 +- .../obsidian-excalidraw-plugin/main.js | 4 +- .../obsidian-excalidraw-plugin/manifest.json | 2 +- .../obsidian-excalidraw-plugin/styles.css | 2 +- .obsidian/plugins/obsidian-hider/data.json | 2 +- .obsidian/plugins/obsidian-jupyter/data.json | 4 - .obsidian/plugins/obsidian-jupyter/main.js | 3376 - .../plugins/obsidian-jupyter/manifest.json | 10 - .../obsidian-jupyter/obsidian-jupyter.py | 67 - .obsidian/plugins/obsidian-jupyter/styles.css | 17 - .../obsidian-languagetool-plugin/data.json | 7 - .../obsidian-languagetool-plugin/main.js | 7 - .../manifest.json | 10 - .../plugins/obsidian-latex-suite/data.json | 4 +- .obsidian/plugins/obsidian-markmind/main.js | 12 +- .../plugins/obsidian-markmind/manifest.json | 2 +- .../plugins/obsidian-markmind/styles.css | 3525 +- .../obsidian-minimal-settings/data.json | 4 +- .obsidian/plugins/obsidian-pandoc/data.json | 2 +- .../plugins/obsidian-shellcommands/data.json | 2 +- .../obsidian-spaced-repetition/main.js | 13833 +++- .../obsidian-spaced-repetition/manifest.json | 4 +- .../obsidian-spaced-repetition/styles.css | 76 +- .../plugins/obsidian-tasks-plugin/main.js | 90 +- .../obsidian-tasks-plugin/manifest.json | 2 +- .obsidian/plugins/obsidian42-brat/main.js | 41 +- .../plugins/obsidian42-brat/manifest.json | 2 +- .obsidian/plugins/quickadd/data.json | 2 +- .obsidian/plugins/share-note/data.json | 17 + .obsidian/plugins/share-note/main.js | 15639 ++++ .obsidian/plugins/share-note/manifest.json | 11 + .obsidian/plugins/share-note/styles.css | 24 + .obsidian/plugins/templater-obsidian/main.js | 14 +- .../plugins/templater-obsidian/manifest.json | 2 +- .../plugins/text-snippets-obsidian/data.json | 6 +- .obsidian/plugins/time-ruler/main.js | 102 +- .obsidian/plugins/time-ruler/manifest.json | 2 +- .obsidian/plugins/time-ruler/styles.css | 1 + .obsidian/plugins/vertical-tabs/data.json | 9 + .obsidian/plugins/vertical-tabs/main.js | 30373 +++++++ .obsidian/plugins/vertical-tabs/manifest.json | 13 + .obsidian/plugins/vertical-tabs/styles.css | 199 + .obsidian/snippets/breadcrumbs.css | 36 +- .obsidian/snippets/day_planner.css | 14 + .obsidian/snippets/general_interface.css | 57 +- .obsidian/snippets/tabs_on_multiple_rows.css | 4 +- .trash/Untitled 9.md | 0 fonctions.md => .trash/fonctions.md | 10 +- ...ew and see if it overloads at one point.md | 0 .trash/{{field}} of {{current}} 2.md | 0 .trash/{{field}} of {{current}}.md | 0 ...cle en Y 2022-09-12 14.15.53.excalidraw.md | 14 +- ...le en Y 2022-09-12 14.15.53.excalidraw.svg | 10 + LaTeX changer le titre du sommaire.md | 4 +- LaTeX cheat sheet.md | 8 + LaTeX division de polynômes.md | 8 +- LaTeX package polynom.md | 10 +- LaTeX.md | 13 +- MOC polynômes.md | 2 +- associations étudiantes.md | 7 +- automate.md | 7 +- base de données.md | 7 +- biodiversité.md | 12 +- blog | 1 + capitalisme.md | 1 + cheat sheet.md | 11 +- chimie.md | 7 +- classes sociales.md | 9 +- classifier et diviser les personnes.md | 8 +- cours L3.algèbre.md | 7 +- cours L3.md | 2 +- cours L3.topologie.md | 6 +- daily/2024-09-24.md | 2 +- daily/2024-09-25.md | 4 +- daily/2024-09-26.md | 4 + daily/2024-09-27.md | 17 + daily/2024-09-28.md | 18 + daily/2024-09-29.md | 15 + daily/2024-09-30.md | 18 + daily/2024-10-01.md | 17 + ...expression de l'arg cosinus hyperbolique.md | 7 +- ensemble dense.md | 13 + flashcards anglais.md | 2 + fonction continue.md | 136 +- fonction cosinus hyperbolique.md | 2 +- fonction cosinus.md | 2 +- fonction de Heaviside.md | 2 +- fonction rampe.md | 2 +- fonction signe.md | 2 +- fonction sinus hyperbolique.md | 2 +- fonction sinus.md | 2 +- fonction tangente hyperbolique.md | 2 +- fonction tangente.md | 2 +- fonction.md | 2 +- fonctions particulières.md | 16 +- fonctions trigonométriques.md | 2 +- index.md | 8 +- intégration.md | 6 +- langage de programmation.md | 7 +- latex as fast as handwriting.md | 2 +- latex indice et exposant décalés.md | 3 + latex longue flèche pour les limites.md | 7 + maths.excalidraw.md | 2 +- normes équivalentes.md | 2 +- obsidian plugin LaTeX suite.md | 2 +- obsidian plugins.md | 6 +- ordre d'un élément d'un groupe.md | 114 +- partie ouverte d'un espace métrique.md | 2 +- politique.md | 10 +- programmation.fonction.md | 6 +- sources/zotero/.DS_Store | Bin 0 -> 6148 bytes sous-groupes de R pour l'addition.md | 61 + système politique.md | 8 +- topologie induite.md | 30 + tribu borélienne.md | 4 + étapes d'un génocide.md | 7 +- 178 files changed, 186337 insertions(+), 103731 deletions(-) create mode 100644 .obsidian.mobile/plugins/breadcrumbs/data.json create mode 100644 .obsidian.mobile/plugins/cmdr/data.json create mode 100644 .obsidian.mobile/plugins/cmdr/main.js create mode 100644 .obsidian.mobile/plugins/cmdr/manifest.json create mode 100644 .obsidian.mobile/plugins/cmdr/styles.css create mode 100644 .obsidian.mobile/plugins/obsidian-day-planner/data.json create mode 100644 .obsidian.mobile/plugins/obsidian-day-planner/main.js create mode 100644 .obsidian.mobile/plugins/obsidian-day-planner/manifest.json create mode 100644 .obsidian.mobile/plugins/obsidian-day-planner/styles.css create mode 100644 .obsidian.mobile/plugins/obsidian42-brat/data.json create mode 100644 .obsidian.mobile/plugins/obsidian42-brat/main.js create mode 100644 .obsidian.mobile/plugins/obsidian42-brat/manifest.json create mode 100644 .obsidian.mobile/plugins/obsidian42-brat/styles.css create mode 100644 .obsidian.mobile/types.json create mode 100644 .obsidian/plugins/cmdr/data.json create mode 100644 .obsidian/plugins/cmdr/main.js create mode 100644 .obsidian/plugins/cmdr/manifest.json create mode 100644 .obsidian/plugins/cmdr/styles.css create mode 100644 .obsidian/plugins/code-styler/data.json create mode 100644 .obsidian/plugins/code-styler/main.js create mode 100644 .obsidian/plugins/code-styler/manifest.json create mode 100644 .obsidian/plugins/code-styler/reference-files/cache.json create mode 100644 .obsidian/plugins/code-styler/styles.css delete mode 100644 .obsidian/plugins/customizable-page-header-buttons/data.json delete mode 100644 .obsidian/plugins/customizable-page-header-buttons/main.js delete mode 100644 .obsidian/plugins/customizable-page-header-buttons/manifest.json delete mode 100644 .obsidian/plugins/customizable-page-header-buttons/styles.css create mode 100644 .obsidian/plugins/languagetool/data.json create mode 100644 .obsidian/plugins/languagetool/main.js create mode 100644 .obsidian/plugins/languagetool/manifest.json rename .obsidian/plugins/{obsidian-languagetool-plugin => languagetool}/styles.css (60%) create mode 100644 .obsidian/plugins/math-booster/data.json create mode 100644 .obsidian/plugins/math-booster/main.js create mode 100644 .obsidian/plugins/math-booster/manifest.json create mode 100644 .obsidian/plugins/math-booster/styles.css create mode 100644 .obsidian/plugins/mathlinks/main.js create mode 100644 .obsidian/plugins/mathlinks/manifest.json delete mode 100644 .obsidian/plugins/obsidian-jupyter/data.json delete mode 100644 .obsidian/plugins/obsidian-jupyter/main.js delete mode 100644 .obsidian/plugins/obsidian-jupyter/manifest.json delete mode 100644 .obsidian/plugins/obsidian-jupyter/obsidian-jupyter.py delete mode 100644 .obsidian/plugins/obsidian-jupyter/styles.css delete mode 100644 .obsidian/plugins/obsidian-languagetool-plugin/data.json delete mode 100644 .obsidian/plugins/obsidian-languagetool-plugin/main.js delete mode 100644 .obsidian/plugins/obsidian-languagetool-plugin/manifest.json create mode 100644 .obsidian/plugins/share-note/data.json create mode 100644 .obsidian/plugins/share-note/main.js create mode 100644 .obsidian/plugins/share-note/manifest.json create mode 100644 .obsidian/plugins/share-note/styles.css create mode 100644 .obsidian/plugins/vertical-tabs/data.json create mode 100644 .obsidian/plugins/vertical-tabs/main.js create mode 100644 .obsidian/plugins/vertical-tabs/manifest.json create mode 100644 .obsidian/plugins/vertical-tabs/styles.css create mode 100644 .obsidian/snippets/day_planner.css create mode 100644 .trash/Untitled 9.md rename fonctions.md => .trash/fonctions.md (84%) create mode 100644 .trash/super very long title for testing the tabs view and see if it overloads at one point.md create mode 100644 .trash/{{field}} of {{current}} 2.md create mode 100644 .trash/{{field}} of {{current}}.md create mode 100644 Excalidraw/cycle en Y 2022-09-12 14.15.53.excalidraw.svg create mode 100644 LaTeX cheat sheet.md create mode 160000 blog create mode 100644 daily/2024-09-28.md create mode 100644 daily/2024-09-29.md create mode 100644 daily/2024-09-30.md create mode 100644 daily/2024-10-01.md create mode 100644 ensemble dense.md create mode 100644 latex indice et exposant décalés.md create mode 100644 latex longue flèche pour les limites.md create mode 100644 sources/zotero/.DS_Store create mode 100644 sous-groupes de R pour l'addition.md create mode 100644 topologie induite.md diff --git a/.DS_Store b/.DS_Store index b7c4ea9c6ef5abadb34b098e4a42dba523ccf9ec..96e3187079d149535de56a48485e26bceb1487f9 100644 GIT binary patch delta 1212 zcmb`GT}YEr7{||Ze9d%o=T%m2I^CwOOlI>Vb7|^qI-N6=Oer<|hzdd6K!}LUQC@kG z$xA(8sk`VloKPJvB$J|`K)tD(Aa`AqT?lm%t+T~0Mk-!(;Jmz?bN>JHdp^#1FnK(f z?0*6(6BKf_3F;)3mb8$5a+X{o=k9NTRq^X2v=`GI-NUQ?;ZiP=}*~M8D=sq+e}%UR~zViLJDui%;JP4c-=+IIctM?w%a)?23@oRNBZCxclJRqGwfhk zBuI=X`@n*>Mry}(q%&NZ5b?g7ha&AZy5ksFh8{_%58$WgkbzYd)U33%ODUD7VoBiY7jTm0>RMt8 z+xZ9wopNJZk1K0XhFeY4!`V7CvYcIIW}Mi79(1_r1PU+|mLW#f z@jYH1Z35XuE%>0B)^lc}cUYoWB&8T?rX{?gm@Y6)thEvr2yyS@ziKJl2gB$n1YOj4 z(FUn-5CgT~iWDLPAGJaU=y0hQJfO#b7dk1)#J8hRj*rKn60&f35>6)(Vi3pWzg6F8 zplM3zu!Kui|GXDS!@s2qF delta 1222 zcmbu8Ur5tY6vyv5PRaJ0_m|5xo4WZg=S-b{=9ZF97MnUlNu(mPRU}#}Go_cpM)}Z7 zApOz<5oGj-ddU^leO)g-1?@qIAZR`G7_PU1$nJ(qhytOLN#E*kU7FjuFe%-mY#xkoxwD-d^PAgMTKwtdW zoSpi!R}6<>kyF{2{8~Q+`4kLbtx0#CvASfY#5$suyr*GTS|zkF_&C{T!9~jfY^_{o ztYKtB|Mz@xAp)nkPU1|Y&dY*XUDyogwZt0>y$_(eDT-4J&BG;*OeHl6R?YgAYl$iy zg}YF%-92KY4*@h3{?pIPCHTh8f9bAC+A2vQi^YQ|-NX}c)B)ca zYmH@Of5!DRn~X;4{{#hE{Vi*%ZSgY!@A7E28>fjUp|3_}GPWsLqj;DEd-^&m7E~cN%;jy}hxF*Pr4;5esH4~Ck3B^$;!>B1v=Rh;Hoj1`e;Lo0pmLAPfMAeTHF zOA1jb?$~gY(_;rJR2#&4{}yPClBQ>aY?95$p`4MUd4@s?n6!vlN7pLAAoe@)DbGpu z%b57lfjozNPH=#U6fgMXoGAU^0y8b0ll$@zv_m018Cjnna)rSIyGe<_1XxI!hXE)e zB?=d_i)G~kQe#rduRy8RKcJ&WF)%<04aFe{RvJyfaj?;FQofZg96}$Ik)p~_PKpgD apn?=9HqeP6wup{4T-N<|+4sLL>wW>7FuHXB diff --git a/.obsidian.mobile/.DS_Store b/.obsidian.mobile/.DS_Store index 8294e3a0da9aaab68dc34197649059f0b86cbcd4..5128516d872b684814f43ea80c15aeb3cfce4bb1 100644 GIT binary patch delta 456 zcmb7By>7x_47?<$MJymSFsCn&FCd|+a~Ua1Rm9o=;ztRAd|_aqEIdFFPr$^&mWN~Q zIYkA*gp|*g&%U!`uf4VRQ!#Ue&8)I5axbV`QvA0%|dcpuPzA(K^ zqb^0L(T<@JVKPnp=3FN+8FPGKK{P=hAr#uo2Sh{0nsI|_37^6z<37~|jcB_>V|EJY zN6;&}2}>244E=13n9>UGEcb~8q&pOhNd0Rd^&&UI8?zD79=_RHtZ+0lJw8#EQEr*t zj3q;bivM>_aw&FhuI}1U>$IW5#ZLb>xb+M>b&RE%KIV&g-iJ3hTHB)iTH<;5WyTbr IcI<=o3-5qb#sB~S delta 94 zcmZoMXfc=|#>B`mu~2NHo}wrV0|Nsi1A_nqLjgl7LkUB1PP$?6#KPr_ESt+%Co*kT o;9zH&*pR%Lor9kPsB5zz$9Lw*{34b>4PcE-P?}|Pgvc6Z0K>5omjD0& diff --git a/.obsidian.mobile/appearance.json b/.obsidian.mobile/appearance.json index f8f0d8dd..e97e6905 100644 --- a/.obsidian.mobile/appearance.json +++ b/.obsidian.mobile/appearance.json @@ -1,8 +1,8 @@ { "accentColor": "", - "cssTheme": "Minimal", + "cssTheme": "", "enabledCssSnippets": [ - "custom_callouts", - "embeds" + "embeds", + "custom_callouts" ] } \ No newline at end of file diff --git a/.obsidian.mobile/community-plugins.json b/.obsidian.mobile/community-plugins.json index ac9213f1..db5493f2 100644 --- a/.obsidian.mobile/community-plugins.json +++ b/.obsidian.mobile/community-plugins.json @@ -1,8 +1,11 @@ [ "dataview", - "breadcrumbs", "calendar", "obsidian-tasks-plugin", "obsidian-minimal-settings", - "obsidian-style-settings" + "obsidian-style-settings", + "obsidian-day-planner", + "obsidian42-brat", + "breadcrumbs", + "cmdr" ] \ No newline at end of file diff --git a/.obsidian.mobile/core-plugins-migration.json b/.obsidian.mobile/core-plugins-migration.json index 436f43cf..e594562a 100644 --- a/.obsidian.mobile/core-plugins-migration.json +++ b/.obsidian.mobile/core-plugins-migration.json @@ -4,7 +4,7 @@ "switcher": true, "graph": true, "backlink": true, - "canvas": true, + "canvas": false, "outgoing-link": true, "tag-pane": true, "properties": false, @@ -18,7 +18,7 @@ "bookmarks": true, "markdown-importer": false, "zk-prefixer": false, - "random-note": false, + "random-note": true, "outline": true, "word-count": true, "slides": false, diff --git a/.obsidian.mobile/core-plugins.json b/.obsidian.mobile/core-plugins.json index 9405bfdc..46977d79 100644 --- a/.obsidian.mobile/core-plugins.json +++ b/.obsidian.mobile/core-plugins.json @@ -4,7 +4,6 @@ "switcher", "graph", "backlink", - "canvas", "outgoing-link", "tag-pane", "page-preview", @@ -14,6 +13,7 @@ "command-palette", "editor-status", "bookmarks", + "random-note", "outline", "word-count", "file-recovery" diff --git a/.obsidian.mobile/graph.json b/.obsidian.mobile/graph.json index 4948f717..7b3b274d 100644 --- a/.obsidian.mobile/graph.json +++ b/.obsidian.mobile/graph.json @@ -1,22 +1,135 @@ { - "collapse-filter": true, + "collapse-filter": false, "search": "", "showTags": false, "showAttachments": false, "hideUnresolved": false, "showOrphans": true, "collapse-color-groups": true, - "colorGroups": [], + "colorGroups": [ + { + "query": "tag:#not-done", + "color": { + "a": 1, + "rgb": 8882055 + } + }, + { + "query": "tag:#MOC", + "color": { + "a": 1, + "rgb": 10354945 + } + }, + { + "query": "tag:#PKM OR tag:#obsidian", + "color": { + "a": 1, + "rgb": 4863904 + } + }, + { + "query": "tag:#flashcards", + "color": { + "a": 1, + "rgb": 4863904 + } + }, + { + "query": "tag:#gists", + "color": { + "a": 1, + "rgb": 6827411 + } + }, + { + "query": "tag:#CV", + "color": { + "a": 1, + "rgb": 11010185 + } + }, + { + "query": "tag:#maths", + "color": { + "a": 1, + "rgb": 2792960 + } + }, + { + "query": "tag:#logique", + "color": { + "a": 1, + "rgb": 13050 + } + }, + { + "query": "tag:#informatique", + "color": { + "a": 1, + "rgb": 14772500 + } + }, + { + "query": "tag:#personne", + "color": { + "a": 1, + "rgb": 6655149 + } + }, + { + "query": "path:sources", + "color": { + "a": 1, + "rgb": 3770873 + } + }, + { + "query": "tag:#science OR tag:#art OR tag:#autres OR tag:#cuisine", + "color": { + "a": 1, + "rgb": 15646813 + } + }, + { + "query": "tag:#exercice OR tag:#cours OR tag:#fac", + "color": { + "a": 1, + "rgb": 16759552 + } + }, + { + "query": "tag:#devoir OR tag:#devoir-fait", + "color": { + "a": 1, + "rgb": 16711914 + } + }, + { + "query": "tag:#politique OR tag:#science/sociologie", + "color": { + "a": 1, + "rgb": 35464 + } + }, + { + "query": "tag:#excalidraw", + "color": { + "a": 1, + "rgb": 8019199 + } + } + ], "collapse-display": true, "showArrow": false, "textFadeMultiplier": 0, - "nodeSizeMultiplier": 1, - "lineSizeMultiplier": 1, + "nodeSizeMultiplier": 1.29210205078125, + "lineSizeMultiplier": 1.70143229166667, "collapse-forces": true, - "centerStrength": 0.518713248970312, - "repelStrength": 10, + "centerStrength": 0.238240559895833, + "repelStrength": 6.47786458333333, "linkStrength": 1, - "linkDistance": 250, - "scale": 0.11000788175913212, - "close": false + "linkDistance": 30, + "scale": 0.052596878139440674, + "close": true } \ No newline at end of file diff --git a/.obsidian.mobile/plugins/breadcrumbs/data.json b/.obsidian.mobile/plugins/breadcrumbs/data.json new file mode 100644 index 00000000..3ad2bcb8 --- /dev/null +++ b/.obsidian.mobile/plugins/breadcrumbs/data.json @@ -0,0 +1,276 @@ +{ + "is_dirty": false, + "edge_fields": [ + { + "label": "up" + }, + { + "label": "down" + }, + { + "label": "same" + }, + { + "label": "next" + }, + { + "label": "prev" + } + ], + "edge_field_groups": [ + { + "label": "ups", + "fields": [ + "up" + ] + }, + { + "label": "downs", + "fields": [ + "down" + ] + }, + { + "label": "sames", + "fields": [ + "same" + ] + }, + { + "label": "nexts", + "fields": [ + "next" + ] + }, + { + "label": "prevs", + "fields": [ + "prev" + ] + } + ], + "implied_relations": { + "transitive": [ + { + "name": "", + "rounds": 1, + "chain": [ + { + "field": "up" + } + ], + "close_field": "down", + "close_reversed": true + }, + { + "name": "", + "rounds": 1, + "chain": [ + { + "field": "down" + } + ], + "close_field": "up", + "close_reversed": true + }, + { + "name": "", + "rounds": 1, + "chain": [ + { + "field": "same" + } + ], + "close_field": "same", + "close_reversed": true + }, + { + "name": "", + "rounds": 1, + "chain": [ + { + "field": "next" + } + ], + "close_field": "prev", + "close_reversed": true + }, + { + "name": "", + "rounds": 1, + "chain": [ + { + "field": "prev" + } + ], + "close_field": "next", + "close_reversed": true + } + ] + }, + "explicit_edge_sources": { + "typed_link": {}, + "list_note": { + "default_neighbour_field": "" + }, + "tag_note": { + "default_field": "up" + }, + "regex_note": { + "default_field": "up" + }, + "dendron_note": { + "enabled": false, + "delimiter": ".", + "default_field": "up", + "display_trimmed": false + }, + "johnny_decimal_note": { + "enabled": false, + "delimiter": ".", + "default_field": "up" + }, + "date_note": { + "enabled": false, + "date_format": "yyyy-MM-dd", + "default_field": "next", + "stretch_to_existing": false + } + }, + "views": { + "page": { + "all": { + "sticky": false, + "readable_line_width": true + }, + "trail": { + "enabled": true, + "format": "path", + "selection": "all", + "default_depth": 8, + "no_path_message": "", + "show_controls": false, + "merge_fields": true, + "field_group_labels": [ + "ups" + ], + "show_node_options": { + "ext": false, + "folder": false, + "alias": false + } + }, + "prev_next": { + "enabled": true, + "show_node_options": { + "ext": false, + "folder": false, + "alias": false + }, + "field_group_labels": { + "prev": [ + "prevs" + ], + "next": [] + } + } + }, + "side": { + "matrix": { + "collapse": false, + "edge_sort_id": { + "field": "basename", + "order": 1 + }, + "show_node_options": { + "ext": false, + "folder": false, + "alias": false + }, + "show_attributes": [ + "source", + "implied_kind", + "round" + ], + "field_group_labels": [ + "ups", + "downs", + "sames", + "nexts", + "prevs" + ] + }, + "tree": { + "collapse": false, + "show_attributes": [], + "merge_fields": false, + "field_group_labels": [ + "downs" + ], + "edge_sort_id": { + "field": "basename", + "order": 1 + }, + "show_node_options": { + "ext": false, + "folder": false, + "alias": false + } + } + }, + "codeblocks": { + "show_node_options": { + "ext": false, + "folder": false, + "alias": false + } + } + }, + "commands": { + "rebuild_graph": { + "notify": true, + "trigger": { + "note_save": false, + "layout_change": false + } + }, + "list_index": { + "default_options": { + "fields": [], + "indent": "\\t", + "link_kind": "wiki", + "show_attributes": [], + "field_group_labels": [], + "edge_sort_id": { + "order": 1, + "field": "basename" + }, + "show_node_options": { + "ext": false, + "alias": true, + "folder": false + } + } + }, + "freeze_implied_edges": { + "default_options": { + "destination": "frontmatter" + } + }, + "thread": { + "default_options": { + "destination": "frontmatter", + "target_path_template": "{{source.folder}}/{{attr.field}} {{source.basename}}" + } + } + }, + "suggestors": { + "edge_field": { + "enabled": false, + "trigger": "." + } + }, + "debug": { + "level": "INFO" + } +} \ No newline at end of file diff --git a/.obsidian.mobile/plugins/breadcrumbs/main.js b/.obsidian.mobile/plugins/breadcrumbs/main.js index f2586c1e..d2e148fb 100644 --- a/.obsidian.mobile/plugins/breadcrumbs/main.js +++ b/.obsidian.mobile/plugins/breadcrumbs/main.js @@ -3,12 +3,14 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ +"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; @@ -33,2860 +35,7594 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; -// node_modules/feather-icons/dist/feather.js -var require_feather = __commonJS({ - "node_modules/feather-icons/dist/feather.js"(exports, module2) { - (function webpackUniversalModuleDefinition(root2, factory) { - if (typeof exports === "object" && typeof module2 === "object") - module2.exports = factory(); - else if (typeof define === "function" && define.amd) - define([], factory); - else if (typeof exports === "object") - exports["feather"] = factory(); - else - root2["feather"] = factory(); - })(typeof self !== "undefined" ? self : exports, function() { - return ( - /******/ - function(modules) { - var installedModules = {}; - function __webpack_require__(moduleId) { - if (installedModules[moduleId]) { - return installedModules[moduleId].exports; - } - var module3 = installedModules[moduleId] = { - /******/ - i: moduleId, - /******/ - l: false, - /******/ - exports: {} - /******/ - }; - modules[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); - module3.l = true; - return module3.exports; - } - __webpack_require__.m = modules; - __webpack_require__.c = installedModules; - __webpack_require__.d = function(exports2, name, getter) { - if (!__webpack_require__.o(exports2, name)) { - Object.defineProperty(exports2, name, { - /******/ - configurable: false, - /******/ - enumerable: true, - /******/ - get: getter - /******/ - }); - } - }; - __webpack_require__.r = function(exports2) { - Object.defineProperty(exports2, "__esModule", { value: true }); - }; - __webpack_require__.n = function(module3) { - var getter = module3 && module3.__esModule ? ( - /******/ - function getDefault() { - return module3["default"]; - } - ) : ( - /******/ - function getModuleExports() { - return module3; - } - ); - __webpack_require__.d(getter, "a", getter); - return getter; - }; - __webpack_require__.o = function(object, property) { - return Object.prototype.hasOwnProperty.call(object, property); - }; - __webpack_require__.p = ""; - return __webpack_require__(__webpack_require__.s = 0); - }({ - /***/ - "./dist/icons.json": ( - /*!*************************!*\ - !*** ./dist/icons.json ***! - \*************************/ - /*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, divide-circle, divide-square, divide, dollar-sign, download-cloud, download, dribbble, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, table, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ - /***/ - function(module3) { - module3.exports = { "activity": '', "airplay": '', "alert-circle": '', "alert-octagon": '', "alert-triangle": '', "align-center": '', "align-justify": '', "align-left": '', "align-right": '', "anchor": '', "aperture": '', "archive": '', "arrow-down-circle": '', "arrow-down-left": '', "arrow-down-right": '', "arrow-down": '', "arrow-left-circle": '', "arrow-left": '', "arrow-right-circle": '', "arrow-right": '', "arrow-up-circle": '', "arrow-up-left": '', "arrow-up-right": '', "arrow-up": '', "at-sign": '', "award": '', "bar-chart-2": '', "bar-chart": '', "battery-charging": '', "battery": '', "bell-off": '', "bell": '', "bluetooth": '', "bold": '', "book-open": '', "book": '', "bookmark": '', "box": '', "briefcase": '', "calendar": '', "camera-off": '', "camera": '', "cast": '', "check-circle": '', "check-square": '', "check": '', "chevron-down": '', "chevron-left": '', "chevron-right": '', "chevron-up": '', "chevrons-down": '', "chevrons-left": '', "chevrons-right": '', "chevrons-up": '', "chrome": '', "circle": '', "clipboard": '', "clock": '', "cloud-drizzle": '', "cloud-lightning": '', "cloud-off": '', "cloud-rain": '', "cloud-snow": '', "cloud": '', "code": '', "codepen": '', "codesandbox": '', "coffee": '', "columns": '', "command": '', "compass": '', "copy": '', "corner-down-left": '', "corner-down-right": '', "corner-left-down": '', "corner-left-up": '', "corner-right-down": '', "corner-right-up": '', "corner-up-left": '', "corner-up-right": '', "cpu": '', "credit-card": '', "crop": '', "crosshair": '', "database": '', "delete": '', "disc": '', "divide-circle": '', "divide-square": '', "divide": '', "dollar-sign": '', "download-cloud": '', "download": '', "dribbble": '', "droplet": '', "edit-2": '', "edit-3": '', "edit": '', "external-link": '', "eye-off": '', "eye": '', "facebook": '', "fast-forward": '', "feather": '', "figma": '', "file-minus": '', "file-plus": '', "file-text": '', "file": '', "film": '', "filter": '', "flag": '', "folder-minus": '', "folder-plus": '', "folder": '', "framer": '', "frown": '', "gift": '', "git-branch": '', "git-commit": '', "git-merge": '', "git-pull-request": '', "github": '', "gitlab": '', "globe": '', "grid": '', "hard-drive": '', "hash": '', "headphones": '', "heart": '', "help-circle": '', "hexagon": '', "home": '', "image": '', "inbox": '', "info": '', "instagram": '', "italic": '', "key": '', "layers": '', "layout": '', "life-buoy": '', "link-2": '', "link": '', "linkedin": '', "list": '', "loader": '', "lock": '', "log-in": '', "log-out": '', "mail": '', "map-pin": '', "map": '', "maximize-2": '', "maximize": '', "meh": '', "menu": '', "message-circle": '', "message-square": '', "mic-off": '', "mic": '', "minimize-2": '', "minimize": '', "minus-circle": '', "minus-square": '', "minus": '', "monitor": '', "moon": '', "more-horizontal": '', "more-vertical": '', "mouse-pointer": '', "move": '', "music": '', "navigation-2": '', "navigation": '', "octagon": '', "package": '', "paperclip": '', "pause-circle": '', "pause": '', "pen-tool": '', "percent": '', "phone-call": '', "phone-forwarded": '', "phone-incoming": '', "phone-missed": '', "phone-off": '', "phone-outgoing": '', "phone": '', "pie-chart": '', "play-circle": '', "play": '', "plus-circle": '', "plus-square": '', "plus": '', "pocket": '', "power": '', "printer": '', "radio": '', "refresh-ccw": '', "refresh-cw": '', "repeat": '', "rewind": '', "rotate-ccw": '', "rotate-cw": '', "rss": '', "save": '', "scissors": '', "search": '', "send": '', "server": '', "settings": '', "share-2": '', "share": '', "shield-off": '', "shield": '', "shopping-bag": '', "shopping-cart": '', "shuffle": '', "sidebar": '', "skip-back": '', "skip-forward": '', "slack": '', "slash": '', "sliders": '', "smartphone": '', "smile": '', "speaker": '', "square": '', "star": '', "stop-circle": '', "sun": '', "sunrise": '', "sunset": '', "table": '', "tablet": '', "tag": '', "target": '', "terminal": '', "thermometer": '', "thumbs-down": '', "thumbs-up": '', "toggle-left": '', "toggle-right": '', "tool": '', "trash-2": '', "trash": '', "trello": '', "trending-down": '', "trending-up": '', "triangle": '', "truck": '', "tv": '', "twitch": '', "twitter": '', "type": '', "umbrella": '', "underline": '', "unlock": '', "upload-cloud": '', "upload": '', "user-check": '', "user-minus": '', "user-plus": '', "user-x": '', "user": '', "users": '', "video-off": '', "video": '', "voicemail": '', "volume-1": '', "volume-2": '', "volume-x": '', "volume": '', "watch": '', "wifi-off": '', "wifi": '', "wind": '', "x-circle": '', "x-octagon": '', "x-square": '', "x": '', "youtube": '', "zap-off": '', "zap": '', "zoom-in": '', "zoom-out": '' }; - } - ), - /***/ - "./node_modules/classnames/dedupe.js": ( - /*!*******************************************!*\ - !*** ./node_modules/classnames/dedupe.js ***! - \*******************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; - (function() { - "use strict"; - var classNames = function() { - function StorageObject() { - } - StorageObject.prototype = /* @__PURE__ */ Object.create(null); - function _parseArray(resultSet, array) { - var length = array.length; - for (var i = 0; i < length; ++i) { - _parse(resultSet, array[i]); - } - } - var hasOwn = {}.hasOwnProperty; - function _parseNumber(resultSet, num) { - resultSet[num] = true; - } - function _parseObject(resultSet, object) { - for (var k in object) { - if (hasOwn.call(object, k)) { - resultSet[k] = !!object[k]; - } - } - } - var SPACE = /\s+/; - function _parseString(resultSet, str) { - var array = str.split(SPACE); - var length = array.length; - for (var i = 0; i < length; ++i) { - resultSet[array[i]] = true; - } - } - function _parse(resultSet, arg) { - if (!arg) - return; - var argType = typeof arg; - if (argType === "string") { - _parseString(resultSet, arg); - } else if (Array.isArray(arg)) { - _parseArray(resultSet, arg); - } else if (argType === "object") { - _parseObject(resultSet, arg); - } else if (argType === "number") { - _parseNumber(resultSet, arg); - } - } - function _classNames() { - var len = arguments.length; - var args = Array(len); - for (var i = 0; i < len; i++) { - args[i] = arguments[i]; - } - var classSet = new StorageObject(); - _parseArray(classSet, args); - var list = []; - for (var k in classSet) { - if (classSet[k]) { - list.push(k); - } - } - return list.join(" "); - } - return _classNames; - }(); - if (typeof module3 !== "undefined" && module3.exports) { - module3.exports = classNames; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() { - return classNames; - }.apply(exports2, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module3.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else { - } - })(); - } - ), - /***/ - "./node_modules/core-js/es/array/from.js": ( - /*!***********************************************!*\ - !*** ./node_modules/core-js/es/array/from.js ***! - \***********************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - __webpack_require__( - /*! ../../modules/es.string.iterator */ - "./node_modules/core-js/modules/es.string.iterator.js" - ); - __webpack_require__( - /*! ../../modules/es.array.from */ - "./node_modules/core-js/modules/es.array.from.js" - ); - var path2 = __webpack_require__( - /*! ../../internals/path */ - "./node_modules/core-js/internals/path.js" - ); - module3.exports = path2.Array.from; - } - ), - /***/ - "./node_modules/core-js/internals/a-function.js": ( - /*!******************************************************!*\ - !*** ./node_modules/core-js/internals/a-function.js ***! - \******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - module3.exports = function(it) { - if (typeof it != "function") { - throw TypeError(String(it) + " is not a function"); - } - return it; - }; - } - ), - /***/ - "./node_modules/core-js/internals/an-object.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/an-object.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/core-js/internals/is-object.js" - ); - module3.exports = function(it) { - if (!isObject(it)) { - throw TypeError(String(it) + " is not an object"); - } - return it; - }; - } - ), - /***/ - "./node_modules/core-js/internals/array-from.js": ( - /*!******************************************************!*\ - !*** ./node_modules/core-js/internals/array-from.js ***! - \******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - var bind = __webpack_require__( - /*! ../internals/bind-context */ - "./node_modules/core-js/internals/bind-context.js" - ); - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/core-js/internals/to-object.js" - ); - var callWithSafeIterationClosing = __webpack_require__( - /*! ../internals/call-with-safe-iteration-closing */ - "./node_modules/core-js/internals/call-with-safe-iteration-closing.js" - ); - var isArrayIteratorMethod = __webpack_require__( - /*! ../internals/is-array-iterator-method */ - "./node_modules/core-js/internals/is-array-iterator-method.js" - ); - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/core-js/internals/to-length.js" - ); - var createProperty = __webpack_require__( - /*! ../internals/create-property */ - "./node_modules/core-js/internals/create-property.js" - ); - var getIteratorMethod = __webpack_require__( - /*! ../internals/get-iterator-method */ - "./node_modules/core-js/internals/get-iterator-method.js" - ); - module3.exports = function from(arrayLike) { - var O = toObject(arrayLike); - var C2 = typeof this == "function" ? this : Array; - var argumentsLength = arguments.length; - var mapfn = argumentsLength > 1 ? arguments[1] : void 0; - var mapping = mapfn !== void 0; - var index2 = 0; - var iteratorMethod = getIteratorMethod(O); - var length, result, step, iterator; - if (mapping) - mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2); - if (iteratorMethod != void 0 && !(C2 == Array && isArrayIteratorMethod(iteratorMethod))) { - iterator = iteratorMethod.call(O); - result = new C2(); - for (; !(step = iterator.next()).done; index2++) { - createProperty( - result, - index2, - mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index2], true) : step.value - ); - } - } else { - length = toLength(O.length); - result = new C2(length); - for (; length > index2; index2++) { - createProperty(result, index2, mapping ? mapfn(O[index2], index2) : O[index2]); - } - } - result.length = index2; - return result; - }; - } - ), - /***/ - "./node_modules/core-js/internals/array-includes.js": ( - /*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/array-includes.js ***! - \**********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/core-js/internals/to-indexed-object.js" - ); - var toLength = __webpack_require__( - /*! ../internals/to-length */ - "./node_modules/core-js/internals/to-length.js" - ); - var toAbsoluteIndex = __webpack_require__( - /*! ../internals/to-absolute-index */ - "./node_modules/core-js/internals/to-absolute-index.js" - ); - module3.exports = function(IS_INCLUDES) { - return function($this, el, fromIndex) { - var O = toIndexedObject($this); - var length = toLength(O.length); - var index2 = toAbsoluteIndex(fromIndex, length); - var value; - if (IS_INCLUDES && el != el) - while (length > index2) { - value = O[index2++]; - if (value != value) - return true; - } - else - for (; length > index2; index2++) - if (IS_INCLUDES || index2 in O) { - if (O[index2] === el) - return IS_INCLUDES || index2 || 0; - } - return !IS_INCLUDES && -1; - }; - }; - } - ), - /***/ - "./node_modules/core-js/internals/bind-context.js": ( - /*!********************************************************!*\ - !*** ./node_modules/core-js/internals/bind-context.js ***! - \********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var aFunction = __webpack_require__( - /*! ../internals/a-function */ - "./node_modules/core-js/internals/a-function.js" - ); - module3.exports = function(fn, that, length) { - aFunction(fn); - if (that === void 0) - return fn; - switch (length) { - case 0: - return function() { - return fn.call(that); - }; - case 1: - return function(a2) { - return fn.call(that, a2); - }; - case 2: - return function(a2, b) { - return fn.call(that, a2, b); - }; - case 3: - return function(a2, b, c3) { - return fn.call(that, a2, b, c3); - }; - } - return function() { - return fn.apply(that, arguments); - }; - }; - } - ), - /***/ - "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": ( - /*!****************************************************************************!*\ - !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! - \****************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - module3.exports = function(iterator, fn, value, ENTRIES) { - try { - return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); - } catch (error6) { - var returnMethod = iterator["return"]; - if (returnMethod !== void 0) - anObject(returnMethod.call(iterator)); - throw error6; - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/check-correctness-of-iteration.js": ( - /*!**************************************************************************!*\ - !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***! - \**************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var ITERATOR = wellKnownSymbol("iterator"); - var SAFE_CLOSING = false; - try { - var called = 0; - var iteratorWithReturn = { - next: function() { - return { done: !!called++ }; - }, - "return": function() { - SAFE_CLOSING = true; - } - }; - iteratorWithReturn[ITERATOR] = function() { - return this; - }; - Array.from(iteratorWithReturn, function() { - throw 2; - }); - } catch (error6) { - } - module3.exports = function(exec, SKIP_CLOSING) { - if (!SKIP_CLOSING && !SAFE_CLOSING) - return false; - var ITERATION_SUPPORT = false; - try { - var object = {}; - object[ITERATOR] = function() { - return { - next: function() { - return { done: ITERATION_SUPPORT = true }; - } - }; - }; - exec(object); - } catch (error6) { - } - return ITERATION_SUPPORT; - }; - } - ), - /***/ - "./node_modules/core-js/internals/classof-raw.js": ( - /*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/classof-raw.js ***! - \*******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - var toString = {}.toString; - module3.exports = function(it) { - return toString.call(it).slice(8, -1); - }; - } - ), - /***/ - "./node_modules/core-js/internals/classof.js": ( - /*!***************************************************!*\ - !*** ./node_modules/core-js/internals/classof.js ***! - \***************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var classofRaw = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/core-js/internals/classof-raw.js" - ); - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var TO_STRING_TAG = wellKnownSymbol("toStringTag"); - var CORRECT_ARGUMENTS = classofRaw(function() { - return arguments; - }()) == "Arguments"; - var tryGet = function(it, key) { - try { - return it[key]; - } catch (error6) { - } - }; - module3.exports = function(it) { - var O, tag, result; - return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == "string" ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && typeof O.callee == "function" ? "Arguments" : result; - }; - } - ), - /***/ - "./node_modules/core-js/internals/copy-constructor-properties.js": ( - /*!***********************************************************************!*\ - !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! - \***********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var ownKeys = __webpack_require__( - /*! ../internals/own-keys */ - "./node_modules/core-js/internals/own-keys.js" - ); - var getOwnPropertyDescriptorModule = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/core-js/internals/object-get-own-property-descriptor.js" - ); - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/core-js/internals/object-define-property.js" - ); - module3.exports = function(target, source) { - var keys = ownKeys(source); - var defineProperty = definePropertyModule.f; - var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!has(target, key)) - defineProperty(target, key, getOwnPropertyDescriptor(source, key)); - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/correct-prototype-getter.js": ( - /*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***! - \********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - module3.exports = !fails(function() { - function F() { - } - F.prototype.constructor = null; - return Object.getPrototypeOf(new F()) !== F.prototype; - }); - } - ), - /***/ - "./node_modules/core-js/internals/create-iterator-constructor.js": ( - /*!***********************************************************************!*\ - !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***! - \***********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - var IteratorPrototype = __webpack_require__( - /*! ../internals/iterators-core */ - "./node_modules/core-js/internals/iterators-core.js" - ).IteratorPrototype; - var create2 = __webpack_require__( - /*! ../internals/object-create */ - "./node_modules/core-js/internals/object-create.js" - ); - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/core-js/internals/create-property-descriptor.js" - ); - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/core-js/internals/set-to-string-tag.js" - ); - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/core-js/internals/iterators.js" - ); - var returnThis = function() { - return this; - }; - module3.exports = function(IteratorConstructor, NAME, next) { - var TO_STRING_TAG = NAME + " Iterator"; - IteratorConstructor.prototype = create2(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); - setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); - Iterators[TO_STRING_TAG] = returnThis; - return IteratorConstructor; - }; - } - ), - /***/ - "./node_modules/core-js/internals/create-property-descriptor.js": ( - /*!**********************************************************************!*\ - !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! - \**********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - module3.exports = function(bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value - }; - }; - } - ), - /***/ - "./node_modules/core-js/internals/create-property.js": ( - /*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/create-property.js ***! - \***********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/core-js/internals/to-primitive.js" - ); - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/core-js/internals/object-define-property.js" - ); - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/core-js/internals/create-property-descriptor.js" - ); - module3.exports = function(object, key, value) { - var propertyKey = toPrimitive(key); - if (propertyKey in object) - definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); - else - object[propertyKey] = value; - }; - } - ), - /***/ - "./node_modules/core-js/internals/define-iterator.js": ( - /*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/define-iterator.js ***! - \***********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/core-js/internals/export.js" - ); - var createIteratorConstructor = __webpack_require__( - /*! ../internals/create-iterator-constructor */ - "./node_modules/core-js/internals/create-iterator-constructor.js" - ); - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/core-js/internals/object-get-prototype-of.js" - ); - var setPrototypeOf = __webpack_require__( - /*! ../internals/object-set-prototype-of */ - "./node_modules/core-js/internals/object-set-prototype-of.js" - ); - var setToStringTag = __webpack_require__( - /*! ../internals/set-to-string-tag */ - "./node_modules/core-js/internals/set-to-string-tag.js" - ); - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/core-js/internals/redefine.js" - ); - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/core-js/internals/is-pure.js" - ); - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/core-js/internals/iterators.js" - ); - var IteratorsCore = __webpack_require__( - /*! ../internals/iterators-core */ - "./node_modules/core-js/internals/iterators-core.js" - ); - var IteratorPrototype = IteratorsCore.IteratorPrototype; - var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; - var ITERATOR = wellKnownSymbol("iterator"); - var KEYS = "keys"; - var VALUES = "values"; - var ENTRIES = "entries"; - var returnThis = function() { - return this; - }; - module3.exports = function(Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { - createIteratorConstructor(IteratorConstructor, NAME, next); - var getIterationMethod = function(KIND) { - if (KIND === DEFAULT && defaultIterator) - return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) - return IterablePrototype[KIND]; - switch (KIND) { - case KEYS: - return function keys() { - return new IteratorConstructor(this, KIND); - }; - case VALUES: - return function values() { - return new IteratorConstructor(this, KIND); - }; - case ENTRIES: - return function entries() { - return new IteratorConstructor(this, KIND); - }; - } - return function() { - return new IteratorConstructor(this); - }; - }; - var TO_STRING_TAG = NAME + " Iterator"; - var INCORRECT_VALUES_NAME = false; - var IterablePrototype = Iterable.prototype; - var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype["@@iterator"] || DEFAULT && IterablePrototype[DEFAULT]; - var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); - var anyNativeIterator = NAME == "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator; - var CurrentIteratorPrototype, methods, KEY; - if (anyNativeIterator) { - CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); - if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { - if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { - if (setPrototypeOf) { - setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); - } else if (typeof CurrentIteratorPrototype[ITERATOR] != "function") { - hide(CurrentIteratorPrototype, ITERATOR, returnThis); - } - } - setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); - if (IS_PURE) - Iterators[TO_STRING_TAG] = returnThis; - } - } - if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { - INCORRECT_VALUES_NAME = true; - defaultIterator = function values() { - return nativeIterator.call(this); - }; - } - if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { - hide(IterablePrototype, ITERATOR, defaultIterator); - } - Iterators[NAME] = defaultIterator; - if (DEFAULT) { - methods = { - values: getIterationMethod(VALUES), - keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), - entries: getIterationMethod(ENTRIES) - }; - if (FORCED) - for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - redefine(IterablePrototype, KEY, methods[KEY]); - } - } - else - $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); - } - return methods; - }; - } - ), - /***/ - "./node_modules/core-js/internals/descriptors.js": ( - /*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/descriptors.js ***! - \*******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - module3.exports = !fails(function() { - return Object.defineProperty({}, "a", { get: function() { - return 7; - } }).a != 7; - }); - } - ), - /***/ - "./node_modules/core-js/internals/document-create-element.js": ( - /*!*******************************************************************!*\ - !*** ./node_modules/core-js/internals/document-create-element.js ***! - \*******************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/core-js/internals/is-object.js" - ); - var document2 = global2.document; - var exist = isObject(document2) && isObject(document2.createElement); - module3.exports = function(it) { - return exist ? document2.createElement(it) : {}; - }; - } - ), - /***/ - "./node_modules/core-js/internals/enum-bug-keys.js": ( - /*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! - \*********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - module3.exports = [ - "constructor", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "toLocaleString", - "toString", - "valueOf" - ]; - } - ), - /***/ - "./node_modules/core-js/internals/export.js": ( - /*!**************************************************!*\ - !*** ./node_modules/core-js/internals/export.js ***! - \**************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var getOwnPropertyDescriptor = __webpack_require__( - /*! ../internals/object-get-own-property-descriptor */ - "./node_modules/core-js/internals/object-get-own-property-descriptor.js" - ).f; - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - var redefine = __webpack_require__( - /*! ../internals/redefine */ - "./node_modules/core-js/internals/redefine.js" - ); - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/core-js/internals/set-global.js" - ); - var copyConstructorProperties = __webpack_require__( - /*! ../internals/copy-constructor-properties */ - "./node_modules/core-js/internals/copy-constructor-properties.js" - ); - var isForced = __webpack_require__( - /*! ../internals/is-forced */ - "./node_modules/core-js/internals/is-forced.js" - ); - module3.exports = function(options, source) { - var TARGET = options.target; - var GLOBAL = options.global; - var STATIC = options.stat; - var FORCED, target, key, targetProperty, sourceProperty, descriptor; - if (GLOBAL) { - target = global2; - } else if (STATIC) { - target = global2[TARGET] || setGlobal(TARGET, {}); - } else { - target = (global2[TARGET] || {}).prototype; - } - if (target) - for (key in source) { - sourceProperty = source[key]; - if (options.noTargetGet) { - descriptor = getOwnPropertyDescriptor(target, key); - targetProperty = descriptor && descriptor.value; - } else - targetProperty = target[key]; - FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? "." : "#") + key, options.forced); - if (!FORCED && targetProperty !== void 0) { - if (typeof sourceProperty === typeof targetProperty) - continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - if (options.sham || targetProperty && targetProperty.sham) { - hide(sourceProperty, "sham", true); - } - redefine(target, key, sourceProperty, options); - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/fails.js": ( - /*!*************************************************!*\ - !*** ./node_modules/core-js/internals/fails.js ***! - \*************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - module3.exports = function(exec) { - try { - return !!exec(); - } catch (error6) { - return true; - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/function-to-string.js": ( - /*!**************************************************************!*\ - !*** ./node_modules/core-js/internals/function-to-string.js ***! - \**************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/core-js/internals/shared.js" - ); - module3.exports = shared("native-function-to-string", Function.toString); - } - ), - /***/ - "./node_modules/core-js/internals/get-iterator-method.js": ( - /*!***************************************************************!*\ - !*** ./node_modules/core-js/internals/get-iterator-method.js ***! - \***************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var classof = __webpack_require__( - /*! ../internals/classof */ - "./node_modules/core-js/internals/classof.js" - ); - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/core-js/internals/iterators.js" - ); - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var ITERATOR = wellKnownSymbol("iterator"); - module3.exports = function(it) { - if (it != void 0) - return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)]; - }; - } - ), - /***/ - "./node_modules/core-js/internals/global.js": ( - /*!**************************************************!*\ - !*** ./node_modules/core-js/internals/global.js ***! - \**************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - (function(global2) { - var O = "object"; - var check = function(it) { - return it && it.Math == Math && it; - }; - module3.exports = // eslint-disable-next-line no-undef - check(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof global2 == O && global2) || // eslint-disable-next-line no-new-func - Function("return this")(); - }).call(this, __webpack_require__( - /*! ./../../webpack/buildin/global.js */ - "./node_modules/webpack/buildin/global.js" - )); - } - ), - /***/ - "./node_modules/core-js/internals/has.js": ( - /*!***********************************************!*\ - !*** ./node_modules/core-js/internals/has.js ***! - \***********************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - var hasOwnProperty2 = {}.hasOwnProperty; - module3.exports = function(it, key) { - return hasOwnProperty2.call(it, key); - }; - } - ), - /***/ - "./node_modules/core-js/internals/hidden-keys.js": ( - /*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/hidden-keys.js ***! - \*******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - module3.exports = {}; - } - ), - /***/ - "./node_modules/core-js/internals/hide.js": ( - /*!************************************************!*\ - !*** ./node_modules/core-js/internals/hide.js ***! - \************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/core-js/internals/descriptors.js" - ); - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/core-js/internals/object-define-property.js" - ); - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/core-js/internals/create-property-descriptor.js" - ); - module3.exports = DESCRIPTORS ? function(object, key, value) { - return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); - } : function(object, key, value) { - object[key] = value; - return object; - }; - } - ), - /***/ - "./node_modules/core-js/internals/html.js": ( - /*!************************************************!*\ - !*** ./node_modules/core-js/internals/html.js ***! - \************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var document2 = global2.document; - module3.exports = document2 && document2.documentElement; - } - ), - /***/ - "./node_modules/core-js/internals/ie8-dom-define.js": ( - /*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! - \**********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/core-js/internals/descriptors.js" - ); - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - var createElement = __webpack_require__( - /*! ../internals/document-create-element */ - "./node_modules/core-js/internals/document-create-element.js" - ); - module3.exports = !DESCRIPTORS && !fails(function() { - return Object.defineProperty(createElement("div"), "a", { - get: function() { - return 7; - } - }).a != 7; - }); - } - ), - /***/ - "./node_modules/core-js/internals/indexed-object.js": ( - /*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/indexed-object.js ***! - \**********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - var classof = __webpack_require__( - /*! ../internals/classof-raw */ - "./node_modules/core-js/internals/classof-raw.js" - ); - var split = "".split; - module3.exports = fails(function() { - return !Object("z").propertyIsEnumerable(0); - }) ? function(it) { - return classof(it) == "String" ? split.call(it, "") : Object(it); - } : Object; - } - ), - /***/ - "./node_modules/core-js/internals/internal-state.js": ( - /*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/internal-state.js ***! - \**********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var NATIVE_WEAK_MAP = __webpack_require__( - /*! ../internals/native-weak-map */ - "./node_modules/core-js/internals/native-weak-map.js" - ); - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/core-js/internals/is-object.js" - ); - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - var objectHas = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/core-js/internals/shared-key.js" - ); - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/core-js/internals/hidden-keys.js" - ); - var WeakMap2 = global2.WeakMap; - var set3, get3, has; - var enforce = function(it) { - return has(it) ? get3(it) : set3(it, {}); - }; - var getterFor = function(TYPE) { - return function(it) { - var state; - if (!isObject(it) || (state = get3(it)).type !== TYPE) { - throw TypeError("Incompatible receiver, " + TYPE + " required"); - } - return state; - }; - }; - if (NATIVE_WEAK_MAP) { - var store = new WeakMap2(); - var wmget = store.get; - var wmhas = store.has; - var wmset = store.set; - set3 = function(it, metadata) { - wmset.call(store, it, metadata); - return metadata; - }; - get3 = function(it) { - return wmget.call(store, it) || {}; - }; - has = function(it) { - return wmhas.call(store, it); - }; - } else { - var STATE = sharedKey("state"); - hiddenKeys[STATE] = true; - set3 = function(it, metadata) { - hide(it, STATE, metadata); - return metadata; - }; - get3 = function(it) { - return objectHas(it, STATE) ? it[STATE] : {}; - }; - has = function(it) { - return objectHas(it, STATE); - }; - } - module3.exports = { - set: set3, - get: get3, - has, - enforce, - getterFor - }; - } - ), - /***/ - "./node_modules/core-js/internals/is-array-iterator-method.js": ( - /*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***! - \********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var Iterators = __webpack_require__( - /*! ../internals/iterators */ - "./node_modules/core-js/internals/iterators.js" - ); - var ITERATOR = wellKnownSymbol("iterator"); - var ArrayPrototype = Array.prototype; - module3.exports = function(it) { - return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); - }; - } - ), - /***/ - "./node_modules/core-js/internals/is-forced.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/is-forced.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - var replacement = /#|\.prototype\./; - var isForced = function(feature, detection) { - var value = data[normalize2(feature)]; - return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == "function" ? fails(detection) : !!detection; - }; - var normalize2 = isForced.normalize = function(string) { - return String(string).replace(replacement, ".").toLowerCase(); - }; - var data = isForced.data = {}; - var NATIVE = isForced.NATIVE = "N"; - var POLYFILL = isForced.POLYFILL = "P"; - module3.exports = isForced; - } - ), - /***/ - "./node_modules/core-js/internals/is-object.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/is-object.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - module3.exports = function(it) { - return typeof it === "object" ? it !== null : typeof it === "function"; - }; - } - ), - /***/ - "./node_modules/core-js/internals/is-pure.js": ( - /*!***************************************************!*\ - !*** ./node_modules/core-js/internals/is-pure.js ***! - \***************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - module3.exports = false; - } - ), - /***/ - "./node_modules/core-js/internals/iterators-core.js": ( - /*!**********************************************************!*\ - !*** ./node_modules/core-js/internals/iterators-core.js ***! - \**********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - var getPrototypeOf = __webpack_require__( - /*! ../internals/object-get-prototype-of */ - "./node_modules/core-js/internals/object-get-prototype-of.js" - ); - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/core-js/internals/is-pure.js" - ); - var ITERATOR = wellKnownSymbol("iterator"); - var BUGGY_SAFARI_ITERATORS = false; - var returnThis = function() { - return this; - }; - var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; - if ([].keys) { - arrayIterator = [].keys(); - if (!("next" in arrayIterator)) - BUGGY_SAFARI_ITERATORS = true; - else { - PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) - IteratorPrototype = PrototypeOfArrayIteratorPrototype; - } - } - if (IteratorPrototype == void 0) - IteratorPrototype = {}; - if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) - hide(IteratorPrototype, ITERATOR, returnThis); - module3.exports = { - IteratorPrototype, - BUGGY_SAFARI_ITERATORS - }; - } - ), - /***/ - "./node_modules/core-js/internals/iterators.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/iterators.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - module3.exports = {}; - } - ), - /***/ - "./node_modules/core-js/internals/native-symbol.js": ( - /*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/native-symbol.js ***! - \*********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var fails = __webpack_require__( - /*! ../internals/fails */ - "./node_modules/core-js/internals/fails.js" - ); - module3.exports = !!Object.getOwnPropertySymbols && !fails(function() { - return !String(Symbol()); - }); - } - ), - /***/ - "./node_modules/core-js/internals/native-weak-map.js": ( - /*!***********************************************************!*\ - !*** ./node_modules/core-js/internals/native-weak-map.js ***! - \***********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var nativeFunctionToString = __webpack_require__( - /*! ../internals/function-to-string */ - "./node_modules/core-js/internals/function-to-string.js" - ); - var WeakMap2 = global2.WeakMap; - module3.exports = typeof WeakMap2 === "function" && /native code/.test(nativeFunctionToString.call(WeakMap2)); - } - ), - /***/ - "./node_modules/core-js/internals/object-create.js": ( - /*!*********************************************************!*\ - !*** ./node_modules/core-js/internals/object-create.js ***! - \*********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - var defineProperties = __webpack_require__( - /*! ../internals/object-define-properties */ - "./node_modules/core-js/internals/object-define-properties.js" - ); - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/core-js/internals/enum-bug-keys.js" - ); - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/core-js/internals/hidden-keys.js" - ); - var html = __webpack_require__( - /*! ../internals/html */ - "./node_modules/core-js/internals/html.js" - ); - var documentCreateElement = __webpack_require__( - /*! ../internals/document-create-element */ - "./node_modules/core-js/internals/document-create-element.js" - ); - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/core-js/internals/shared-key.js" - ); - var IE_PROTO = sharedKey("IE_PROTO"); - var PROTOTYPE = "prototype"; - var Empty = function() { - }; - var createDict = function() { - var iframe = documentCreateElement("iframe"); - var length = enumBugKeys.length; - var lt = "<"; - var script = "script"; - var gt = ">"; - var js = "java" + script + ":"; - var iframeDocument; - iframe.style.display = "none"; - html.appendChild(iframe); - iframe.src = String(js); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + script + gt + "document.F=Object" + lt + "/" + script + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (length--) - delete createDict[PROTOTYPE][enumBugKeys[length]]; - return createDict(); - }; - module3.exports = Object.create || function create2(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - result[IE_PROTO] = O; - } else - result = createDict(); - return Properties === void 0 ? result : defineProperties(result, Properties); - }; - hiddenKeys[IE_PROTO] = true; - } - ), - /***/ - "./node_modules/core-js/internals/object-define-properties.js": ( - /*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/object-define-properties.js ***! - \********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/core-js/internals/descriptors.js" - ); - var definePropertyModule = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/core-js/internals/object-define-property.js" - ); - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - var objectKeys = __webpack_require__( - /*! ../internals/object-keys */ - "./node_modules/core-js/internals/object-keys.js" - ); - module3.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = objectKeys(Properties); - var length = keys.length; - var i = 0; - var key; - while (length > i) - definePropertyModule.f(O, key = keys[i++], Properties[key]); - return O; - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-define-property.js": ( - /*!******************************************************************!*\ - !*** ./node_modules/core-js/internals/object-define-property.js ***! - \******************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/core-js/internals/descriptors.js" - ); - var IE8_DOM_DEFINE = __webpack_require__( - /*! ../internals/ie8-dom-define */ - "./node_modules/core-js/internals/ie8-dom-define.js" - ); - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/core-js/internals/to-primitive.js" - ); - var nativeDefineProperty = Object.defineProperty; - exports2.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) - try { - return nativeDefineProperty(O, P, Attributes); - } catch (error6) { - } - if ("get" in Attributes || "set" in Attributes) - throw TypeError("Accessors not supported"); - if ("value" in Attributes) - O[P] = Attributes.value; - return O; - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-get-own-property-descriptor.js": ( - /*!******************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! - \******************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var DESCRIPTORS = __webpack_require__( - /*! ../internals/descriptors */ - "./node_modules/core-js/internals/descriptors.js" - ); - var propertyIsEnumerableModule = __webpack_require__( - /*! ../internals/object-property-is-enumerable */ - "./node_modules/core-js/internals/object-property-is-enumerable.js" - ); - var createPropertyDescriptor = __webpack_require__( - /*! ../internals/create-property-descriptor */ - "./node_modules/core-js/internals/create-property-descriptor.js" - ); - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/core-js/internals/to-indexed-object.js" - ); - var toPrimitive = __webpack_require__( - /*! ../internals/to-primitive */ - "./node_modules/core-js/internals/to-primitive.js" - ); - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var IE8_DOM_DEFINE = __webpack_require__( - /*! ../internals/ie8-dom-define */ - "./node_modules/core-js/internals/ie8-dom-define.js" - ); - var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - exports2.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { - O = toIndexedObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) - try { - return nativeGetOwnPropertyDescriptor(O, P); - } catch (error6) { - } - if (has(O, P)) - return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-get-own-property-names.js": ( - /*!*************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! - \*************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var internalObjectKeys = __webpack_require__( - /*! ../internals/object-keys-internal */ - "./node_modules/core-js/internals/object-keys-internal.js" - ); - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/core-js/internals/enum-bug-keys.js" - ); - var hiddenKeys = enumBugKeys.concat("length", "prototype"); - exports2.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return internalObjectKeys(O, hiddenKeys); - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-get-own-property-symbols.js": ( - /*!***************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! - \***************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - exports2.f = Object.getOwnPropertySymbols; - } - ), - /***/ - "./node_modules/core-js/internals/object-get-prototype-of.js": ( - /*!*******************************************************************!*\ - !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***! - \*******************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var toObject = __webpack_require__( - /*! ../internals/to-object */ - "./node_modules/core-js/internals/to-object.js" - ); - var sharedKey = __webpack_require__( - /*! ../internals/shared-key */ - "./node_modules/core-js/internals/shared-key.js" - ); - var CORRECT_PROTOTYPE_GETTER = __webpack_require__( - /*! ../internals/correct-prototype-getter */ - "./node_modules/core-js/internals/correct-prototype-getter.js" - ); - var IE_PROTO = sharedKey("IE_PROTO"); - var ObjectPrototype = Object.prototype; - module3.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function(O) { - O = toObject(O); - if (has(O, IE_PROTO)) - return O[IE_PROTO]; - if (typeof O.constructor == "function" && O instanceof O.constructor) { - return O.constructor.prototype; - } - return O instanceof Object ? ObjectPrototype : null; - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-keys-internal.js": ( - /*!****************************************************************!*\ - !*** ./node_modules/core-js/internals/object-keys-internal.js ***! - \****************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var toIndexedObject = __webpack_require__( - /*! ../internals/to-indexed-object */ - "./node_modules/core-js/internals/to-indexed-object.js" - ); - var arrayIncludes = __webpack_require__( - /*! ../internals/array-includes */ - "./node_modules/core-js/internals/array-includes.js" - ); - var hiddenKeys = __webpack_require__( - /*! ../internals/hidden-keys */ - "./node_modules/core-js/internals/hidden-keys.js" - ); - var arrayIndexOf = arrayIncludes(false); - module3.exports = function(object, names) { - var O = toIndexedObject(object); - var i = 0; - var result = []; - var key; - for (key in O) - !has(hiddenKeys, key) && has(O, key) && result.push(key); - while (names.length > i) - if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - return result; - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-keys.js": ( - /*!*******************************************************!*\ - !*** ./node_modules/core-js/internals/object-keys.js ***! - \*******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var internalObjectKeys = __webpack_require__( - /*! ../internals/object-keys-internal */ - "./node_modules/core-js/internals/object-keys-internal.js" - ); - var enumBugKeys = __webpack_require__( - /*! ../internals/enum-bug-keys */ - "./node_modules/core-js/internals/enum-bug-keys.js" - ); - module3.exports = Object.keys || function keys(O) { - return internalObjectKeys(O, enumBugKeys); - }; - } - ), - /***/ - "./node_modules/core-js/internals/object-property-is-enumerable.js": ( - /*!*************************************************************************!*\ - !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! - \*************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - var nativePropertyIsEnumerable = {}.propertyIsEnumerable; - var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; - var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); - exports2.f = NASHORN_BUG ? function propertyIsEnumerable(V) { - var descriptor = getOwnPropertyDescriptor(this, V); - return !!descriptor && descriptor.enumerable; - } : nativePropertyIsEnumerable; - } - ), - /***/ - "./node_modules/core-js/internals/object-set-prototype-of.js": ( - /*!*******************************************************************!*\ - !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***! - \*******************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var validateSetPrototypeOfArguments = __webpack_require__( - /*! ../internals/validate-set-prototype-of-arguments */ - "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js" - ); - module3.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() { - var correctSetter = false; - var test = {}; - var setter; - try { - setter = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set; - setter.call(test, []); - correctSetter = test instanceof Array; - } catch (error6) { - } - return function setPrototypeOf(O, proto) { - validateSetPrototypeOfArguments(O, proto); - if (correctSetter) - setter.call(O, proto); - else - O.__proto__ = proto; - return O; - }; - }() : void 0); - } - ), - /***/ - "./node_modules/core-js/internals/own-keys.js": ( - /*!****************************************************!*\ - !*** ./node_modules/core-js/internals/own-keys.js ***! - \****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var getOwnPropertyNamesModule = __webpack_require__( - /*! ../internals/object-get-own-property-names */ - "./node_modules/core-js/internals/object-get-own-property-names.js" - ); - var getOwnPropertySymbolsModule = __webpack_require__( - /*! ../internals/object-get-own-property-symbols */ - "./node_modules/core-js/internals/object-get-own-property-symbols.js" - ); - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - var Reflect2 = global2.Reflect; - module3.exports = Reflect2 && Reflect2.ownKeys || function ownKeys(it) { - var keys = getOwnPropertyNamesModule.f(anObject(it)); - var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; - return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; - }; - } - ), - /***/ - "./node_modules/core-js/internals/path.js": ( - /*!************************************************!*\ - !*** ./node_modules/core-js/internals/path.js ***! - \************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - module3.exports = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - } - ), - /***/ - "./node_modules/core-js/internals/redefine.js": ( - /*!****************************************************!*\ - !*** ./node_modules/core-js/internals/redefine.js ***! - \****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/core-js/internals/shared.js" - ); - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/core-js/internals/set-global.js" - ); - var nativeFunctionToString = __webpack_require__( - /*! ../internals/function-to-string */ - "./node_modules/core-js/internals/function-to-string.js" - ); - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/core-js/internals/internal-state.js" - ); - var getInternalState = InternalStateModule.get; - var enforceInternalState = InternalStateModule.enforce; - var TEMPLATE = String(nativeFunctionToString).split("toString"); - shared("inspectSource", function(it) { - return nativeFunctionToString.call(it); - }); - (module3.exports = function(O, key, value, options) { - var unsafe = options ? !!options.unsafe : false; - var simple2 = options ? !!options.enumerable : false; - var noTargetGet = options ? !!options.noTargetGet : false; - if (typeof value == "function") { - if (typeof key == "string" && !has(value, "name")) - hide(value, "name", key); - enforceInternalState(value).source = TEMPLATE.join(typeof key == "string" ? key : ""); - } - if (O === global2) { - if (simple2) - O[key] = value; - else - setGlobal(key, value); - return; - } else if (!unsafe) { - delete O[key]; - } else if (!noTargetGet && O[key]) { - simple2 = true; - } - if (simple2) - O[key] = value; - else - hide(O, key, value); - })(Function.prototype, "toString", function toString() { - return typeof this == "function" && getInternalState(this).source || nativeFunctionToString.call(this); - }); - } - ), - /***/ - "./node_modules/core-js/internals/require-object-coercible.js": ( - /*!********************************************************************!*\ - !*** ./node_modules/core-js/internals/require-object-coercible.js ***! - \********************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - module3.exports = function(it) { - if (it == void 0) - throw TypeError("Can't call method on " + it); - return it; - }; - } - ), - /***/ - "./node_modules/core-js/internals/set-global.js": ( - /*!******************************************************!*\ - !*** ./node_modules/core-js/internals/set-global.js ***! - \******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var hide = __webpack_require__( - /*! ../internals/hide */ - "./node_modules/core-js/internals/hide.js" - ); - module3.exports = function(key, value) { - try { - hide(global2, key, value); - } catch (error6) { - global2[key] = value; - } - return value; - }; - } - ), - /***/ - "./node_modules/core-js/internals/set-to-string-tag.js": ( - /*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/set-to-string-tag.js ***! - \*************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var defineProperty = __webpack_require__( - /*! ../internals/object-define-property */ - "./node_modules/core-js/internals/object-define-property.js" - ).f; - var has = __webpack_require__( - /*! ../internals/has */ - "./node_modules/core-js/internals/has.js" - ); - var wellKnownSymbol = __webpack_require__( - /*! ../internals/well-known-symbol */ - "./node_modules/core-js/internals/well-known-symbol.js" - ); - var TO_STRING_TAG = wellKnownSymbol("toStringTag"); - module3.exports = function(it, TAG, STATIC) { - if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { - defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/shared-key.js": ( - /*!******************************************************!*\ - !*** ./node_modules/core-js/internals/shared-key.js ***! - \******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/core-js/internals/shared.js" - ); - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/core-js/internals/uid.js" - ); - var keys = shared("keys"); - module3.exports = function(key) { - return keys[key] || (keys[key] = uid(key)); - }; - } - ), - /***/ - "./node_modules/core-js/internals/shared.js": ( - /*!**************************************************!*\ - !*** ./node_modules/core-js/internals/shared.js ***! - \**************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var setGlobal = __webpack_require__( - /*! ../internals/set-global */ - "./node_modules/core-js/internals/set-global.js" - ); - var IS_PURE = __webpack_require__( - /*! ../internals/is-pure */ - "./node_modules/core-js/internals/is-pure.js" - ); - var SHARED = "__core-js_shared__"; - var store = global2[SHARED] || setGlobal(SHARED, {}); - (module3.exports = function(key, value) { - return store[key] || (store[key] = value !== void 0 ? value : {}); - })("versions", []).push({ - version: "3.1.3", - mode: IS_PURE ? "pure" : "global", - copyright: "\xA9 2019 Denis Pushkarev (zloirock.ru)" - }); - } - ), - /***/ - "./node_modules/core-js/internals/string-at.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/string-at.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/core-js/internals/to-integer.js" - ); - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/core-js/internals/require-object-coercible.js" - ); - module3.exports = function(that, pos, CONVERT_TO_STRING) { - var S = String(requireObjectCoercible(that)); - var position = toInteger(pos); - var size = S.length; - var first, second; - if (position < 0 || position >= size) - return CONVERT_TO_STRING ? "" : void 0; - first = S.charCodeAt(position); - return first < 55296 || first > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 55296 << 10) + (second - 56320) + 65536; - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-absolute-index.js": ( - /*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/to-absolute-index.js ***! - \*************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/core-js/internals/to-integer.js" - ); - var max4 = Math.max; - var min3 = Math.min; - module3.exports = function(index2, length) { - var integer = toInteger(index2); - return integer < 0 ? max4(integer + length, 0) : min3(integer, length); - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-indexed-object.js": ( - /*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/to-indexed-object.js ***! - \*************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var IndexedObject = __webpack_require__( - /*! ../internals/indexed-object */ - "./node_modules/core-js/internals/indexed-object.js" - ); - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/core-js/internals/require-object-coercible.js" - ); - module3.exports = function(it) { - return IndexedObject(requireObjectCoercible(it)); - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-integer.js": ( - /*!******************************************************!*\ - !*** ./node_modules/core-js/internals/to-integer.js ***! - \******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - var ceil = Math.ceil; - var floor = Math.floor; - module3.exports = function(argument) { - return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-length.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/to-length.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var toInteger = __webpack_require__( - /*! ../internals/to-integer */ - "./node_modules/core-js/internals/to-integer.js" - ); - var min3 = Math.min; - module3.exports = function(argument) { - return argument > 0 ? min3(toInteger(argument), 9007199254740991) : 0; - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-object.js": ( - /*!*****************************************************!*\ - !*** ./node_modules/core-js/internals/to-object.js ***! - \*****************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var requireObjectCoercible = __webpack_require__( - /*! ../internals/require-object-coercible */ - "./node_modules/core-js/internals/require-object-coercible.js" - ); - module3.exports = function(argument) { - return Object(requireObjectCoercible(argument)); - }; - } - ), - /***/ - "./node_modules/core-js/internals/to-primitive.js": ( - /*!********************************************************!*\ - !*** ./node_modules/core-js/internals/to-primitive.js ***! - \********************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/core-js/internals/is-object.js" - ); - module3.exports = function(it, S) { - if (!isObject(it)) - return it; - var fn, val; - if (S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it))) - return val; - if (typeof (fn = it.valueOf) == "function" && !isObject(val = fn.call(it))) - return val; - if (!S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it))) - return val; - throw TypeError("Can't convert object to primitive value"); - }; - } - ), - /***/ - "./node_modules/core-js/internals/uid.js": ( - /*!***********************************************!*\ - !*** ./node_modules/core-js/internals/uid.js ***! - \***********************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - var id2 = 0; - var postfix = Math.random(); - module3.exports = function(key) { - return "Symbol(".concat(key === void 0 ? "" : key, ")_", (++id2 + postfix).toString(36)); - }; - } - ), - /***/ - "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js": ( - /*!*******************************************************************************!*\ - !*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***! - \*******************************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var isObject = __webpack_require__( - /*! ../internals/is-object */ - "./node_modules/core-js/internals/is-object.js" - ); - var anObject = __webpack_require__( - /*! ../internals/an-object */ - "./node_modules/core-js/internals/an-object.js" - ); - module3.exports = function(O, proto) { - anObject(O); - if (!isObject(proto) && proto !== null) { - throw TypeError("Can't set " + String(proto) + " as a prototype"); - } - }; - } - ), - /***/ - "./node_modules/core-js/internals/well-known-symbol.js": ( - /*!*************************************************************!*\ - !*** ./node_modules/core-js/internals/well-known-symbol.js ***! - \*************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var global2 = __webpack_require__( - /*! ../internals/global */ - "./node_modules/core-js/internals/global.js" - ); - var shared = __webpack_require__( - /*! ../internals/shared */ - "./node_modules/core-js/internals/shared.js" - ); - var uid = __webpack_require__( - /*! ../internals/uid */ - "./node_modules/core-js/internals/uid.js" - ); - var NATIVE_SYMBOL = __webpack_require__( - /*! ../internals/native-symbol */ - "./node_modules/core-js/internals/native-symbol.js" - ); - var Symbol2 = global2.Symbol; - var store = shared("wks"); - module3.exports = function(name) { - return store[name] || (store[name] = NATIVE_SYMBOL && Symbol2[name] || (NATIVE_SYMBOL ? Symbol2 : uid)("Symbol." + name)); - }; - } - ), - /***/ - "./node_modules/core-js/modules/es.array.from.js": ( - /*!*******************************************************!*\ - !*** ./node_modules/core-js/modules/es.array.from.js ***! - \*******************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - var $ = __webpack_require__( - /*! ../internals/export */ - "./node_modules/core-js/internals/export.js" - ); - var from = __webpack_require__( - /*! ../internals/array-from */ - "./node_modules/core-js/internals/array-from.js" - ); - var checkCorrectnessOfIteration = __webpack_require__( - /*! ../internals/check-correctness-of-iteration */ - "./node_modules/core-js/internals/check-correctness-of-iteration.js" - ); - var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) { - Array.from(iterable); - }); - $({ target: "Array", stat: true, forced: INCORRECT_ITERATION }, { - from - }); - } - ), - /***/ - "./node_modules/core-js/modules/es.string.iterator.js": ( - /*!************************************************************!*\ - !*** ./node_modules/core-js/modules/es.string.iterator.js ***! - \************************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - var codePointAt = __webpack_require__( - /*! ../internals/string-at */ - "./node_modules/core-js/internals/string-at.js" - ); - var InternalStateModule = __webpack_require__( - /*! ../internals/internal-state */ - "./node_modules/core-js/internals/internal-state.js" - ); - var defineIterator = __webpack_require__( - /*! ../internals/define-iterator */ - "./node_modules/core-js/internals/define-iterator.js" - ); - var STRING_ITERATOR = "String Iterator"; - var setInternalState = InternalStateModule.set; - var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); - defineIterator(String, "String", function(iterated) { - setInternalState(this, { - type: STRING_ITERATOR, - string: String(iterated), - index: 0 - }); - }, function next() { - var state = getInternalState(this); - var string = state.string; - var index2 = state.index; - var point3; - if (index2 >= string.length) - return { value: void 0, done: true }; - point3 = codePointAt(string, index2, true); - state.index += point3.length; - return { value: point3, done: false }; - }); - } - ), - /***/ - "./node_modules/webpack/buildin/global.js": ( - /*!***********************************!*\ - !*** (webpack)/buildin/global.js ***! - \***********************************/ - /*! no static exports found */ - /***/ - function(module3, exports2) { - var g; - g = function() { - return this; - }(); - try { - g = g || Function("return this")() || (1, eval)("this"); - } catch (e) { - if (typeof window === "object") - g = window; - } - module3.exports = g; - } - ), - /***/ - "./src/default-attrs.json": ( - /*!********************************!*\ - !*** ./src/default-attrs.json ***! - \********************************/ - /*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */ - /***/ - function(module3) { - module3.exports = { "xmlns": "http://www.w3.org/2000/svg", "width": 24, "height": 24, "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round" }; - } - ), - /***/ - "./src/icon.js": ( - /*!*********************!*\ - !*** ./src/icon.js ***! - \*********************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { - value: true - }); - var _extends = Object.assign || function(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - return target; - }; - var _createClass = function() { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - return function(Constructor, protoProps, staticProps) { - if (protoProps) - defineProperties(Constructor.prototype, protoProps); - if (staticProps) - defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - var _dedupe = __webpack_require__( - /*! classnames/dedupe */ - "./node_modules/classnames/dedupe.js" - ); - var _dedupe2 = _interopRequireDefault(_dedupe); - var _defaultAttrs = __webpack_require__( - /*! ./default-attrs.json */ - "./src/default-attrs.json" - ); - var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function _classCallCheck(instance24, Constructor) { - if (!(instance24 instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - var Icon = function() { - function Icon2(name, contents) { - var tags = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; - _classCallCheck(this, Icon2); - this.name = name; - this.contents = contents; - this.tags = tags; - this.attrs = _extends({}, _defaultAttrs2.default, { class: "feather feather-" + name }); - } - _createClass(Icon2, [{ - key: "toSvg", - value: function toSvg() { - var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) }); - return "" + this.contents + ""; - } - /** - * Return string representation of an `Icon`. - * - * Added for backward compatibility. If old code expects `feather.icons.` - * to be a string, `toString()` will get implicitly called. - * - * @returns {string} - */ - }, { - key: "toString", - value: function toString() { - return this.contents; - } - }]); - return Icon2; - }(); - function attrsToString(attrs) { - return Object.keys(attrs).map(function(key) { - return key + '="' + attrs[key] + '"'; - }).join(" "); - } - exports2.default = Icon; - } - ), - /***/ - "./src/icons.js": ( - /*!**********************!*\ - !*** ./src/icons.js ***! - \**********************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { - value: true - }); - var _icon = __webpack_require__( - /*! ./icon */ - "./src/icon.js" - ); - var _icon2 = _interopRequireDefault(_icon); - var _icons = __webpack_require__( - /*! ../dist/icons.json */ - "./dist/icons.json" - ); - var _icons2 = _interopRequireDefault(_icons); - var _tags = __webpack_require__( - /*! ./tags.json */ - "./src/tags.json" - ); - var _tags2 = _interopRequireDefault(_tags); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - exports2.default = Object.keys(_icons2.default).map(function(key) { - return new _icon2.default(key, _icons2.default[key], _tags2.default[key]); - }).reduce(function(object, icon) { - object[icon.name] = icon; - return object; - }, {}); - } - ), - /***/ - "./src/index.js": ( - /*!**********************!*\ - !*** ./src/index.js ***! - \**********************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - var _icons = __webpack_require__( - /*! ./icons */ - "./src/icons.js" - ); - var _icons2 = _interopRequireDefault(_icons); - var _toSvg = __webpack_require__( - /*! ./to-svg */ - "./src/to-svg.js" - ); - var _toSvg2 = _interopRequireDefault(_toSvg); - var _replace = __webpack_require__( - /*! ./replace */ - "./src/replace.js" - ); - var _replace2 = _interopRequireDefault(_replace); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - module3.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default }; - } - ), - /***/ - "./src/replace.js": ( - /*!************************!*\ - !*** ./src/replace.js ***! - \************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { - value: true - }); - var _extends = Object.assign || function(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - return target; - }; - var _dedupe = __webpack_require__( - /*! classnames/dedupe */ - "./node_modules/classnames/dedupe.js" - ); - var _dedupe2 = _interopRequireDefault(_dedupe); - var _icons = __webpack_require__( - /*! ./icons */ - "./src/icons.js" - ); - var _icons2 = _interopRequireDefault(_icons); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function replace() { - var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; - if (typeof document === "undefined") { - throw new Error("`feather.replace()` only works in a browser environment."); - } - var elementsToReplace = document.querySelectorAll("[data-feather]"); - Array.from(elementsToReplace).forEach(function(element2) { - return replaceElement(element2, attrs); - }); - } - function replaceElement(element2) { - var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - var elementAttrs = getAttrs(element2); - var name = elementAttrs["data-feather"]; - delete elementAttrs["data-feather"]; - var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) })); - var svgDocument = new DOMParser().parseFromString(svgString, "image/svg+xml"); - var svgElement = svgDocument.querySelector("svg"); - element2.parentNode.replaceChild(svgElement, element2); - } - function getAttrs(element2) { - return Array.from(element2.attributes).reduce(function(attrs, attr2) { - attrs[attr2.name] = attr2.value; - return attrs; - }, {}); - } - exports2.default = replace; - } - ), - /***/ - "./src/tags.json": ( - /*!***********************!*\ - !*** ./src/tags.json ***! - \***********************/ - /*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, chevron-down, chevron-up, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-buoy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ - /***/ - function(module3) { - module3.exports = { "activity": ["pulse", "health", "action", "motion"], "airplay": ["stream", "cast", "mirroring"], "alert-circle": ["warning", "alert", "danger"], "alert-octagon": ["warning", "alert", "danger"], "alert-triangle": ["warning", "alert", "danger"], "align-center": ["text alignment", "center"], "align-justify": ["text alignment", "justified"], "align-left": ["text alignment", "left"], "align-right": ["text alignment", "right"], "anchor": [], "archive": ["index", "box"], "at-sign": ["mention", "at", "email", "message"], "award": ["achievement", "badge"], "aperture": ["camera", "photo"], "bar-chart": ["statistics", "diagram", "graph"], "bar-chart-2": ["statistics", "diagram", "graph"], "battery": ["power", "electricity"], "battery-charging": ["power", "electricity"], "bell": ["alarm", "notification", "sound"], "bell-off": ["alarm", "notification", "silent"], "bluetooth": ["wireless"], "book-open": ["read", "library"], "book": ["read", "dictionary", "booklet", "magazine", "library"], "bookmark": ["read", "clip", "marker", "tag"], "box": ["cube"], "briefcase": ["work", "bag", "baggage", "folder"], "calendar": ["date"], "camera": ["photo"], "cast": ["chromecast", "airplay"], "chevron-down": ["expand"], "chevron-up": ["collapse"], "circle": ["off", "zero", "record"], "clipboard": ["copy"], "clock": ["time", "watch", "alarm"], "cloud-drizzle": ["weather", "shower"], "cloud-lightning": ["weather", "bolt"], "cloud-rain": ["weather"], "cloud-snow": ["weather", "blizzard"], "cloud": ["weather"], "codepen": ["logo"], "codesandbox": ["logo"], "code": ["source", "programming"], "coffee": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"], "columns": ["layout"], "command": ["keyboard", "cmd", "terminal", "prompt"], "compass": ["navigation", "safari", "travel", "direction"], "copy": ["clone", "duplicate"], "corner-down-left": ["arrow", "return"], "corner-down-right": ["arrow"], "corner-left-down": ["arrow"], "corner-left-up": ["arrow"], "corner-right-down": ["arrow"], "corner-right-up": ["arrow"], "corner-up-left": ["arrow"], "corner-up-right": ["arrow"], "cpu": ["processor", "technology"], "credit-card": ["purchase", "payment", "cc"], "crop": ["photo", "image"], "crosshair": ["aim", "target"], "database": ["storage", "memory"], "delete": ["remove"], "disc": ["album", "cd", "dvd", "music"], "dollar-sign": ["currency", "money", "payment"], "droplet": ["water"], "edit": ["pencil", "change"], "edit-2": ["pencil", "change"], "edit-3": ["pencil", "change"], "eye": ["view", "watch"], "eye-off": ["view", "watch", "hide", "hidden"], "external-link": ["outbound"], "facebook": ["logo", "social"], "fast-forward": ["music"], "figma": ["logo", "design", "tool"], "file-minus": ["delete", "remove", "erase"], "file-plus": ["add", "create", "new"], "file-text": ["data", "txt", "pdf"], "film": ["movie", "video"], "filter": ["funnel", "hopper"], "flag": ["report"], "folder-minus": ["directory"], "folder-plus": ["directory"], "folder": ["directory"], "framer": ["logo", "design", "tool"], "frown": ["emoji", "face", "bad", "sad", "emotion"], "gift": ["present", "box", "birthday", "party"], "git-branch": ["code", "version control"], "git-commit": ["code", "version control"], "git-merge": ["code", "version control"], "git-pull-request": ["code", "version control"], "github": ["logo", "version control"], "gitlab": ["logo", "version control"], "globe": ["world", "browser", "language", "translate"], "hard-drive": ["computer", "server", "memory", "data"], "hash": ["hashtag", "number", "pound"], "headphones": ["music", "audio", "sound"], "heart": ["like", "love", "emotion"], "help-circle": ["question mark"], "hexagon": ["shape", "node.js", "logo"], "home": ["house", "living"], "image": ["picture"], "inbox": ["email"], "instagram": ["logo", "camera"], "key": ["password", "login", "authentication", "secure"], "layers": ["stack"], "layout": ["window", "webpage"], "life-buoy": ["help", "life ring", "support"], "link": ["chain", "url"], "link-2": ["chain", "url"], "linkedin": ["logo", "social media"], "list": ["options"], "lock": ["security", "password", "secure"], "log-in": ["sign in", "arrow", "enter"], "log-out": ["sign out", "arrow", "exit"], "mail": ["email", "message"], "map-pin": ["location", "navigation", "travel", "marker"], "map": ["location", "navigation", "travel"], "maximize": ["fullscreen"], "maximize-2": ["fullscreen", "arrows", "expand"], "meh": ["emoji", "face", "neutral", "emotion"], "menu": ["bars", "navigation", "hamburger"], "message-circle": ["comment", "chat"], "message-square": ["comment", "chat"], "mic-off": ["record", "sound", "mute"], "mic": ["record", "sound", "listen"], "minimize": ["exit fullscreen", "close"], "minimize-2": ["exit fullscreen", "arrows", "close"], "minus": ["subtract"], "monitor": ["tv", "screen", "display"], "moon": ["dark", "night"], "more-horizontal": ["ellipsis"], "more-vertical": ["ellipsis"], "mouse-pointer": ["arrow", "cursor"], "move": ["arrows"], "music": ["note"], "navigation": ["location", "travel"], "navigation-2": ["location", "travel"], "octagon": ["stop"], "package": ["box", "container"], "paperclip": ["attachment"], "pause": ["music", "stop"], "pause-circle": ["music", "audio", "stop"], "pen-tool": ["vector", "drawing"], "percent": ["discount"], "phone-call": ["ring"], "phone-forwarded": ["call"], "phone-incoming": ["call"], "phone-missed": ["call"], "phone-off": ["call", "mute"], "phone-outgoing": ["call"], "phone": ["call"], "play": ["music", "start"], "pie-chart": ["statistics", "diagram"], "play-circle": ["music", "start"], "plus": ["add", "new"], "plus-circle": ["add", "new"], "plus-square": ["add", "new"], "pocket": ["logo", "save"], "power": ["on", "off"], "printer": ["fax", "office", "device"], "radio": ["signal"], "refresh-cw": ["synchronise", "arrows"], "refresh-ccw": ["arrows"], "repeat": ["loop", "arrows"], "rewind": ["music"], "rotate-ccw": ["arrow"], "rotate-cw": ["arrow"], "rss": ["feed", "subscribe"], "save": ["floppy disk"], "scissors": ["cut"], "search": ["find", "magnifier", "magnifying glass"], "send": ["message", "mail", "email", "paper airplane", "paper aeroplane"], "settings": ["cog", "edit", "gear", "preferences"], "share-2": ["network", "connections"], "shield": ["security", "secure"], "shield-off": ["security", "insecure"], "shopping-bag": ["ecommerce", "cart", "purchase", "store"], "shopping-cart": ["ecommerce", "cart", "purchase", "store"], "shuffle": ["music"], "skip-back": ["music"], "skip-forward": ["music"], "slack": ["logo"], "slash": ["ban", "no"], "sliders": ["settings", "controls"], "smartphone": ["cellphone", "device"], "smile": ["emoji", "face", "happy", "good", "emotion"], "speaker": ["audio", "music"], "star": ["bookmark", "favorite", "like"], "stop-circle": ["media", "music"], "sun": ["brightness", "weather", "light"], "sunrise": ["weather", "time", "morning", "day"], "sunset": ["weather", "time", "evening", "night"], "tablet": ["device"], "tag": ["label"], "target": ["logo", "bullseye"], "terminal": ["code", "command line", "prompt"], "thermometer": ["temperature", "celsius", "fahrenheit", "weather"], "thumbs-down": ["dislike", "bad", "emotion"], "thumbs-up": ["like", "good", "emotion"], "toggle-left": ["on", "off", "switch"], "toggle-right": ["on", "off", "switch"], "tool": ["settings", "spanner"], "trash": ["garbage", "delete", "remove", "bin"], "trash-2": ["garbage", "delete", "remove", "bin"], "triangle": ["delta"], "truck": ["delivery", "van", "shipping", "transport", "lorry"], "tv": ["television", "stream"], "twitch": ["logo"], "twitter": ["logo", "social"], "type": ["text"], "umbrella": ["rain", "weather"], "unlock": ["security"], "user-check": ["followed", "subscribed"], "user-minus": ["delete", "remove", "unfollow", "unsubscribe"], "user-plus": ["new", "add", "create", "follow", "subscribe"], "user-x": ["delete", "remove", "unfollow", "unsubscribe", "unavailable"], "user": ["person", "account"], "users": ["group"], "video-off": ["camera", "movie", "film"], "video": ["camera", "movie", "film"], "voicemail": ["phone"], "volume": ["music", "sound", "mute"], "volume-1": ["music", "sound"], "volume-2": ["music", "sound"], "volume-x": ["music", "sound", "mute"], "watch": ["clock", "time"], "wifi-off": ["disabled"], "wifi": ["connection", "signal", "wireless"], "wind": ["weather", "air"], "x-circle": ["cancel", "close", "delete", "remove", "times", "clear"], "x-octagon": ["delete", "stop", "alert", "warning", "times", "clear"], "x-square": ["cancel", "close", "delete", "remove", "times", "clear"], "x": ["cancel", "close", "delete", "remove", "times", "clear"], "youtube": ["logo", "video", "play"], "zap-off": ["flash", "camera", "lightning"], "zap": ["flash", "camera", "lightning"], "zoom-in": ["magnifying glass"], "zoom-out": ["magnifying glass"] }; - } - ), - /***/ - "./src/to-svg.js": ( - /*!***********************!*\ - !*** ./src/to-svg.js ***! - \***********************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { - value: true - }); - var _icons = __webpack_require__( - /*! ./icons */ - "./src/icons.js" - ); - var _icons2 = _interopRequireDefault(_icons); - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - function toSvg(name) { - var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; - console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."); - if (!name) { - throw new Error("The required `key` (icon name) parameter is missing."); - } - if (!_icons2.default[name]) { - throw new Error("No icon matching '" + name + "'. See the complete list of icons at https://feathericons.com"); - } - return _icons2.default[name].toSvg(attrs); - } - exports2.default = toSvg; - } - ), - /***/ - 0: ( - /*!**************************************************!*\ - !*** multi core-js/es/array/from ./src/index.js ***! - \**************************************************/ - /*! no static exports found */ - /***/ - function(module3, exports2, __webpack_require__) { - __webpack_require__( - /*! core-js/es/array/from */ - "./node_modules/core-js/es/array/from.js" - ); - module3.exports = __webpack_require__( - /*! /home/runner/work/feather/feather/src/index.js */ - "./src/index.js" - ); - } - ) - /******/ - }) - ); - }); - } -}); - -// node_modules/loglevel/lib/loglevel.js -var require_loglevel = __commonJS({ - "node_modules/loglevel/lib/loglevel.js"(exports, module2) { - (function(root2, definition) { - "use strict"; - if (typeof define === "function" && define.amd) { - define(definition); - } else if (typeof module2 === "object" && module2.exports) { - module2.exports = definition(); - } else { - root2.log = definition(); +// node_modules/obsidian-dataview/lib/index.js +var require_lib = __commonJS({ + "node_modules/obsidian-dataview/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + require("obsidian"); + var LuxonError2 = class extends Error { + }; + var InvalidDateTimeError2 = class extends LuxonError2 { + constructor(reason) { + super(`Invalid DateTime: ${reason.toMessage()}`); } - })(exports, function() { - "use strict"; - var noop3 = function() { - }; - var undefinedType = "undefined"; - var isIE = typeof window !== undefinedType && typeof window.navigator !== undefinedType && /Trident\/|MSIE /.test(window.navigator.userAgent); - var logMethods = [ - "trace", - "debug", - "info", - "warn", - "error" - ]; - function bindMethod(obj, methodName) { - var method = obj[methodName]; - if (typeof method.bind === "function") { - return method.bind(obj); - } else { - try { - return Function.prototype.bind.call(method, obj); - } catch (e) { - return function() { - return Function.prototype.apply.apply(method, [obj, arguments]); - }; - } + }; + var InvalidIntervalError2 = class extends LuxonError2 { + constructor(reason) { + super(`Invalid Interval: ${reason.toMessage()}`); + } + }; + var InvalidDurationError2 = class extends LuxonError2 { + constructor(reason) { + super(`Invalid Duration: ${reason.toMessage()}`); + } + }; + var ConflictingSpecificationError2 = class extends LuxonError2 { + }; + var InvalidUnitError2 = class extends LuxonError2 { + constructor(unit) { + super(`Invalid unit ${unit}`); + } + }; + var InvalidArgumentError2 = class extends LuxonError2 { + }; + var ZoneIsAbstractError2 = class extends LuxonError2 { + constructor() { + super("Zone is an abstract class"); + } + }; + var n2 = "numeric"; + var s2 = "short"; + var l2 = "long"; + var DATE_SHORT2 = { + year: n2, + month: n2, + day: n2 + }; + var DATE_MED2 = { + year: n2, + month: s2, + day: n2 + }; + var DATE_MED_WITH_WEEKDAY2 = { + year: n2, + month: s2, + day: n2, + weekday: s2 + }; + var DATE_FULL2 = { + year: n2, + month: l2, + day: n2 + }; + var DATE_HUGE2 = { + year: n2, + month: l2, + day: n2, + weekday: l2 + }; + var TIME_SIMPLE2 = { + hour: n2, + minute: n2 + }; + var TIME_WITH_SECONDS2 = { + hour: n2, + minute: n2, + second: n2 + }; + var TIME_WITH_SHORT_OFFSET2 = { + hour: n2, + minute: n2, + second: n2, + timeZoneName: s2 + }; + var TIME_WITH_LONG_OFFSET2 = { + hour: n2, + minute: n2, + second: n2, + timeZoneName: l2 + }; + var TIME_24_SIMPLE2 = { + hour: n2, + minute: n2, + hourCycle: "h23" + }; + var TIME_24_WITH_SECONDS2 = { + hour: n2, + minute: n2, + second: n2, + hourCycle: "h23" + }; + var TIME_24_WITH_SHORT_OFFSET2 = { + hour: n2, + minute: n2, + second: n2, + hourCycle: "h23", + timeZoneName: s2 + }; + var TIME_24_WITH_LONG_OFFSET2 = { + hour: n2, + minute: n2, + second: n2, + hourCycle: "h23", + timeZoneName: l2 + }; + var DATETIME_SHORT2 = { + year: n2, + month: n2, + day: n2, + hour: n2, + minute: n2 + }; + var DATETIME_SHORT_WITH_SECONDS2 = { + year: n2, + month: n2, + day: n2, + hour: n2, + minute: n2, + second: n2 + }; + var DATETIME_MED2 = { + year: n2, + month: s2, + day: n2, + hour: n2, + minute: n2 + }; + var DATETIME_MED_WITH_SECONDS2 = { + year: n2, + month: s2, + day: n2, + hour: n2, + minute: n2, + second: n2 + }; + var DATETIME_MED_WITH_WEEKDAY2 = { + year: n2, + month: s2, + day: n2, + weekday: s2, + hour: n2, + minute: n2 + }; + var DATETIME_FULL2 = { + year: n2, + month: l2, + day: n2, + hour: n2, + minute: n2, + timeZoneName: s2 + }; + var DATETIME_FULL_WITH_SECONDS2 = { + year: n2, + month: l2, + day: n2, + hour: n2, + minute: n2, + second: n2, + timeZoneName: s2 + }; + var DATETIME_HUGE2 = { + year: n2, + month: l2, + day: n2, + weekday: l2, + hour: n2, + minute: n2, + timeZoneName: l2 + }; + var DATETIME_HUGE_WITH_SECONDS2 = { + year: n2, + month: l2, + day: n2, + weekday: l2, + hour: n2, + minute: n2, + second: n2, + timeZoneName: l2 + }; + var Zone2 = class { + /** + * The type of zone + * @abstract + * @type {string} + */ + get type() { + throw new ZoneIsAbstractError2(); + } + /** + * The name of this zone. + * @abstract + * @type {string} + */ + get name() { + throw new ZoneIsAbstractError2(); + } + get ianaName() { + return this.name; + } + /** + * Returns whether the offset is known to be fixed for the whole year. + * @abstract + * @type {boolean} + */ + get isUniversal() { + throw new ZoneIsAbstractError2(); + } + /** + * Returns the offset's common name (such as EST) at the specified timestamp + * @abstract + * @param {number} ts - Epoch milliseconds for which to get the name + * @param {Object} opts - Options to affect the format + * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'. + * @param {string} opts.locale - What locale to return the offset name in. + * @return {string} + */ + offsetName(ts, opts) { + throw new ZoneIsAbstractError2(); + } + /** + * Returns the offset's value as a string + * @abstract + * @param {number} ts - Epoch milliseconds for which to get the offset + * @param {string} format - What style of offset to return. + * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively + * @return {string} + */ + formatOffset(ts, format) { + throw new ZoneIsAbstractError2(); + } + /** + * Return the offset in minutes for this zone at the specified timestamp. + * @abstract + * @param {number} ts - Epoch milliseconds for which to compute the offset + * @return {number} + */ + offset(ts) { + throw new ZoneIsAbstractError2(); + } + /** + * Return whether this Zone is equal to another zone + * @abstract + * @param {Zone} otherZone - the zone to compare + * @return {boolean} + */ + equals(otherZone) { + throw new ZoneIsAbstractError2(); + } + /** + * Return whether this Zone is valid. + * @abstract + * @type {boolean} + */ + get isValid() { + throw new ZoneIsAbstractError2(); + } + }; + var singleton$1 = null; + var SystemZone2 = class _SystemZone extends Zone2 { + /** + * Get a singleton instance of the local zone + * @return {SystemZone} + */ + static get instance() { + if (singleton$1 === null) { + singleton$1 = new _SystemZone(); + } + return singleton$1; + } + /** @override **/ + get type() { + return "system"; + } + /** @override **/ + get name() { + return new Intl.DateTimeFormat().resolvedOptions().timeZone; + } + /** @override **/ + get isUniversal() { + return false; + } + /** @override **/ + offsetName(ts, { format, locale }) { + return parseZoneInfo2(ts, format, locale); + } + /** @override **/ + formatOffset(ts, format) { + return formatOffset2(this.offset(ts), format); + } + /** @override **/ + offset(ts) { + return -new Date(ts).getTimezoneOffset(); + } + /** @override **/ + equals(otherZone) { + return otherZone.type === "system"; + } + /** @override **/ + get isValid() { + return true; + } + }; + var dtfCache2 = {}; + function makeDTF2(zone) { + if (!dtfCache2[zone]) { + dtfCache2[zone] = new Intl.DateTimeFormat("en-US", { + hour12: false, + timeZone: zone, + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + era: "short" + }); + } + return dtfCache2[zone]; + } + var typeToPos2 = { + year: 0, + month: 1, + day: 2, + era: 3, + hour: 4, + minute: 5, + second: 6 + }; + function hackyOffset2(dtf, date) { + const formatted = dtf.format(date).replace(/\u200E/g, ""), parsed = /(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(formatted), [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed; + return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond]; + } + function partsOffset2(dtf, date) { + const formatted = dtf.formatToParts(date); + const filled = []; + for (let i = 0; i < formatted.length; i++) { + const { type, value } = formatted[i]; + const pos = typeToPos2[type]; + if (type === "era") { + filled[pos] = value; + } else if (!isUndefined2(pos)) { + filled[pos] = parseInt(value, 10); } } - function traceForIE() { - if (console.log) { - if (console.log.apply) { - console.log.apply(console, arguments); - } else { - Function.prototype.apply.apply(console.log, [console, arguments]); - } + return filled; + } + var ianaZoneCache2 = {}; + var IANAZone2 = class _IANAZone extends Zone2 { + /** + * @param {string} name - Zone name + * @return {IANAZone} + */ + static create(name) { + if (!ianaZoneCache2[name]) { + ianaZoneCache2[name] = new _IANAZone(name); } - if (console.trace) - console.trace(); + return ianaZoneCache2[name]; } - function realMethod(methodName) { - if (methodName === "debug") { - methodName = "log"; - } - if (typeof console === undefinedType) { + /** + * Reset local caches. Should only be necessary in testing scenarios. + * @return {void} + */ + static resetCache() { + ianaZoneCache2 = {}; + dtfCache2 = {}; + } + /** + * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that. + * @param {string} s - The string to check validity on + * @example IANAZone.isValidSpecifier("America/New_York") //=> true + * @example IANAZone.isValidSpecifier("Sport~~blorp") //=> false + * @deprecated This method returns false for some valid IANA names. Use isValidZone instead. + * @return {boolean} + */ + static isValidSpecifier(s3) { + return this.isValidZone(s3); + } + /** + * Returns whether the provided string identifies a real zone + * @param {string} zone - The string to check + * @example IANAZone.isValidZone("America/New_York") //=> true + * @example IANAZone.isValidZone("Fantasia/Castle") //=> false + * @example IANAZone.isValidZone("Sport~~blorp") //=> false + * @return {boolean} + */ + static isValidZone(zone) { + if (!zone) { return false; - } else if (methodName === "trace" && isIE) { - return traceForIE; - } else if (console[methodName] !== void 0) { - return bindMethod(console, methodName); - } else if (console.log !== void 0) { - return bindMethod(console, "log"); + } + try { + new Intl.DateTimeFormat("en-US", { timeZone: zone }).format(); + return true; + } catch (e) { + return false; + } + } + constructor(name) { + super(); + this.zoneName = name; + this.valid = _IANAZone.isValidZone(name); + } + /** @override **/ + get type() { + return "iana"; + } + /** @override **/ + get name() { + return this.zoneName; + } + /** @override **/ + get isUniversal() { + return false; + } + /** @override **/ + offsetName(ts, { format, locale }) { + return parseZoneInfo2(ts, format, locale, this.name); + } + /** @override **/ + formatOffset(ts, format) { + return formatOffset2(this.offset(ts), format); + } + /** @override **/ + offset(ts) { + const date = new Date(ts); + if (isNaN(date)) + return NaN; + const dtf = makeDTF2(this.name); + let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts ? partsOffset2(dtf, date) : hackyOffset2(dtf, date); + if (adOrBc === "BC") { + year = -Math.abs(year) + 1; + } + const adjustedHour = hour === 24 ? 0 : hour; + const asUTC = objToLocalTS2({ + year, + month, + day, + hour: adjustedHour, + minute, + second, + millisecond: 0 + }); + let asTS = +date; + const over = asTS % 1e3; + asTS -= over >= 0 ? over : 1e3 + over; + return (asUTC - asTS) / (60 * 1e3); + } + /** @override **/ + equals(otherZone) { + return otherZone.type === "iana" && otherZone.name === this.name; + } + /** @override **/ + get isValid() { + return this.valid; + } + }; + var intlLFCache2 = {}; + function getCachedLF2(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let dtf = intlLFCache2[key]; + if (!dtf) { + dtf = new Intl.ListFormat(locString, opts); + intlLFCache2[key] = dtf; + } + return dtf; + } + var intlDTCache2 = {}; + function getCachedDTF2(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let dtf = intlDTCache2[key]; + if (!dtf) { + dtf = new Intl.DateTimeFormat(locString, opts); + intlDTCache2[key] = dtf; + } + return dtf; + } + var intlNumCache2 = {}; + function getCachedINF2(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let inf = intlNumCache2[key]; + if (!inf) { + inf = new Intl.NumberFormat(locString, opts); + intlNumCache2[key] = inf; + } + return inf; + } + var intlRelCache2 = {}; + function getCachedRTF2(locString, opts = {}) { + const { base, ...cacheKeyOpts } = opts; + const key = JSON.stringify([locString, cacheKeyOpts]); + let inf = intlRelCache2[key]; + if (!inf) { + inf = new Intl.RelativeTimeFormat(locString, opts); + intlRelCache2[key] = inf; + } + return inf; + } + var sysLocaleCache2 = null; + function systemLocale2() { + if (sysLocaleCache2) { + return sysLocaleCache2; + } else { + sysLocaleCache2 = new Intl.DateTimeFormat().resolvedOptions().locale; + return sysLocaleCache2; + } + } + function parseLocaleString2(localeStr) { + const xIndex = localeStr.indexOf("-x-"); + if (xIndex !== -1) { + localeStr = localeStr.substring(0, xIndex); + } + const uIndex = localeStr.indexOf("-u-"); + if (uIndex === -1) { + return [localeStr]; + } else { + let options; + let selectedStr; + try { + options = getCachedDTF2(localeStr).resolvedOptions(); + selectedStr = localeStr; + } catch (e) { + const smaller = localeStr.substring(0, uIndex); + options = getCachedDTF2(smaller).resolvedOptions(); + selectedStr = smaller; + } + const { numberingSystem, calendar } = options; + return [selectedStr, numberingSystem, calendar]; + } + } + function intlConfigString2(localeStr, numberingSystem, outputCalendar) { + if (outputCalendar || numberingSystem) { + if (!localeStr.includes("-u-")) { + localeStr += "-u"; + } + if (outputCalendar) { + localeStr += `-ca-${outputCalendar}`; + } + if (numberingSystem) { + localeStr += `-nu-${numberingSystem}`; + } + return localeStr; + } else { + return localeStr; + } + } + function mapMonths2(f) { + const ms = []; + for (let i = 1; i <= 12; i++) { + const dt = DateTime2.utc(2009, i, 1); + ms.push(f(dt)); + } + return ms; + } + function mapWeekdays2(f) { + const ms = []; + for (let i = 1; i <= 7; i++) { + const dt = DateTime2.utc(2016, 11, 13 + i); + ms.push(f(dt)); + } + return ms; + } + function listStuff2(loc, length, englishFn, intlFn) { + const mode = loc.listingMode(); + if (mode === "error") { + return null; + } else if (mode === "en") { + return englishFn(length); + } else { + return intlFn(length); + } + } + function supportsFastNumbers2(loc) { + if (loc.numberingSystem && loc.numberingSystem !== "latn") { + return false; + } else { + return loc.numberingSystem === "latn" || !loc.locale || loc.locale.startsWith("en") || new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === "latn"; + } + } + var PolyNumberFormatter2 = class { + constructor(intl, forceSimple, opts) { + this.padTo = opts.padTo || 0; + this.floor = opts.floor || false; + const { padTo, floor, ...otherOpts } = opts; + if (!forceSimple || Object.keys(otherOpts).length > 0) { + const intlOpts = { useGrouping: false, ...opts }; + if (opts.padTo > 0) + intlOpts.minimumIntegerDigits = opts.padTo; + this.inf = getCachedINF2(intl, intlOpts); + } + } + format(i) { + if (this.inf) { + const fixed = this.floor ? Math.floor(i) : i; + return this.inf.format(fixed); } else { - return noop3; + const fixed = this.floor ? Math.floor(i) : roundTo2(i, 3); + return padStart2(fixed, this.padTo); } } - function replaceLoggingMethods(level, loggerName) { - for (var i = 0; i < logMethods.length; i++) { - var methodName = logMethods[i]; - this[methodName] = i < level ? noop3 : this.methodFactory(methodName, level, loggerName); - } - this.log = this.debug; - } - function enableLoggingWhenConsoleArrives(methodName, level, loggerName) { - return function() { - if (typeof console !== undefinedType) { - replaceLoggingMethods.call(this, level, loggerName); - this[methodName].apply(this, arguments); - } - }; - } - function defaultMethodFactory(methodName, level, loggerName) { - return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments); - } - function Logger(name, defaultLevel, factory) { - var self2 = this; - var currentLevel; - defaultLevel = defaultLevel == null ? "WARN" : defaultLevel; - var storageKey = "loglevel"; - if (typeof name === "string") { - storageKey += ":" + name; - } else if (typeof name === "symbol") { - storageKey = void 0; - } - function persistLevelIfPossible(levelNum) { - var levelName = (logMethods[levelNum] || "silent").toUpperCase(); - if (typeof window === undefinedType || !storageKey) - return; - try { - window.localStorage[storageKey] = levelName; - return; - } catch (ignore) { - } - try { - window.document.cookie = encodeURIComponent(storageKey) + "=" + levelName + ";"; - } catch (ignore) { - } - } - function getPersistedLevel() { - var storedLevel; - if (typeof window === undefinedType || !storageKey) - return; - try { - storedLevel = window.localStorage[storageKey]; - } catch (ignore) { - } - if (typeof storedLevel === undefinedType) { - try { - var cookie = window.document.cookie; - var location = cookie.indexOf( - encodeURIComponent(storageKey) + "=" - ); - if (location !== -1) { - storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1]; - } - } catch (ignore) { - } - } - if (self2.levels[storedLevel] === void 0) { - storedLevel = void 0; - } - return storedLevel; - } - function clearPersistedLevel() { - if (typeof window === undefinedType || !storageKey) - return; - try { - window.localStorage.removeItem(storageKey); - return; - } catch (ignore) { - } - try { - window.document.cookie = encodeURIComponent(storageKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC"; - } catch (ignore) { - } - } - self2.name = name; - self2.levels = { - "TRACE": 0, - "DEBUG": 1, - "INFO": 2, - "WARN": 3, - "ERROR": 4, - "SILENT": 5 - }; - self2.methodFactory = factory || defaultMethodFactory; - self2.getLevel = function() { - return currentLevel; - }; - self2.setLevel = function(level, persist) { - if (typeof level === "string" && self2.levels[level.toUpperCase()] !== void 0) { - level = self2.levels[level.toUpperCase()]; - } - if (typeof level === "number" && level >= 0 && level <= self2.levels.SILENT) { - currentLevel = level; - if (persist !== false) { - persistLevelIfPossible(level); - } - replaceLoggingMethods.call(self2, level, name); - if (typeof console === undefinedType && level < self2.levels.SILENT) { - return "No console available for logging"; - } + }; + var PolyDateFormatter2 = class { + constructor(dt, intl, opts) { + this.opts = opts; + this.originalZone = void 0; + let z2 = void 0; + if (this.opts.timeZone) { + this.dt = dt; + } else if (dt.zone.type === "fixed") { + const gmtOffset = -1 * (dt.offset / 60); + const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`; + if (dt.offset !== 0 && IANAZone2.create(offsetZ).valid) { + z2 = offsetZ; + this.dt = dt; } else { - throw "log.setLevel() called with invalid level: " + level; + z2 = "UTC"; + this.dt = dt.offset === 0 ? dt : dt.setZone("UTC").plus({ minutes: dt.offset }); + this.originalZone = dt.zone; } - }; - self2.setDefaultLevel = function(level) { - defaultLevel = level; - if (!getPersistedLevel()) { - self2.setLevel(level, false); - } - }; - self2.resetLevel = function() { - self2.setLevel(defaultLevel, false); - clearPersistedLevel(); - }; - self2.enableAll = function(persist) { - self2.setLevel(self2.levels.TRACE, persist); - }; - self2.disableAll = function(persist) { - self2.setLevel(self2.levels.SILENT, persist); - }; - var initialLevel = getPersistedLevel(); - if (initialLevel == null) { - initialLevel = defaultLevel; + } else if (dt.zone.type === "system") { + this.dt = dt; + } else if (dt.zone.type === "iana") { + this.dt = dt; + z2 = dt.zone.name; + } else { + z2 = "UTC"; + this.dt = dt.setZone("UTC").plus({ minutes: dt.offset }); + this.originalZone = dt.zone; } - self2.setLevel(initialLevel, false); + const intlOpts = { ...this.opts }; + intlOpts.timeZone = intlOpts.timeZone || z2; + this.dtf = getCachedDTF2(intl, intlOpts); } - var defaultLogger = new Logger(); - var _loggersByName = {}; - defaultLogger.getLogger = function getLogger(name) { - if (typeof name !== "symbol" && typeof name !== "string" || name === "") { - throw new TypeError("You must supply a name when creating a logger."); + format() { + if (this.originalZone) { + return this.formatToParts().map(({ value }) => value).join(""); } - var logger = _loggersByName[name]; - if (!logger) { - logger = _loggersByName[name] = new Logger( - name, - defaultLogger.getLevel(), - defaultLogger.methodFactory + return this.dtf.format(this.dt.toJSDate()); + } + formatToParts() { + const parts = this.dtf.formatToParts(this.dt.toJSDate()); + if (this.originalZone) { + return parts.map((part) => { + if (part.type === "timeZoneName") { + const offsetName = this.originalZone.offsetName(this.dt.ts, { + locale: this.dt.locale, + format: this.opts.timeZoneName + }); + return { + ...part, + value: offsetName + }; + } else { + return part; + } + }); + } + return parts; + } + resolvedOptions() { + return this.dtf.resolvedOptions(); + } + }; + var PolyRelFormatter2 = class { + constructor(intl, isEnglish, opts) { + this.opts = { style: "long", ...opts }; + if (!isEnglish && hasRelative2()) { + this.rtf = getCachedRTF2(intl, opts); + } + } + format(count, unit) { + if (this.rtf) { + return this.rtf.format(count, unit); + } else { + return formatRelativeTime2(unit, count, this.opts.numeric, this.opts.style !== "long"); + } + } + formatToParts(count, unit) { + if (this.rtf) { + return this.rtf.formatToParts(count, unit); + } else { + return []; + } + } + }; + var Locale2 = class _Locale { + static fromOpts(opts) { + return _Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN); + } + static create(locale, numberingSystem, outputCalendar, defaultToEN = false) { + const specifiedLocale = locale || Settings2.defaultLocale; + const localeR = specifiedLocale || (defaultToEN ? "en-US" : systemLocale2()); + const numberingSystemR = numberingSystem || Settings2.defaultNumberingSystem; + const outputCalendarR = outputCalendar || Settings2.defaultOutputCalendar; + return new _Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale); + } + static resetCache() { + sysLocaleCache2 = null; + intlDTCache2 = {}; + intlNumCache2 = {}; + intlRelCache2 = {}; + } + static fromObject({ locale, numberingSystem, outputCalendar } = {}) { + return _Locale.create(locale, numberingSystem, outputCalendar); + } + constructor(locale, numbering, outputCalendar, specifiedLocale) { + const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString2(locale); + this.locale = parsedLocale; + this.numberingSystem = numbering || parsedNumberingSystem || null; + this.outputCalendar = outputCalendar || parsedOutputCalendar || null; + this.intl = intlConfigString2(this.locale, this.numberingSystem, this.outputCalendar); + this.weekdaysCache = { format: {}, standalone: {} }; + this.monthsCache = { format: {}, standalone: {} }; + this.meridiemCache = null; + this.eraCache = {}; + this.specifiedLocale = specifiedLocale; + this.fastNumbersCached = null; + } + get fastNumbers() { + if (this.fastNumbersCached == null) { + this.fastNumbersCached = supportsFastNumbers2(this); + } + return this.fastNumbersCached; + } + listingMode() { + const isActuallyEn = this.isEnglish(); + const hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === "latn") && (this.outputCalendar === null || this.outputCalendar === "gregory"); + return isActuallyEn && hasNoWeirdness ? "en" : "intl"; + } + clone(alts) { + if (!alts || Object.getOwnPropertyNames(alts).length === 0) { + return this; + } else { + return _Locale.create( + alts.locale || this.specifiedLocale, + alts.numberingSystem || this.numberingSystem, + alts.outputCalendar || this.outputCalendar, + alts.defaultToEN || false ); } - return logger; - }; - var _log = typeof window !== undefinedType ? window.log : void 0; - defaultLogger.noConflict = function() { - if (typeof window !== undefinedType && window.log === defaultLogger) { - window.log = _log; + } + redefaultToEN(alts = {}) { + return this.clone({ ...alts, defaultToEN: true }); + } + redefaultToSystem(alts = {}) { + return this.clone({ ...alts, defaultToEN: false }); + } + months(length, format = false) { + return listStuff2(this, length, months2, () => { + const intl = format ? { month: length, day: "numeric" } : { month: length }, formatStr = format ? "format" : "standalone"; + if (!this.monthsCache[formatStr][length]) { + this.monthsCache[formatStr][length] = mapMonths2((dt) => this.extract(dt, intl, "month")); + } + return this.monthsCache[formatStr][length]; + }); + } + weekdays(length, format = false) { + return listStuff2(this, length, weekdays2, () => { + const intl = format ? { weekday: length, year: "numeric", month: "long", day: "numeric" } : { weekday: length }, formatStr = format ? "format" : "standalone"; + if (!this.weekdaysCache[formatStr][length]) { + this.weekdaysCache[formatStr][length] = mapWeekdays2( + (dt) => this.extract(dt, intl, "weekday") + ); + } + return this.weekdaysCache[formatStr][length]; + }); + } + meridiems() { + return listStuff2( + this, + void 0, + () => meridiems2, + () => { + if (!this.meridiemCache) { + const intl = { hour: "numeric", hourCycle: "h12" }; + this.meridiemCache = [DateTime2.utc(2016, 11, 13, 9), DateTime2.utc(2016, 11, 13, 19)].map( + (dt) => this.extract(dt, intl, "dayperiod") + ); + } + return this.meridiemCache; + } + ); + } + eras(length) { + return listStuff2(this, length, eras2, () => { + const intl = { era: length }; + if (!this.eraCache[length]) { + this.eraCache[length] = [DateTime2.utc(-40, 1, 1), DateTime2.utc(2017, 1, 1)].map( + (dt) => this.extract(dt, intl, "era") + ); + } + return this.eraCache[length]; + }); + } + extract(dt, intlOpts, field) { + const df = this.dtFormatter(dt, intlOpts), results = df.formatToParts(), matching = results.find((m) => m.type.toLowerCase() === field); + return matching ? matching.value : null; + } + numberFormatter(opts = {}) { + return new PolyNumberFormatter2(this.intl, opts.forceSimple || this.fastNumbers, opts); + } + dtFormatter(dt, intlOpts = {}) { + return new PolyDateFormatter2(dt, this.intl, intlOpts); + } + relFormatter(opts = {}) { + return new PolyRelFormatter2(this.intl, this.isEnglish(), opts); + } + listFormatter(opts = {}) { + return getCachedLF2(this.intl, opts); + } + isEnglish() { + return this.locale === "en" || this.locale.toLowerCase() === "en-us" || new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us"); + } + equals(other) { + return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar; + } + }; + var singleton3 = null; + var FixedOffsetZone2 = class _FixedOffsetZone extends Zone2 { + /** + * Get a singleton instance of UTC + * @return {FixedOffsetZone} + */ + static get utcInstance() { + if (singleton3 === null) { + singleton3 = new _FixedOffsetZone(0); } - return defaultLogger; + return singleton3; + } + /** + * Get an instance with a specified offset + * @param {number} offset - The offset in minutes + * @return {FixedOffsetZone} + */ + static instance(offset3) { + return offset3 === 0 ? _FixedOffsetZone.utcInstance : new _FixedOffsetZone(offset3); + } + /** + * Get an instance of FixedOffsetZone from a UTC offset string, like "UTC+6" + * @param {string} s - The offset string to parse + * @example FixedOffsetZone.parseSpecifier("UTC+6") + * @example FixedOffsetZone.parseSpecifier("UTC+06") + * @example FixedOffsetZone.parseSpecifier("UTC-6:00") + * @return {FixedOffsetZone} + */ + static parseSpecifier(s3) { + if (s3) { + const r = s3.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i); + if (r) { + return new _FixedOffsetZone(signedOffset2(r[1], r[2])); + } + } + return null; + } + constructor(offset3) { + super(); + this.fixed = offset3; + } + /** @override **/ + get type() { + return "fixed"; + } + /** @override **/ + get name() { + return this.fixed === 0 ? "UTC" : `UTC${formatOffset2(this.fixed, "narrow")}`; + } + get ianaName() { + if (this.fixed === 0) { + return "Etc/UTC"; + } else { + return `Etc/GMT${formatOffset2(-this.fixed, "narrow")}`; + } + } + /** @override **/ + offsetName() { + return this.name; + } + /** @override **/ + formatOffset(ts, format) { + return formatOffset2(this.fixed, format); + } + /** @override **/ + get isUniversal() { + return true; + } + /** @override **/ + offset() { + return this.fixed; + } + /** @override **/ + equals(otherZone) { + return otherZone.type === "fixed" && otherZone.fixed === this.fixed; + } + /** @override **/ + get isValid() { + return true; + } + }; + var InvalidZone2 = class extends Zone2 { + constructor(zoneName) { + super(); + this.zoneName = zoneName; + } + /** @override **/ + get type() { + return "invalid"; + } + /** @override **/ + get name() { + return this.zoneName; + } + /** @override **/ + get isUniversal() { + return false; + } + /** @override **/ + offsetName() { + return null; + } + /** @override **/ + formatOffset() { + return ""; + } + /** @override **/ + offset() { + return NaN; + } + /** @override **/ + equals() { + return false; + } + /** @override **/ + get isValid() { + return false; + } + }; + function normalizeZone2(input, defaultZone3) { + if (isUndefined2(input) || input === null) { + return defaultZone3; + } else if (input instanceof Zone2) { + return input; + } else if (isString2(input)) { + const lowered = input.toLowerCase(); + if (lowered === "default") + return defaultZone3; + else if (lowered === "local" || lowered === "system") + return SystemZone2.instance; + else if (lowered === "utc" || lowered === "gmt") + return FixedOffsetZone2.utcInstance; + else + return FixedOffsetZone2.parseSpecifier(lowered) || IANAZone2.create(input); + } else if (isNumber2(input)) { + return FixedOffsetZone2.instance(input); + } else if (typeof input === "object" && "offset" in input && typeof input.offset === "function") { + return input; + } else { + return new InvalidZone2(input); + } + } + var now3 = () => Date.now(); + var defaultZone2 = "system"; + var defaultLocale2 = null; + var defaultNumberingSystem2 = null; + var defaultOutputCalendar2 = null; + var twoDigitCutoffYear2 = 60; + var throwOnInvalid2; + var Settings2 = class { + /** + * Get the callback for returning the current timestamp. + * @type {function} + */ + static get now() { + return now3; + } + /** + * Set the callback for returning the current timestamp. + * The function should return a number, which will be interpreted as an Epoch millisecond count + * @type {function} + * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future + * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time + */ + static set now(n3) { + now3 = n3; + } + /** + * Set the default time zone to create DateTimes in. Does not affect existing instances. + * Use the value "system" to reset this value to the system's time zone. + * @type {string} + */ + static set defaultZone(zone) { + defaultZone2 = zone; + } + /** + * Get the default time zone object currently used to create DateTimes. Does not affect existing instances. + * The default value is the system's time zone (the one set on the machine that runs this code). + * @type {Zone} + */ + static get defaultZone() { + return normalizeZone2(defaultZone2, SystemZone2.instance); + } + /** + * Get the default locale to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static get defaultLocale() { + return defaultLocale2; + } + /** + * Set the default locale to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static set defaultLocale(locale) { + defaultLocale2 = locale; + } + /** + * Get the default numbering system to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static get defaultNumberingSystem() { + return defaultNumberingSystem2; + } + /** + * Set the default numbering system to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static set defaultNumberingSystem(numberingSystem) { + defaultNumberingSystem2 = numberingSystem; + } + /** + * Get the default output calendar to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static get defaultOutputCalendar() { + return defaultOutputCalendar2; + } + /** + * Set the default output calendar to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static set defaultOutputCalendar(outputCalendar) { + defaultOutputCalendar2 = outputCalendar; + } + /** + * Get the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century. + * @type {number} + */ + static get twoDigitCutoffYear() { + return twoDigitCutoffYear2; + } + /** + * Set the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century. + * @type {number} + * @example Settings.twoDigitCutoffYear = 0 // cut-off year is 0, so all 'yy' are interpreted as current century + * @example Settings.twoDigitCutoffYear = 50 // '49' -> 1949; '50' -> 2050 + * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50 + * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50 + */ + static set twoDigitCutoffYear(cutoffYear) { + twoDigitCutoffYear2 = cutoffYear % 100; + } + /** + * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals + * @type {boolean} + */ + static get throwOnInvalid() { + return throwOnInvalid2; + } + /** + * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals + * @type {boolean} + */ + static set throwOnInvalid(t) { + throwOnInvalid2 = t; + } + /** + * Reset Luxon's global caches. Should only be necessary in testing scenarios. + * @return {void} + */ + static resetCaches() { + Locale2.resetCache(); + IANAZone2.resetCache(); + } + }; + function isUndefined2(o) { + return typeof o === "undefined"; + } + function isNumber2(o) { + return typeof o === "number"; + } + function isInteger2(o) { + return typeof o === "number" && o % 1 === 0; + } + function isString2(o) { + return typeof o === "string"; + } + function isDate2(o) { + return Object.prototype.toString.call(o) === "[object Date]"; + } + function hasRelative2() { + try { + return typeof Intl !== "undefined" && !!Intl.RelativeTimeFormat; + } catch (e) { + return false; + } + } + function maybeArray2(thing) { + return Array.isArray(thing) ? thing : [thing]; + } + function bestBy2(arr, by, compare) { + if (arr.length === 0) { + return void 0; + } + return arr.reduce((best, next) => { + const pair = [by(next), next]; + if (!best) { + return pair; + } else if (compare(best[0], pair[0]) === best[0]) { + return best; + } else { + return pair; + } + }, null)[1]; + } + function pick2(obj, keys) { + return keys.reduce((a, k) => { + a[k] = obj[k]; + return a; + }, {}); + } + function hasOwnProperty2(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } + function integerBetween2(thing, bottom, top) { + return isInteger2(thing) && thing >= bottom && thing <= top; + } + function floorMod2(x, n3) { + return x - n3 * Math.floor(x / n3); + } + function padStart2(input, n3 = 2) { + const isNeg = input < 0; + let padded; + if (isNeg) { + padded = "-" + ("" + -input).padStart(n3, "0"); + } else { + padded = ("" + input).padStart(n3, "0"); + } + return padded; + } + function parseInteger2(string) { + if (isUndefined2(string) || string === null || string === "") { + return void 0; + } else { + return parseInt(string, 10); + } + } + function parseFloating2(string) { + if (isUndefined2(string) || string === null || string === "") { + return void 0; + } else { + return parseFloat(string); + } + } + function parseMillis2(fraction) { + if (isUndefined2(fraction) || fraction === null || fraction === "") { + return void 0; + } else { + const f = parseFloat("0." + fraction) * 1e3; + return Math.floor(f); + } + } + function roundTo2(number, digits, towardZero = false) { + const factor = 10 ** digits, rounder = towardZero ? Math.trunc : Math.round; + return rounder(number * factor) / factor; + } + function isLeapYear2(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); + } + function daysInYear2(year) { + return isLeapYear2(year) ? 366 : 365; + } + function daysInMonth2(year, month) { + const modMonth = floorMod2(month - 1, 12) + 1, modYear = year + (month - modMonth) / 12; + if (modMonth === 2) { + return isLeapYear2(modYear) ? 29 : 28; + } else { + return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1]; + } + } + function objToLocalTS2(obj) { + let d = Date.UTC( + obj.year, + obj.month - 1, + obj.day, + obj.hour, + obj.minute, + obj.second, + obj.millisecond + ); + if (obj.year < 100 && obj.year >= 0) { + d = new Date(d); + d.setUTCFullYear(obj.year, obj.month - 1, obj.day); + } + return +d; + } + function weeksInWeekYear2(weekYear) { + const p1 = (weekYear + Math.floor(weekYear / 4) - Math.floor(weekYear / 100) + Math.floor(weekYear / 400)) % 7, last = weekYear - 1, p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7; + return p1 === 4 || p2 === 3 ? 53 : 52; + } + function untruncateYear2(year) { + if (year > 99) { + return year; + } else + return year > Settings2.twoDigitCutoffYear ? 1900 + year : 2e3 + year; + } + function parseZoneInfo2(ts, offsetFormat, locale, timeZone = null) { + const date = new Date(ts), intlOpts = { + hourCycle: "h23", + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit" }; - defaultLogger.getLoggers = function getLoggers() { - return _loggersByName; + if (timeZone) { + intlOpts.timeZone = timeZone; + } + const modified = { timeZoneName: offsetFormat, ...intlOpts }; + const parsed = new Intl.DateTimeFormat(locale, modified).formatToParts(date).find((m) => m.type.toLowerCase() === "timezonename"); + return parsed ? parsed.value : null; + } + function signedOffset2(offHourStr, offMinuteStr) { + let offHour = parseInt(offHourStr, 10); + if (Number.isNaN(offHour)) { + offHour = 0; + } + const offMin = parseInt(offMinuteStr, 10) || 0, offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin; + return offHour * 60 + offMinSigned; + } + function asNumber2(value) { + const numericValue = Number(value); + if (typeof value === "boolean" || value === "" || Number.isNaN(numericValue)) + throw new InvalidArgumentError2(`Invalid unit value ${value}`); + return numericValue; + } + function normalizeObject2(obj, normalizer) { + const normalized = {}; + for (const u in obj) { + if (hasOwnProperty2(obj, u)) { + const v = obj[u]; + if (v === void 0 || v === null) + continue; + normalized[normalizer(u)] = asNumber2(v); + } + } + return normalized; + } + function formatOffset2(offset3, format) { + const hours = Math.trunc(Math.abs(offset3 / 60)), minutes = Math.trunc(Math.abs(offset3 % 60)), sign = offset3 >= 0 ? "+" : "-"; + switch (format) { + case "short": + return `${sign}${padStart2(hours, 2)}:${padStart2(minutes, 2)}`; + case "narrow": + return `${sign}${hours}${minutes > 0 ? `:${minutes}` : ""}`; + case "techie": + return `${sign}${padStart2(hours, 2)}${padStart2(minutes, 2)}`; + default: + throw new RangeError(`Value format ${format} is out of range for property format`); + } + } + function timeObject2(obj) { + return pick2(obj, ["hour", "minute", "second", "millisecond"]); + } + var monthsLong2 = [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ]; + var monthsShort2 = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ]; + var monthsNarrow2 = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"]; + function months2(length) { + switch (length) { + case "narrow": + return [...monthsNarrow2]; + case "short": + return [...monthsShort2]; + case "long": + return [...monthsLong2]; + case "numeric": + return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]; + case "2-digit": + return ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]; + default: + return null; + } + } + var weekdaysLong2 = [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ]; + var weekdaysShort2 = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; + var weekdaysNarrow2 = ["M", "T", "W", "T", "F", "S", "S"]; + function weekdays2(length) { + switch (length) { + case "narrow": + return [...weekdaysNarrow2]; + case "short": + return [...weekdaysShort2]; + case "long": + return [...weekdaysLong2]; + case "numeric": + return ["1", "2", "3", "4", "5", "6", "7"]; + default: + return null; + } + } + var meridiems2 = ["AM", "PM"]; + var erasLong2 = ["Before Christ", "Anno Domini"]; + var erasShort2 = ["BC", "AD"]; + var erasNarrow2 = ["B", "A"]; + function eras2(length) { + switch (length) { + case "narrow": + return [...erasNarrow2]; + case "short": + return [...erasShort2]; + case "long": + return [...erasLong2]; + default: + return null; + } + } + function meridiemForDateTime2(dt) { + return meridiems2[dt.hour < 12 ? 0 : 1]; + } + function weekdayForDateTime2(dt, length) { + return weekdays2(length)[dt.weekday - 1]; + } + function monthForDateTime2(dt, length) { + return months2(length)[dt.month - 1]; + } + function eraForDateTime2(dt, length) { + return eras2(length)[dt.year < 0 ? 0 : 1]; + } + function formatRelativeTime2(unit, count, numeric = "always", narrow = false) { + const units = { + years: ["year", "yr."], + quarters: ["quarter", "qtr."], + months: ["month", "mo."], + weeks: ["week", "wk."], + days: ["day", "day", "days"], + hours: ["hour", "hr."], + minutes: ["minute", "min."], + seconds: ["second", "sec."] }; - defaultLogger["default"] = defaultLogger; - return defaultLogger; + const lastable = ["hours", "minutes", "seconds"].indexOf(unit) === -1; + if (numeric === "auto" && lastable) { + const isDay = unit === "days"; + switch (count) { + case 1: + return isDay ? "tomorrow" : `next ${units[unit][0]}`; + case -1: + return isDay ? "yesterday" : `last ${units[unit][0]}`; + case 0: + return isDay ? "today" : `this ${units[unit][0]}`; + } + } + const isInPast = Object.is(count, -0) || count < 0, fmtValue = Math.abs(count), singular = fmtValue === 1, lilUnits = units[unit], fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit; + return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`; + } + function stringifyTokens2(splits, tokenToString) { + let s3 = ""; + for (const token of splits) { + if (token.literal) { + s3 += token.val; + } else { + s3 += tokenToString(token.val); + } + } + return s3; + } + var macroTokenToFormatOpts2 = { + D: DATE_SHORT2, + DD: DATE_MED2, + DDD: DATE_FULL2, + DDDD: DATE_HUGE2, + t: TIME_SIMPLE2, + tt: TIME_WITH_SECONDS2, + ttt: TIME_WITH_SHORT_OFFSET2, + tttt: TIME_WITH_LONG_OFFSET2, + T: TIME_24_SIMPLE2, + TT: TIME_24_WITH_SECONDS2, + TTT: TIME_24_WITH_SHORT_OFFSET2, + TTTT: TIME_24_WITH_LONG_OFFSET2, + f: DATETIME_SHORT2, + ff: DATETIME_MED2, + fff: DATETIME_FULL2, + ffff: DATETIME_HUGE2, + F: DATETIME_SHORT_WITH_SECONDS2, + FF: DATETIME_MED_WITH_SECONDS2, + FFF: DATETIME_FULL_WITH_SECONDS2, + FFFF: DATETIME_HUGE_WITH_SECONDS2 + }; + var Formatter2 = class _Formatter { + static create(locale, opts = {}) { + return new _Formatter(locale, opts); + } + static parseFormat(fmt) { + let current = null, currentFull = "", bracketed = false; + const splits = []; + for (let i = 0; i < fmt.length; i++) { + const c = fmt.charAt(i); + if (c === "'") { + if (currentFull.length > 0) { + splits.push({ literal: bracketed || /^\s+$/.test(currentFull), val: currentFull }); + } + current = null; + currentFull = ""; + bracketed = !bracketed; + } else if (bracketed) { + currentFull += c; + } else if (c === current) { + currentFull += c; + } else { + if (currentFull.length > 0) { + splits.push({ literal: /^\s+$/.test(currentFull), val: currentFull }); + } + currentFull = c; + current = c; + } + } + if (currentFull.length > 0) { + splits.push({ literal: bracketed || /^\s+$/.test(currentFull), val: currentFull }); + } + return splits; + } + static macroTokenToFormatOpts(token) { + return macroTokenToFormatOpts2[token]; + } + constructor(locale, formatOpts) { + this.opts = formatOpts; + this.loc = locale; + this.systemLoc = null; + } + formatWithSystemDefault(dt, opts) { + if (this.systemLoc === null) { + this.systemLoc = this.loc.redefaultToSystem(); + } + const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts }); + return df.format(); + } + dtFormatter(dt, opts = {}) { + return this.loc.dtFormatter(dt, { ...this.opts, ...opts }); + } + formatDateTime(dt, opts) { + return this.dtFormatter(dt, opts).format(); + } + formatDateTimeParts(dt, opts) { + return this.dtFormatter(dt, opts).formatToParts(); + } + formatInterval(interval, opts) { + const df = this.dtFormatter(interval.start, opts); + return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate()); + } + resolvedOptions(dt, opts) { + return this.dtFormatter(dt, opts).resolvedOptions(); + } + num(n3, p = 0) { + if (this.opts.forceSimple) { + return padStart2(n3, p); + } + const opts = { ...this.opts }; + if (p > 0) { + opts.padTo = p; + } + return this.loc.numberFormatter(opts).format(n3); + } + formatDateTimeFromString(dt, fmt) { + const knownEnglish = this.loc.listingMode() === "en", useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== "gregory", string = (opts, extract) => this.loc.extract(dt, opts, extract), formatOffset3 = (opts) => { + if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) { + return "Z"; + } + return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : ""; + }, meridiem = () => knownEnglish ? meridiemForDateTime2(dt) : string({ hour: "numeric", hourCycle: "h12" }, "dayperiod"), month = (length, standalone) => knownEnglish ? monthForDateTime2(dt, length) : string(standalone ? { month: length } : { month: length, day: "numeric" }, "month"), weekday = (length, standalone) => knownEnglish ? weekdayForDateTime2(dt, length) : string( + standalone ? { weekday: length } : { weekday: length, month: "long", day: "numeric" }, + "weekday" + ), maybeMacro = (token) => { + const formatOpts = _Formatter.macroTokenToFormatOpts(token); + if (formatOpts) { + return this.formatWithSystemDefault(dt, formatOpts); + } else { + return token; + } + }, era = (length) => knownEnglish ? eraForDateTime2(dt, length) : string({ era: length }, "era"), tokenToString = (token) => { + switch (token) { + case "S": + return this.num(dt.millisecond); + case "u": + case "SSS": + return this.num(dt.millisecond, 3); + case "s": + return this.num(dt.second); + case "ss": + return this.num(dt.second, 2); + case "uu": + return this.num(Math.floor(dt.millisecond / 10), 2); + case "uuu": + return this.num(Math.floor(dt.millisecond / 100)); + case "m": + return this.num(dt.minute); + case "mm": + return this.num(dt.minute, 2); + case "h": + return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12); + case "hh": + return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2); + case "H": + return this.num(dt.hour); + case "HH": + return this.num(dt.hour, 2); + case "Z": + return formatOffset3({ format: "narrow", allowZ: this.opts.allowZ }); + case "ZZ": + return formatOffset3({ format: "short", allowZ: this.opts.allowZ }); + case "ZZZ": + return formatOffset3({ format: "techie", allowZ: this.opts.allowZ }); + case "ZZZZ": + return dt.zone.offsetName(dt.ts, { format: "short", locale: this.loc.locale }); + case "ZZZZZ": + return dt.zone.offsetName(dt.ts, { format: "long", locale: this.loc.locale }); + case "z": + return dt.zoneName; + case "a": + return meridiem(); + case "d": + return useDateTimeFormatter ? string({ day: "numeric" }, "day") : this.num(dt.day); + case "dd": + return useDateTimeFormatter ? string({ day: "2-digit" }, "day") : this.num(dt.day, 2); + case "c": + return this.num(dt.weekday); + case "ccc": + return weekday("short", true); + case "cccc": + return weekday("long", true); + case "ccccc": + return weekday("narrow", true); + case "E": + return this.num(dt.weekday); + case "EEE": + return weekday("short", false); + case "EEEE": + return weekday("long", false); + case "EEEEE": + return weekday("narrow", false); + case "L": + return useDateTimeFormatter ? string({ month: "numeric", day: "numeric" }, "month") : this.num(dt.month); + case "LL": + return useDateTimeFormatter ? string({ month: "2-digit", day: "numeric" }, "month") : this.num(dt.month, 2); + case "LLL": + return month("short", true); + case "LLLL": + return month("long", true); + case "LLLLL": + return month("narrow", true); + case "M": + return useDateTimeFormatter ? string({ month: "numeric" }, "month") : this.num(dt.month); + case "MM": + return useDateTimeFormatter ? string({ month: "2-digit" }, "month") : this.num(dt.month, 2); + case "MMM": + return month("short", false); + case "MMMM": + return month("long", false); + case "MMMMM": + return month("narrow", false); + case "y": + return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year); + case "yy": + return useDateTimeFormatter ? string({ year: "2-digit" }, "year") : this.num(dt.year.toString().slice(-2), 2); + case "yyyy": + return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year, 4); + case "yyyyyy": + return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt.year, 6); + case "G": + return era("short"); + case "GG": + return era("long"); + case "GGGGG": + return era("narrow"); + case "kk": + return this.num(dt.weekYear.toString().slice(-2), 2); + case "kkkk": + return this.num(dt.weekYear, 4); + case "W": + return this.num(dt.weekNumber); + case "WW": + return this.num(dt.weekNumber, 2); + case "o": + return this.num(dt.ordinal); + case "ooo": + return this.num(dt.ordinal, 3); + case "q": + return this.num(dt.quarter); + case "qq": + return this.num(dt.quarter, 2); + case "X": + return this.num(Math.floor(dt.ts / 1e3)); + case "x": + return this.num(dt.ts); + default: + return maybeMacro(token); + } + }; + return stringifyTokens2(_Formatter.parseFormat(fmt), tokenToString); + } + formatDurationFromString(dur, fmt) { + const tokenToField = (token) => { + switch (token[0]) { + case "S": + return "millisecond"; + case "s": + return "second"; + case "m": + return "minute"; + case "h": + return "hour"; + case "d": + return "day"; + case "w": + return "week"; + case "M": + return "month"; + case "y": + return "year"; + default: + return null; + } + }, tokenToString = (lildur) => (token) => { + const mapped = tokenToField(token); + if (mapped) { + return this.num(lildur.get(mapped), token.length); + } else { + return token; + } + }, tokens = _Formatter.parseFormat(fmt), realTokens = tokens.reduce( + (found, { literal, val }) => literal ? found : found.concat(val), + [] + ), collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t)); + return stringifyTokens2(tokens, tokenToString(collapsed)); + } + }; + var Invalid2 = class { + constructor(reason, explanation) { + this.reason = reason; + this.explanation = explanation; + } + toMessage() { + if (this.explanation) { + return `${this.reason}: ${this.explanation}`; + } else { + return this.reason; + } + } + }; + var ianaRegex2 = /[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/; + function combineRegexes2(...regexes) { + const full = regexes.reduce((f, r) => f + r.source, ""); + return RegExp(`^${full}$`); + } + function combineExtractors2(...extractors) { + return (m) => extractors.reduce( + ([mergedVals, mergedZone, cursor], ex) => { + const [val, zone, next] = ex(m, cursor); + return [{ ...mergedVals, ...val }, zone || mergedZone, next]; + }, + [{}, null, 1] + ).slice(0, 2); + } + function parse2(s3, ...patterns) { + if (s3 == null) { + return [null, null]; + } + for (const [regex2, extractor] of patterns) { + const m = regex2.exec(s3); + if (m) { + return extractor(m); + } + } + return [null, null]; + } + function simpleParse2(...keys) { + return (match3, cursor) => { + const ret = {}; + let i; + for (i = 0; i < keys.length; i++) { + ret[keys[i]] = parseInteger2(match3[cursor + i]); + } + return [ret, null, cursor + i]; + }; + } + var offsetRegex2 = /(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/; + var isoExtendedZone2 = `(?:${offsetRegex2.source}?(?:\\[(${ianaRegex2.source})\\])?)?`; + var isoTimeBaseRegex2 = /(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/; + var isoTimeRegex2 = RegExp(`${isoTimeBaseRegex2.source}${isoExtendedZone2}`); + var isoTimeExtensionRegex2 = RegExp(`(?:T${isoTimeRegex2.source})?`); + var isoYmdRegex2 = /([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/; + var isoWeekRegex2 = /(\d{4})-?W(\d\d)(?:-?(\d))?/; + var isoOrdinalRegex2 = /(\d{4})-?(\d{3})/; + var extractISOWeekData2 = simpleParse2("weekYear", "weekNumber", "weekDay"); + var extractISOOrdinalData2 = simpleParse2("year", "ordinal"); + var sqlYmdRegex2 = /(\d{4})-(\d\d)-(\d\d)/; + var sqlTimeRegex2 = RegExp( + `${isoTimeBaseRegex2.source} ?(?:${offsetRegex2.source}|(${ianaRegex2.source}))?` + ); + var sqlTimeExtensionRegex2 = RegExp(`(?: ${sqlTimeRegex2.source})?`); + function int2(match3, pos, fallback) { + const m = match3[pos]; + return isUndefined2(m) ? fallback : parseInteger2(m); + } + function extractISOYmd2(match3, cursor) { + const item = { + year: int2(match3, cursor), + month: int2(match3, cursor + 1, 1), + day: int2(match3, cursor + 2, 1) + }; + return [item, null, cursor + 3]; + } + function extractISOTime2(match3, cursor) { + const item = { + hours: int2(match3, cursor, 0), + minutes: int2(match3, cursor + 1, 0), + seconds: int2(match3, cursor + 2, 0), + milliseconds: parseMillis2(match3[cursor + 3]) + }; + return [item, null, cursor + 4]; + } + function extractISOOffset2(match3, cursor) { + const local = !match3[cursor] && !match3[cursor + 1], fullOffset = signedOffset2(match3[cursor + 1], match3[cursor + 2]), zone = local ? null : FixedOffsetZone2.instance(fullOffset); + return [{}, zone, cursor + 3]; + } + function extractIANAZone2(match3, cursor) { + const zone = match3[cursor] ? IANAZone2.create(match3[cursor]) : null; + return [{}, zone, cursor + 1]; + } + var isoTimeOnly2 = RegExp(`^T?${isoTimeBaseRegex2.source}$`); + var isoDuration2 = /^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/; + function extractISODuration2(match3) { + const [s3, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] = match3; + const hasNegativePrefix = s3[0] === "-"; + const negativeSeconds = secondStr && secondStr[0] === "-"; + const maybeNegate = (num, force = false) => num !== void 0 && (force || num && hasNegativePrefix) ? -num : num; + return [ + { + years: maybeNegate(parseFloating2(yearStr)), + months: maybeNegate(parseFloating2(monthStr)), + weeks: maybeNegate(parseFloating2(weekStr)), + days: maybeNegate(parseFloating2(dayStr)), + hours: maybeNegate(parseFloating2(hourStr)), + minutes: maybeNegate(parseFloating2(minuteStr)), + seconds: maybeNegate(parseFloating2(secondStr), secondStr === "-0"), + milliseconds: maybeNegate(parseMillis2(millisecondsStr), negativeSeconds) + } + ]; + } + var obsOffsets2 = { + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60 + }; + function fromStrings2(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + const result = { + year: yearStr.length === 2 ? untruncateYear2(parseInteger2(yearStr)) : parseInteger2(yearStr), + month: monthsShort2.indexOf(monthStr) + 1, + day: parseInteger2(dayStr), + hour: parseInteger2(hourStr), + minute: parseInteger2(minuteStr) + }; + if (secondStr) + result.second = parseInteger2(secondStr); + if (weekdayStr) { + result.weekday = weekdayStr.length > 3 ? weekdaysLong2.indexOf(weekdayStr) + 1 : weekdaysShort2.indexOf(weekdayStr) + 1; + } + return result; + } + var rfc28222 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/; + function extractRFC28222(match3) { + const [ + , + weekdayStr, + dayStr, + monthStr, + yearStr, + hourStr, + minuteStr, + secondStr, + obsOffset, + milOffset, + offHourStr, + offMinuteStr + ] = match3, result = fromStrings2(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + let offset3; + if (obsOffset) { + offset3 = obsOffsets2[obsOffset]; + } else if (milOffset) { + offset3 = 0; + } else { + offset3 = signedOffset2(offHourStr, offMinuteStr); + } + return [result, new FixedOffsetZone2(offset3)]; + } + function preprocessRFC28222(s3) { + return s3.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").trim(); + } + var rfc11232 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/; + var rfc8502 = /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/; + var ascii2 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/; + function extractRFC1123Or8502(match3) { + const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match3, result = fromStrings2(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + return [result, FixedOffsetZone2.utcInstance]; + } + function extractASCII2(match3) { + const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match3, result = fromStrings2(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + return [result, FixedOffsetZone2.utcInstance]; + } + var isoYmdWithTimeExtensionRegex2 = combineRegexes2(isoYmdRegex2, isoTimeExtensionRegex2); + var isoWeekWithTimeExtensionRegex2 = combineRegexes2(isoWeekRegex2, isoTimeExtensionRegex2); + var isoOrdinalWithTimeExtensionRegex2 = combineRegexes2(isoOrdinalRegex2, isoTimeExtensionRegex2); + var isoTimeCombinedRegex2 = combineRegexes2(isoTimeRegex2); + var extractISOYmdTimeAndOffset2 = combineExtractors2( + extractISOYmd2, + extractISOTime2, + extractISOOffset2, + extractIANAZone2 + ); + var extractISOWeekTimeAndOffset2 = combineExtractors2( + extractISOWeekData2, + extractISOTime2, + extractISOOffset2, + extractIANAZone2 + ); + var extractISOOrdinalDateAndTime2 = combineExtractors2( + extractISOOrdinalData2, + extractISOTime2, + extractISOOffset2, + extractIANAZone2 + ); + var extractISOTimeAndOffset2 = combineExtractors2( + extractISOTime2, + extractISOOffset2, + extractIANAZone2 + ); + function parseISODate2(s3) { + return parse2( + s3, + [isoYmdWithTimeExtensionRegex2, extractISOYmdTimeAndOffset2], + [isoWeekWithTimeExtensionRegex2, extractISOWeekTimeAndOffset2], + [isoOrdinalWithTimeExtensionRegex2, extractISOOrdinalDateAndTime2], + [isoTimeCombinedRegex2, extractISOTimeAndOffset2] + ); + } + function parseRFC2822Date2(s3) { + return parse2(preprocessRFC28222(s3), [rfc28222, extractRFC28222]); + } + function parseHTTPDate2(s3) { + return parse2( + s3, + [rfc11232, extractRFC1123Or8502], + [rfc8502, extractRFC1123Or8502], + [ascii2, extractASCII2] + ); + } + function parseISODuration2(s3) { + return parse2(s3, [isoDuration2, extractISODuration2]); + } + var extractISOTimeOnly2 = combineExtractors2(extractISOTime2); + function parseISOTimeOnly2(s3) { + return parse2(s3, [isoTimeOnly2, extractISOTimeOnly2]); + } + var sqlYmdWithTimeExtensionRegex2 = combineRegexes2(sqlYmdRegex2, sqlTimeExtensionRegex2); + var sqlTimeCombinedRegex2 = combineRegexes2(sqlTimeRegex2); + var extractISOTimeOffsetAndIANAZone2 = combineExtractors2( + extractISOTime2, + extractISOOffset2, + extractIANAZone2 + ); + function parseSQL2(s3) { + return parse2( + s3, + [sqlYmdWithTimeExtensionRegex2, extractISOYmdTimeAndOffset2], + [sqlTimeCombinedRegex2, extractISOTimeOffsetAndIANAZone2] + ); + } + var INVALID$2 = "Invalid Duration"; + var lowOrderMatrix2 = { + weeks: { + days: 7, + hours: 7 * 24, + minutes: 7 * 24 * 60, + seconds: 7 * 24 * 60 * 60, + milliseconds: 7 * 24 * 60 * 60 * 1e3 + }, + days: { + hours: 24, + minutes: 24 * 60, + seconds: 24 * 60 * 60, + milliseconds: 24 * 60 * 60 * 1e3 + }, + hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1e3 }, + minutes: { seconds: 60, milliseconds: 60 * 1e3 }, + seconds: { milliseconds: 1e3 } + }; + var casualMatrix2 = { + years: { + quarters: 4, + months: 12, + weeks: 52, + days: 365, + hours: 365 * 24, + minutes: 365 * 24 * 60, + seconds: 365 * 24 * 60 * 60, + milliseconds: 365 * 24 * 60 * 60 * 1e3 + }, + quarters: { + months: 3, + weeks: 13, + days: 91, + hours: 91 * 24, + minutes: 91 * 24 * 60, + seconds: 91 * 24 * 60 * 60, + milliseconds: 91 * 24 * 60 * 60 * 1e3 + }, + months: { + weeks: 4, + days: 30, + hours: 30 * 24, + minutes: 30 * 24 * 60, + seconds: 30 * 24 * 60 * 60, + milliseconds: 30 * 24 * 60 * 60 * 1e3 + }, + ...lowOrderMatrix2 + }; + var daysInYearAccurate2 = 146097 / 400; + var daysInMonthAccurate2 = 146097 / 4800; + var accurateMatrix2 = { + years: { + quarters: 4, + months: 12, + weeks: daysInYearAccurate2 / 7, + days: daysInYearAccurate2, + hours: daysInYearAccurate2 * 24, + minutes: daysInYearAccurate2 * 24 * 60, + seconds: daysInYearAccurate2 * 24 * 60 * 60, + milliseconds: daysInYearAccurate2 * 24 * 60 * 60 * 1e3 + }, + quarters: { + months: 3, + weeks: daysInYearAccurate2 / 28, + days: daysInYearAccurate2 / 4, + hours: daysInYearAccurate2 * 24 / 4, + minutes: daysInYearAccurate2 * 24 * 60 / 4, + seconds: daysInYearAccurate2 * 24 * 60 * 60 / 4, + milliseconds: daysInYearAccurate2 * 24 * 60 * 60 * 1e3 / 4 + }, + months: { + weeks: daysInMonthAccurate2 / 7, + days: daysInMonthAccurate2, + hours: daysInMonthAccurate2 * 24, + minutes: daysInMonthAccurate2 * 24 * 60, + seconds: daysInMonthAccurate2 * 24 * 60 * 60, + milliseconds: daysInMonthAccurate2 * 24 * 60 * 60 * 1e3 + }, + ...lowOrderMatrix2 + }; + var orderedUnits$1 = [ + "years", + "quarters", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ]; + var reverseUnits2 = orderedUnits$1.slice(0).reverse(); + function clone$1(dur, alts, clear = false) { + const conf = { + values: clear ? alts.values : { ...dur.values, ...alts.values || {} }, + loc: dur.loc.clone(alts.loc), + conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy, + matrix: alts.matrix || dur.matrix + }; + return new Duration2(conf); + } + function durationToMillis2(matrix, vals) { + var _a; + let sum = (_a = vals.milliseconds) != null ? _a : 0; + for (const unit of reverseUnits2.slice(1)) { + if (vals[unit]) { + sum += vals[unit] * matrix[unit]["milliseconds"]; + } + } + return sum; + } + function normalizeValues2(matrix, vals) { + const factor = durationToMillis2(matrix, vals) < 0 ? -1 : 1; + orderedUnits$1.reduceRight((previous, current) => { + if (!isUndefined2(vals[current])) { + if (previous) { + const previousVal = vals[previous] * factor; + const conv = matrix[current][previous]; + const rollUp = Math.floor(previousVal / conv); + vals[current] += rollUp * factor; + vals[previous] -= rollUp * conv * factor; + } + return current; + } else { + return previous; + } + }, null); + orderedUnits$1.reduce((previous, current) => { + if (!isUndefined2(vals[current])) { + if (previous) { + const fraction = vals[previous] % 1; + vals[previous] -= fraction; + vals[current] += fraction * matrix[previous][current]; + } + return current; + } else { + return previous; + } + }, null); + } + function removeZeroes2(vals) { + const newVals = {}; + for (const [key, value] of Object.entries(vals)) { + if (value !== 0) { + newVals[key] = value; + } + } + return newVals; + } + var Duration2 = class _Duration { + /** + * @private + */ + constructor(config) { + const accurate = config.conversionAccuracy === "longterm" || false; + let matrix = accurate ? accurateMatrix2 : casualMatrix2; + if (config.matrix) { + matrix = config.matrix; + } + this.values = config.values; + this.loc = config.loc || Locale2.create(); + this.conversionAccuracy = accurate ? "longterm" : "casual"; + this.invalid = config.invalid || null; + this.matrix = matrix; + this.isLuxonDuration = true; + } + /** + * Create Duration from a number of milliseconds. + * @param {number} count of milliseconds + * @param {Object} opts - options for parsing + * @param {string} [opts.locale='en-US'] - the locale to use + * @param {string} opts.numberingSystem - the numbering system to use + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @return {Duration} + */ + static fromMillis(count, opts) { + return _Duration.fromObject({ milliseconds: count }, opts); + } + /** + * Create a Duration from a JavaScript object with keys like 'years' and 'hours'. + * If this object is empty then a zero milliseconds duration is returned. + * @param {Object} obj - the object to create the DateTime from + * @param {number} obj.years + * @param {number} obj.quarters + * @param {number} obj.months + * @param {number} obj.weeks + * @param {number} obj.days + * @param {number} obj.hours + * @param {number} obj.minutes + * @param {number} obj.seconds + * @param {number} obj.milliseconds + * @param {Object} [opts=[]] - options for creating this Duration + * @param {string} [opts.locale='en-US'] - the locale to use + * @param {string} opts.numberingSystem - the numbering system to use + * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use + * @param {string} [opts.matrix=Object] - the custom conversion system to use + * @return {Duration} + */ + static fromObject(obj, opts = {}) { + if (obj == null || typeof obj !== "object") { + throw new InvalidArgumentError2( + `Duration.fromObject: argument expected to be an object, got ${obj === null ? "null" : typeof obj}` + ); + } + return new _Duration({ + values: normalizeObject2(obj, _Duration.normalizeUnit), + loc: Locale2.fromObject(opts), + conversionAccuracy: opts.conversionAccuracy, + matrix: opts.matrix + }); + } + /** + * Create a Duration from DurationLike. + * + * @param {Object | number | Duration} durationLike + * One of: + * - object with keys like 'years' and 'hours'. + * - number representing milliseconds + * - Duration instance + * @return {Duration} + */ + static fromDurationLike(durationLike) { + if (isNumber2(durationLike)) { + return _Duration.fromMillis(durationLike); + } else if (_Duration.isDuration(durationLike)) { + return durationLike; + } else if (typeof durationLike === "object") { + return _Duration.fromObject(durationLike); + } else { + throw new InvalidArgumentError2( + `Unknown duration argument ${durationLike} of type ${typeof durationLike}` + ); + } + } + /** + * Create a Duration from an ISO 8601 duration string. + * @param {string} text - text to parse + * @param {Object} opts - options for parsing + * @param {string} [opts.locale='en-US'] - the locale to use + * @param {string} opts.numberingSystem - the numbering system to use + * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use + * @param {string} [opts.matrix=Object] - the preset conversion system to use + * @see https://en.wikipedia.org/wiki/ISO_8601#Durations + * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 } + * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 } + * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 } + * @return {Duration} + */ + static fromISO(text2, opts) { + const [parsed] = parseISODuration2(text2); + if (parsed) { + return _Duration.fromObject(parsed, opts); + } else { + return _Duration.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); + } + } + /** + * Create a Duration from an ISO 8601 time string. + * @param {string} text - text to parse + * @param {Object} opts - options for parsing + * @param {string} [opts.locale='en-US'] - the locale to use + * @param {string} opts.numberingSystem - the numbering system to use + * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use + * @param {string} [opts.matrix=Object] - the conversion system to use + * @see https://en.wikipedia.org/wiki/ISO_8601#Times + * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 } + * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 } + * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 } + * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 } + * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 } + * @return {Duration} + */ + static fromISOTime(text2, opts) { + const [parsed] = parseISOTimeOnly2(text2); + if (parsed) { + return _Duration.fromObject(parsed, opts); + } else { + return _Duration.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); + } + } + /** + * Create an invalid Duration. + * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent + * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information + * @return {Duration} + */ + static invalid(reason, explanation = null) { + if (!reason) { + throw new InvalidArgumentError2("need to specify a reason the Duration is invalid"); + } + const invalid = reason instanceof Invalid2 ? reason : new Invalid2(reason, explanation); + if (Settings2.throwOnInvalid) { + throw new InvalidDurationError2(invalid); + } else { + return new _Duration({ invalid }); + } + } + /** + * @private + */ + static normalizeUnit(unit) { + const normalized = { + year: "years", + years: "years", + quarter: "quarters", + quarters: "quarters", + month: "months", + months: "months", + week: "weeks", + weeks: "weeks", + day: "days", + days: "days", + hour: "hours", + hours: "hours", + minute: "minutes", + minutes: "minutes", + second: "seconds", + seconds: "seconds", + millisecond: "milliseconds", + milliseconds: "milliseconds" + }[unit ? unit.toLowerCase() : unit]; + if (!normalized) + throw new InvalidUnitError2(unit); + return normalized; + } + /** + * Check if an object is a Duration. Works across context boundaries + * @param {object} o + * @return {boolean} + */ + static isDuration(o) { + return o && o.isLuxonDuration || false; + } + /** + * Get the locale of a Duration, such 'en-GB' + * @type {string} + */ + get locale() { + return this.isValid ? this.loc.locale : null; + } + /** + * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration + * + * @type {string} + */ + get numberingSystem() { + return this.isValid ? this.loc.numberingSystem : null; + } + /** + * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens: + * * `S` for milliseconds + * * `s` for seconds + * * `m` for minutes + * * `h` for hours + * * `d` for days + * * `w` for weeks + * * `M` for months + * * `y` for years + * Notes: + * * Add padding by repeating the token, e.g. "yy" pads the years to two digits, "hhhh" pads the hours out to four digits + * * Tokens can be escaped by wrapping with single quotes. + * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting. + * @param {string} fmt - the format string + * @param {Object} opts - options + * @param {boolean} [opts.floor=true] - floor numerical values + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("y d s") //=> "1 6 2" + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("yy dd sss") //=> "01 06 002" + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("M S") //=> "12 518402000" + * @return {string} + */ + toFormat(fmt, opts = {}) { + const fmtOpts = { + ...opts, + floor: opts.round !== false && opts.floor !== false + }; + return this.isValid ? Formatter2.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID$2; + } + /** + * Returns a string representation of a Duration with all units included. + * To modify its behavior use the `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat + * @param opts - On option object to override the formatting. Accepts the same keys as the options parameter of the native `Int.NumberFormat` constructor, as well as `listStyle`. + * @example + * ```js + * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 }) + * dur.toHuman() //=> '1 day, 5 hours, 6 minutes' + * dur.toHuman({ listStyle: "long" }) //=> '1 day, 5 hours, and 6 minutes' + * dur.toHuman({ unitDisplay: "short" }) //=> '1 day, 5 hr, 6 min' + * ``` + */ + toHuman(opts = {}) { + if (!this.isValid) + return INVALID$2; + const l3 = orderedUnits$1.map((unit) => { + const val = this.values[unit]; + if (isUndefined2(val)) { + return null; + } + return this.loc.numberFormatter({ style: "unit", unitDisplay: "long", ...opts, unit: unit.slice(0, -1) }).format(val); + }).filter((n3) => n3); + return this.loc.listFormatter({ type: "conjunction", style: opts.listStyle || "narrow", ...opts }).format(l3); + } + /** + * Returns a JavaScript object with this Duration's values. + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 } + * @return {Object} + */ + toObject() { + if (!this.isValid) + return {}; + return { ...this.values }; + } + /** + * Returns an ISO 8601-compliant string representation of this Duration. + * @see https://en.wikipedia.org/wiki/ISO_8601#Durations + * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S' + * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S' + * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M' + * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M' + * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S' + * @return {string} + */ + toISO() { + if (!this.isValid) + return null; + let s3 = "P"; + if (this.years !== 0) + s3 += this.years + "Y"; + if (this.months !== 0 || this.quarters !== 0) + s3 += this.months + this.quarters * 3 + "M"; + if (this.weeks !== 0) + s3 += this.weeks + "W"; + if (this.days !== 0) + s3 += this.days + "D"; + if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0) + s3 += "T"; + if (this.hours !== 0) + s3 += this.hours + "H"; + if (this.minutes !== 0) + s3 += this.minutes + "M"; + if (this.seconds !== 0 || this.milliseconds !== 0) + s3 += roundTo2(this.seconds + this.milliseconds / 1e3, 3) + "S"; + if (s3 === "P") + s3 += "T0S"; + return s3; + } + /** + * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day. + * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours. + * @see https://en.wikipedia.org/wiki/ISO_8601#Times + * @param {Object} opts - options + * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0 + * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0 + * @param {boolean} [opts.includePrefix=false] - include the `T` prefix + * @param {string} [opts.format='extended'] - choose between the basic and extended format + * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000' + * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00' + * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00' + * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000' + * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000' + * @return {string} + */ + toISOTime(opts = {}) { + if (!this.isValid) + return null; + const millis = this.toMillis(); + if (millis < 0 || millis >= 864e5) + return null; + opts = { + suppressMilliseconds: false, + suppressSeconds: false, + includePrefix: false, + format: "extended", + ...opts, + includeOffset: false + }; + const dateTime = DateTime2.fromMillis(millis, { zone: "UTC" }); + return dateTime.toISOTime(opts); + } + /** + * Returns an ISO 8601 representation of this Duration appropriate for use in JSON. + * @return {string} + */ + toJSON() { + return this.toISO(); + } + /** + * Returns an ISO 8601 representation of this Duration appropriate for use in debugging. + * @return {string} + */ + toString() { + return this.toISO(); + } + /** + * Returns an milliseconds value of this Duration. + * @return {number} + */ + toMillis() { + if (!this.isValid) + return NaN; + return durationToMillis2(this.matrix, this.values); + } + /** + * Returns an milliseconds value of this Duration. Alias of {@link toMillis} + * @return {number} + */ + valueOf() { + return this.toMillis(); + } + /** + * Make this Duration longer by the specified amount. Return a newly-constructed Duration. + * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + * @return {Duration} + */ + plus(duration) { + if (!this.isValid) + return this; + const dur = _Duration.fromDurationLike(duration), result = {}; + for (const k of orderedUnits$1) { + if (hasOwnProperty2(dur.values, k) || hasOwnProperty2(this.values, k)) { + result[k] = dur.get(k) + this.get(k); + } + } + return clone$1(this, { values: result }, true); + } + /** + * Make this Duration shorter by the specified amount. Return a newly-constructed Duration. + * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + * @return {Duration} + */ + minus(duration) { + if (!this.isValid) + return this; + const dur = _Duration.fromDurationLike(duration); + return this.plus(dur.negate()); + } + /** + * Scale this Duration by the specified amount. Return a newly-constructed Duration. + * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number. + * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 } + * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === "hours" ? x * 2 : x) //=> { hours: 2, minutes: 30 } + * @return {Duration} + */ + mapUnits(fn) { + if (!this.isValid) + return this; + const result = {}; + for (const k of Object.keys(this.values)) { + result[k] = asNumber2(fn(this.values[k], k)); + } + return clone$1(this, { values: result }, true); + } + /** + * Get the value of unit. + * @param {string} unit - a unit such as 'minute' or 'day' + * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2 + * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0 + * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3 + * @return {number} + */ + get(unit) { + return this[_Duration.normalizeUnit(unit)]; + } + /** + * "Set" the values of specified units. Return a newly-constructed Duration. + * @param {Object} values - a mapping of units to numbers + * @example dur.set({ years: 2017 }) + * @example dur.set({ hours: 8, minutes: 30 }) + * @return {Duration} + */ + set(values) { + if (!this.isValid) + return this; + const mixed = { ...this.values, ...normalizeObject2(values, _Duration.normalizeUnit) }; + return clone$1(this, { values: mixed }); + } + /** + * "Set" the locale and/or numberingSystem. Returns a newly-constructed Duration. + * @example dur.reconfigure({ locale: 'en-GB' }) + * @return {Duration} + */ + reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) { + const loc = this.loc.clone({ locale, numberingSystem }); + const opts = { loc, matrix, conversionAccuracy }; + return clone$1(this, opts); + } + /** + * Return the length of the duration in the specified unit. + * @param {string} unit - a unit such as 'minutes' or 'days' + * @example Duration.fromObject({years: 1}).as('days') //=> 365 + * @example Duration.fromObject({years: 1}).as('months') //=> 12 + * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5 + * @return {number} + */ + as(unit) { + return this.isValid ? this.shiftTo(unit).get(unit) : NaN; + } + /** + * Reduce this Duration to its canonical representation in its current units. + * Assuming the overall value of the Duration is positive, this means: + * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example) + * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise + * the overall value would be negative, see second example) + * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example) + * + * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`. + * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 } + * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 } + * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 } + * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 } + * @return {Duration} + */ + normalize() { + if (!this.isValid) + return this; + const vals = this.toObject(); + normalizeValues2(this.matrix, vals); + return clone$1(this, { values: vals }, true); + } + /** + * Rescale units to its largest representation + * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 } + * @return {Duration} + */ + rescale() { + if (!this.isValid) + return this; + const vals = removeZeroes2(this.normalize().shiftToAll().toObject()); + return clone$1(this, { values: vals }, true); + } + /** + * Convert this Duration into its representation in a different set of units. + * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 } + * @return {Duration} + */ + shiftTo(...units) { + if (!this.isValid) + return this; + if (units.length === 0) { + return this; + } + units = units.map((u) => _Duration.normalizeUnit(u)); + const built = {}, accumulated = {}, vals = this.toObject(); + let lastUnit; + for (const k of orderedUnits$1) { + if (units.indexOf(k) >= 0) { + lastUnit = k; + let own = 0; + for (const ak in accumulated) { + own += this.matrix[ak][k] * accumulated[ak]; + accumulated[ak] = 0; + } + if (isNumber2(vals[k])) { + own += vals[k]; + } + const i = Math.trunc(own); + built[k] = i; + accumulated[k] = (own * 1e3 - i * 1e3) / 1e3; + } else if (isNumber2(vals[k])) { + accumulated[k] = vals[k]; + } + } + for (const key in accumulated) { + if (accumulated[key] !== 0) { + built[lastUnit] += key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key]; + } + } + normalizeValues2(this.matrix, built); + return clone$1(this, { values: built }, true); + } + /** + * Shift this Duration to all available units. + * Same as shiftTo("years", "months", "weeks", "days", "hours", "minutes", "seconds", "milliseconds") + * @return {Duration} + */ + shiftToAll() { + if (!this.isValid) + return this; + return this.shiftTo( + "years", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ); + } + /** + * Return the negative of this Duration. + * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 } + * @return {Duration} + */ + negate() { + if (!this.isValid) + return this; + const negated = {}; + for (const k of Object.keys(this.values)) { + negated[k] = this.values[k] === 0 ? 0 : -this.values[k]; + } + return clone$1(this, { values: negated }, true); + } + /** + * Get the years. + * @type {number} + */ + get years() { + return this.isValid ? this.values.years || 0 : NaN; + } + /** + * Get the quarters. + * @type {number} + */ + get quarters() { + return this.isValid ? this.values.quarters || 0 : NaN; + } + /** + * Get the months. + * @type {number} + */ + get months() { + return this.isValid ? this.values.months || 0 : NaN; + } + /** + * Get the weeks + * @type {number} + */ + get weeks() { + return this.isValid ? this.values.weeks || 0 : NaN; + } + /** + * Get the days. + * @type {number} + */ + get days() { + return this.isValid ? this.values.days || 0 : NaN; + } + /** + * Get the hours. + * @type {number} + */ + get hours() { + return this.isValid ? this.values.hours || 0 : NaN; + } + /** + * Get the minutes. + * @type {number} + */ + get minutes() { + return this.isValid ? this.values.minutes || 0 : NaN; + } + /** + * Get the seconds. + * @return {number} + */ + get seconds() { + return this.isValid ? this.values.seconds || 0 : NaN; + } + /** + * Get the milliseconds. + * @return {number} + */ + get milliseconds() { + return this.isValid ? this.values.milliseconds || 0 : NaN; + } + /** + * Returns whether the Duration is invalid. Invalid durations are returned by diff operations + * on invalid DateTimes or Intervals. + * @return {boolean} + */ + get isValid() { + return this.invalid === null; + } + /** + * Returns an error code if this Duration became invalid, or null if the Duration is valid + * @return {string} + */ + get invalidReason() { + return this.invalid ? this.invalid.reason : null; + } + /** + * Returns an explanation of why this Duration became invalid, or null if the Duration is valid + * @type {string} + */ + get invalidExplanation() { + return this.invalid ? this.invalid.explanation : null; + } + /** + * Equality check + * Two Durations are equal iff they have the same units and the same values for each unit. + * @param {Duration} other + * @return {boolean} + */ + equals(other) { + if (!this.isValid || !other.isValid) { + return false; + } + if (!this.loc.equals(other.loc)) { + return false; + } + function eq(v1, v2) { + if (v1 === void 0 || v1 === 0) + return v2 === void 0 || v2 === 0; + return v1 === v2; + } + for (const u of orderedUnits$1) { + if (!eq(this.values[u], other.values[u])) { + return false; + } + } + return true; + } + }; + var INVALID$1 = "Invalid Interval"; + function validateStartEnd2(start, end) { + if (!start || !start.isValid) { + return Interval2.invalid("missing or invalid start"); + } else if (!end || !end.isValid) { + return Interval2.invalid("missing or invalid end"); + } else if (end < start) { + return Interval2.invalid( + "end before start", + `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}` + ); + } else { + return null; + } + } + var Interval2 = class _Interval { + /** + * @private + */ + constructor(config) { + this.s = config.start; + this.e = config.end; + this.invalid = config.invalid || null; + this.isLuxonInterval = true; + } + /** + * Create an invalid Interval. + * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent + * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information + * @return {Interval} + */ + static invalid(reason, explanation = null) { + if (!reason) { + throw new InvalidArgumentError2("need to specify a reason the Interval is invalid"); + } + const invalid = reason instanceof Invalid2 ? reason : new Invalid2(reason, explanation); + if (Settings2.throwOnInvalid) { + throw new InvalidIntervalError2(invalid); + } else { + return new _Interval({ invalid }); + } + } + /** + * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end. + * @param {DateTime|Date|Object} start + * @param {DateTime|Date|Object} end + * @return {Interval} + */ + static fromDateTimes(start, end) { + const builtStart = friendlyDateTime2(start), builtEnd = friendlyDateTime2(end); + const validateError = validateStartEnd2(builtStart, builtEnd); + if (validateError == null) { + return new _Interval({ + start: builtStart, + end: builtEnd + }); + } else { + return validateError; + } + } + /** + * Create an Interval from a start DateTime and a Duration to extend to. + * @param {DateTime|Date|Object} start + * @param {Duration|Object|number} duration - the length of the Interval. + * @return {Interval} + */ + static after(start, duration) { + const dur = Duration2.fromDurationLike(duration), dt = friendlyDateTime2(start); + return _Interval.fromDateTimes(dt, dt.plus(dur)); + } + /** + * Create an Interval from an end DateTime and a Duration to extend backwards to. + * @param {DateTime|Date|Object} end + * @param {Duration|Object|number} duration - the length of the Interval. + * @return {Interval} + */ + static before(end, duration) { + const dur = Duration2.fromDurationLike(duration), dt = friendlyDateTime2(end); + return _Interval.fromDateTimes(dt.minus(dur), dt); + } + /** + * Create an Interval from an ISO 8601 string. + * Accepts `/`, `/`, and `/` formats. + * @param {string} text - the ISO string to parse + * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO} + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @return {Interval} + */ + static fromISO(text2, opts) { + const [s3, e] = (text2 || "").split("/", 2); + if (s3 && e) { + let start, startIsValid; + try { + start = DateTime2.fromISO(s3, opts); + startIsValid = start.isValid; + } catch (e2) { + startIsValid = false; + } + let end, endIsValid; + try { + end = DateTime2.fromISO(e, opts); + endIsValid = end.isValid; + } catch (e2) { + endIsValid = false; + } + if (startIsValid && endIsValid) { + return _Interval.fromDateTimes(start, end); + } + if (startIsValid) { + const dur = Duration2.fromISO(e, opts); + if (dur.isValid) { + return _Interval.after(start, dur); + } + } else if (endIsValid) { + const dur = Duration2.fromISO(s3, opts); + if (dur.isValid) { + return _Interval.before(end, dur); + } + } + } + return _Interval.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); + } + /** + * Check if an object is an Interval. Works across context boundaries + * @param {object} o + * @return {boolean} + */ + static isInterval(o) { + return o && o.isLuxonInterval || false; + } + /** + * Returns the start of the Interval + * @type {DateTime} + */ + get start() { + return this.isValid ? this.s : null; + } + /** + * Returns the end of the Interval + * @type {DateTime} + */ + get end() { + return this.isValid ? this.e : null; + } + /** + * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'. + * @type {boolean} + */ + get isValid() { + return this.invalidReason === null; + } + /** + * Returns an error code if this Interval is invalid, or null if the Interval is valid + * @type {string} + */ + get invalidReason() { + return this.invalid ? this.invalid.reason : null; + } + /** + * Returns an explanation of why this Interval became invalid, or null if the Interval is valid + * @type {string} + */ + get invalidExplanation() { + return this.invalid ? this.invalid.explanation : null; + } + /** + * Returns the length of the Interval in the specified unit. + * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in. + * @return {number} + */ + length(unit = "milliseconds") { + return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN; + } + /** + * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part. + * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day' + * asks 'what dates are included in this interval?', not 'how many days long is this interval?' + * @param {string} [unit='milliseconds'] - the unit of time to count. + * @return {number} + */ + count(unit = "milliseconds") { + if (!this.isValid) + return NaN; + const start = this.start.startOf(unit), end = this.end.startOf(unit); + return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf()); + } + /** + * Returns whether this Interval's start and end are both in the same unit of time + * @param {string} unit - the unit of time to check sameness on + * @return {boolean} + */ + hasSame(unit) { + return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false; + } + /** + * Return whether this Interval has the same start and end DateTimes. + * @return {boolean} + */ + isEmpty() { + return this.s.valueOf() === this.e.valueOf(); + } + /** + * Return whether this Interval's start is after the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + isAfter(dateTime) { + if (!this.isValid) + return false; + return this.s > dateTime; + } + /** + * Return whether this Interval's end is before the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + isBefore(dateTime) { + if (!this.isValid) + return false; + return this.e <= dateTime; + } + /** + * Return whether this Interval contains the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + contains(dateTime) { + if (!this.isValid) + return false; + return this.s <= dateTime && this.e > dateTime; + } + /** + * "Sets" the start and/or end dates. Returns a newly-constructed Interval. + * @param {Object} values - the values to set + * @param {DateTime} values.start - the starting DateTime + * @param {DateTime} values.end - the ending DateTime + * @return {Interval} + */ + set({ start, end } = {}) { + if (!this.isValid) + return this; + return _Interval.fromDateTimes(start || this.s, end || this.e); + } + /** + * Split this Interval at each of the specified DateTimes + * @param {...DateTime} dateTimes - the unit of time to count. + * @return {Array} + */ + splitAt(...dateTimes) { + if (!this.isValid) + return []; + const sorted = dateTimes.map(friendlyDateTime2).filter((d) => this.contains(d)).sort(), results = []; + let { s: s3 } = this, i = 0; + while (s3 < this.e) { + const added = sorted[i] || this.e, next = +added > +this.e ? this.e : added; + results.push(_Interval.fromDateTimes(s3, next)); + s3 = next; + i += 1; + } + return results; + } + /** + * Split this Interval into smaller Intervals, each of the specified length. + * Left over time is grouped into a smaller interval + * @param {Duration|Object|number} duration - The length of each resulting interval. + * @return {Array} + */ + splitBy(duration) { + const dur = Duration2.fromDurationLike(duration); + if (!this.isValid || !dur.isValid || dur.as("milliseconds") === 0) { + return []; + } + let { s: s3 } = this, idx = 1, next; + const results = []; + while (s3 < this.e) { + const added = this.start.plus(dur.mapUnits((x) => x * idx)); + next = +added > +this.e ? this.e : added; + results.push(_Interval.fromDateTimes(s3, next)); + s3 = next; + idx += 1; + } + return results; + } + /** + * Split this Interval into the specified number of smaller intervals. + * @param {number} numberOfParts - The number of Intervals to divide the Interval into. + * @return {Array} + */ + divideEqually(numberOfParts) { + if (!this.isValid) + return []; + return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts); + } + /** + * Return whether this Interval overlaps with the specified Interval + * @param {Interval} other + * @return {boolean} + */ + overlaps(other) { + return this.e > other.s && this.s < other.e; + } + /** + * Return whether this Interval's end is adjacent to the specified Interval's start. + * @param {Interval} other + * @return {boolean} + */ + abutsStart(other) { + if (!this.isValid) + return false; + return +this.e === +other.s; + } + /** + * Return whether this Interval's start is adjacent to the specified Interval's end. + * @param {Interval} other + * @return {boolean} + */ + abutsEnd(other) { + if (!this.isValid) + return false; + return +other.e === +this.s; + } + /** + * Return whether this Interval engulfs the start and end of the specified Interval. + * @param {Interval} other + * @return {boolean} + */ + engulfs(other) { + if (!this.isValid) + return false; + return this.s <= other.s && this.e >= other.e; + } + /** + * Return whether this Interval has the same start and end as the specified Interval. + * @param {Interval} other + * @return {boolean} + */ + equals(other) { + if (!this.isValid || !other.isValid) { + return false; + } + return this.s.equals(other.s) && this.e.equals(other.e); + } + /** + * Return an Interval representing the intersection of this Interval and the specified Interval. + * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals. + * Returns null if the intersection is empty, meaning, the intervals don't intersect. + * @param {Interval} other + * @return {Interval} + */ + intersection(other) { + if (!this.isValid) + return this; + const s3 = this.s > other.s ? this.s : other.s, e = this.e < other.e ? this.e : other.e; + if (s3 >= e) { + return null; + } else { + return _Interval.fromDateTimes(s3, e); + } + } + /** + * Return an Interval representing the union of this Interval and the specified Interval. + * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals. + * @param {Interval} other + * @return {Interval} + */ + union(other) { + if (!this.isValid) + return this; + const s3 = this.s < other.s ? this.s : other.s, e = this.e > other.e ? this.e : other.e; + return _Interval.fromDateTimes(s3, e); + } + /** + * Merge an array of Intervals into a equivalent minimal set of Intervals. + * Combines overlapping and adjacent Intervals. + * @param {Array} intervals + * @return {Array} + */ + static merge(intervals) { + const [found, final] = intervals.sort((a, b) => a.s - b.s).reduce( + ([sofar, current], item) => { + if (!current) { + return [sofar, item]; + } else if (current.overlaps(item) || current.abutsStart(item)) { + return [sofar, current.union(item)]; + } else { + return [sofar.concat([current]), item]; + } + }, + [[], null] + ); + if (final) { + found.push(final); + } + return found; + } + /** + * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals. + * @param {Array} intervals + * @return {Array} + */ + static xor(intervals) { + let start = null, currentCount = 0; + const results = [], ends = intervals.map((i) => [ + { time: i.s, type: "s" }, + { time: i.e, type: "e" } + ]), flattened = Array.prototype.concat(...ends), arr = flattened.sort((a, b) => a.time - b.time); + for (const i of arr) { + currentCount += i.type === "s" ? 1 : -1; + if (currentCount === 1) { + start = i.time; + } else { + if (start && +start !== +i.time) { + results.push(_Interval.fromDateTimes(start, i.time)); + } + start = null; + } + } + return _Interval.merge(results); + } + /** + * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals. + * @param {...Interval} intervals + * @return {Array} + */ + difference(...intervals) { + return _Interval.xor([this].concat(intervals)).map((i) => this.intersection(i)).filter((i) => i && !i.isEmpty()); + } + /** + * Returns a string representation of this Interval appropriate for debugging. + * @return {string} + */ + toString() { + if (!this.isValid) + return INVALID$1; + return `[${this.s.toISO()} \u2013 ${this.e.toISO()})`; + } + /** + * Returns a localized string representing this Interval. Accepts the same options as the + * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as + * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method + * is browser-specific, but in general it will return an appropriate representation of the + * Interval in the assigned locale. Defaults to the system's locale if no locale has been + * specified. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or + * Intl.DateTimeFormat constructor options. + * @param {Object} opts - Options to override the configuration of the start DateTime. + * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022 + * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022 + * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022 + * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM + * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p + * @return {string} + */ + toLocaleString(formatOpts = DATE_SHORT2, opts = {}) { + return this.isValid ? Formatter2.create(this.s.loc.clone(opts), formatOpts).formatInterval(this) : INVALID$1; + } + /** + * Returns an ISO 8601-compliant string representation of this Interval. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @param {Object} opts - The same options as {@link DateTime#toISO} + * @return {string} + */ + toISO(opts) { + if (!this.isValid) + return INVALID$1; + return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`; + } + /** + * Returns an ISO 8601-compliant string representation of date of this Interval. + * The time components are ignored. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @return {string} + */ + toISODate() { + if (!this.isValid) + return INVALID$1; + return `${this.s.toISODate()}/${this.e.toISODate()}`; + } + /** + * Returns an ISO 8601-compliant string representation of time of this Interval. + * The date components are ignored. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @param {Object} opts - The same options as {@link DateTime#toISO} + * @return {string} + */ + toISOTime(opts) { + if (!this.isValid) + return INVALID$1; + return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`; + } + /** + * Returns a string representation of this Interval formatted according to the specified format + * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible + * formatting tool. + * @param {string} dateFormat - The format string. This string formats the start and end time. + * See {@link DateTime#toFormat} for details. + * @param {Object} opts - Options. + * @param {string} [opts.separator = ' – '] - A separator to place between the start and end + * representations. + * @return {string} + */ + toFormat(dateFormat, { separator = " \u2013 " } = {}) { + if (!this.isValid) + return INVALID$1; + return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`; + } + /** + * Return a Duration representing the time spanned by this interval. + * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration. + * @param {Object} opts - options that affect the creation of the Duration + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 } + * @return {Duration} + */ + toDuration(unit, opts) { + if (!this.isValid) { + return Duration2.invalid(this.invalidReason); + } + return this.e.diff(this.s, unit, opts); + } + /** + * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes + * @param {function} mapFn + * @return {Interval} + * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC()) + * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 })) + */ + mapEndpoints(mapFn) { + return _Interval.fromDateTimes(mapFn(this.s), mapFn(this.e)); + } + }; + var Info2 = class { + /** + * Return whether the specified zone contains a DST. + * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone. + * @return {boolean} + */ + static hasDST(zone = Settings2.defaultZone) { + const proto = DateTime2.now().setZone(zone).set({ month: 12 }); + return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset; + } + /** + * Return whether the specified zone is a valid IANA specifier. + * @param {string} zone - Zone to check + * @return {boolean} + */ + static isValidIANAZone(zone) { + return IANAZone2.isValidZone(zone); + } + /** + * Converts the input into a {@link Zone} instance. + * + * * If `input` is already a Zone instance, it is returned unchanged. + * * If `input` is a string containing a valid time zone name, a Zone instance + * with that name is returned. + * * If `input` is a string that doesn't refer to a known time zone, a Zone + * instance with {@link Zone#isValid} == false is returned. + * * If `input is a number, a Zone instance with the specified fixed offset + * in minutes is returned. + * * If `input` is `null` or `undefined`, the default zone is returned. + * @param {string|Zone|number} [input] - the value to be converted + * @return {Zone} + */ + static normalizeZone(input) { + return normalizeZone2(input, Settings2.defaultZone); + } + /** + * Return an array of standalone month names. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param {string} [length='long'] - the length of the month representation, such as "numeric", "2-digit", "narrow", "short", "long" + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @param {string} [opts.locObj=null] - an existing locale object to use + * @param {string} [opts.outputCalendar='gregory'] - the calendar + * @example Info.months()[0] //=> 'January' + * @example Info.months('short')[0] //=> 'Jan' + * @example Info.months('numeric')[0] //=> '1' + * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.' + * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١' + * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I' + * @return {Array} + */ + static months(length = "long", { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) { + return (locObj || Locale2.create(locale, numberingSystem, outputCalendar)).months(length); + } + /** + * Return an array of format month names. + * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that + * changes the string. + * See {@link Info#months} + * @param {string} [length='long'] - the length of the month representation, such as "numeric", "2-digit", "narrow", "short", "long" + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @param {string} [opts.locObj=null] - an existing locale object to use + * @param {string} [opts.outputCalendar='gregory'] - the calendar + * @return {Array} + */ + static monthsFormat(length = "long", { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) { + return (locObj || Locale2.create(locale, numberingSystem, outputCalendar)).months(length, true); + } + /** + * Return an array of standalone week names. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param {string} [length='long'] - the length of the weekday representation, such as "narrow", "short", "long". + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @param {string} [opts.locObj=null] - an existing locale object to use + * @example Info.weekdays()[0] //=> 'Monday' + * @example Info.weekdays('short')[0] //=> 'Mon' + * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.' + * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين' + * @return {Array} + */ + static weekdays(length = "long", { locale = null, numberingSystem = null, locObj = null } = {}) { + return (locObj || Locale2.create(locale, numberingSystem, null)).weekdays(length); + } + /** + * Return an array of format week names. + * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that + * changes the string. + * See {@link Info#weekdays} + * @param {string} [length='long'] - the length of the month representation, such as "narrow", "short", "long". + * @param {Object} opts - options + * @param {string} [opts.locale=null] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @param {string} [opts.locObj=null] - an existing locale object to use + * @return {Array} + */ + static weekdaysFormat(length = "long", { locale = null, numberingSystem = null, locObj = null } = {}) { + return (locObj || Locale2.create(locale, numberingSystem, null)).weekdays(length, true); + } + /** + * Return an array of meridiems. + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @example Info.meridiems() //=> [ 'AM', 'PM' ] + * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ] + * @return {Array} + */ + static meridiems({ locale = null } = {}) { + return Locale2.create(locale).meridiems(); + } + /** + * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian. + * @param {string} [length='short'] - the length of the era representation, such as "short" or "long". + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @example Info.eras() //=> [ 'BC', 'AD' ] + * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ] + * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ] + * @return {Array} + */ + static eras(length = "short", { locale = null } = {}) { + return Locale2.create(locale, null, "gregory").eras(length); + } + /** + * Return the set of available features in this environment. + * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case. + * Keys: + * * `relative`: whether this environment supports relative time formatting + * @example Info.features() //=> { relative: false } + * @return {Object} + */ + static features() { + return { relative: hasRelative2() }; + } + }; + function dayDiff2(earlier, later) { + const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf("day").valueOf(), ms = utcDayStart(later) - utcDayStart(earlier); + return Math.floor(Duration2.fromMillis(ms).as("days")); + } + function highOrderDiffs2(cursor, later, units) { + const differs = [ + ["years", (a, b) => b.year - a.year], + ["quarters", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4], + ["months", (a, b) => b.month - a.month + (b.year - a.year) * 12], + [ + "weeks", + (a, b) => { + const days = dayDiff2(a, b); + return (days - days % 7) / 7; + } + ], + ["days", dayDiff2] + ]; + const results = {}; + const earlier = cursor; + let lowestOrder, highWater; + for (const [unit, differ] of differs) { + if (units.indexOf(unit) >= 0) { + lowestOrder = unit; + results[unit] = differ(cursor, later); + highWater = earlier.plus(results); + if (highWater > later) { + results[unit]--; + cursor = earlier.plus(results); + if (cursor > later) { + highWater = cursor; + results[unit]--; + cursor = earlier.plus(results); + } + } else { + cursor = highWater; + } + } + } + return [cursor, results, highWater, lowestOrder]; + } + function diff(earlier, later, units, opts) { + let [cursor, results, highWater, lowestOrder] = highOrderDiffs2(earlier, later, units); + const remainingMillis = later - cursor; + const lowerOrderUnits = units.filter( + (u) => ["hours", "minutes", "seconds", "milliseconds"].indexOf(u) >= 0 + ); + if (lowerOrderUnits.length === 0) { + if (highWater < later) { + highWater = cursor.plus({ [lowestOrder]: 1 }); + } + if (highWater !== cursor) { + results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor); + } + } + const duration = Duration2.fromObject(results, opts); + if (lowerOrderUnits.length > 0) { + return Duration2.fromMillis(remainingMillis, opts).shiftTo(...lowerOrderUnits).plus(duration); + } else { + return duration; + } + } + var numberingSystems2 = { + arab: "[\u0660-\u0669]", + arabext: "[\u06F0-\u06F9]", + bali: "[\u1B50-\u1B59]", + beng: "[\u09E6-\u09EF]", + deva: "[\u0966-\u096F]", + fullwide: "[\uFF10-\uFF19]", + gujr: "[\u0AE6-\u0AEF]", + hanidec: "[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]", + khmr: "[\u17E0-\u17E9]", + knda: "[\u0CE6-\u0CEF]", + laoo: "[\u0ED0-\u0ED9]", + limb: "[\u1946-\u194F]", + mlym: "[\u0D66-\u0D6F]", + mong: "[\u1810-\u1819]", + mymr: "[\u1040-\u1049]", + orya: "[\u0B66-\u0B6F]", + tamldec: "[\u0BE6-\u0BEF]", + telu: "[\u0C66-\u0C6F]", + thai: "[\u0E50-\u0E59]", + tibt: "[\u0F20-\u0F29]", + latn: "\\d" + }; + var numberingSystemsUTF162 = { + arab: [1632, 1641], + arabext: [1776, 1785], + bali: [6992, 7001], + beng: [2534, 2543], + deva: [2406, 2415], + fullwide: [65296, 65303], + gujr: [2790, 2799], + khmr: [6112, 6121], + knda: [3302, 3311], + laoo: [3792, 3801], + limb: [6470, 6479], + mlym: [3430, 3439], + mong: [6160, 6169], + mymr: [4160, 4169], + orya: [2918, 2927], + tamldec: [3046, 3055], + telu: [3174, 3183], + thai: [3664, 3673], + tibt: [3872, 3881] + }; + var hanidecChars2 = numberingSystems2.hanidec.replace(/[\[|\]]/g, "").split(""); + function parseDigits2(str) { + let value = parseInt(str, 10); + if (isNaN(value)) { + value = ""; + for (let i = 0; i < str.length; i++) { + const code = str.charCodeAt(i); + if (str[i].search(numberingSystems2.hanidec) !== -1) { + value += hanidecChars2.indexOf(str[i]); + } else { + for (const key in numberingSystemsUTF162) { + const [min, max] = numberingSystemsUTF162[key]; + if (code >= min && code <= max) { + value += code - min; + } + } + } + } + return parseInt(value, 10); + } else { + return value; + } + } + function digitRegex2({ numberingSystem }, append2 = "") { + return new RegExp(`${numberingSystems2[numberingSystem || "latn"]}${append2}`); + } + var MISSING_FTP2 = "missing Intl.DateTimeFormat.formatToParts support"; + function intUnit2(regex2, post = (i) => i) { + return { regex: regex2, deser: ([s3]) => post(parseDigits2(s3)) }; + } + var NBSP2 = String.fromCharCode(160); + var spaceOrNBSP2 = `[ ${NBSP2}]`; + var spaceOrNBSPRegExp2 = new RegExp(spaceOrNBSP2, "g"); + function fixListRegex2(s3) { + return s3.replace(/\./g, "\\.?").replace(spaceOrNBSPRegExp2, spaceOrNBSP2); + } + function stripInsensitivities2(s3) { + return s3.replace(/\./g, "").replace(spaceOrNBSPRegExp2, " ").toLowerCase(); + } + function oneOf2(strings, startIndex) { + if (strings === null) { + return null; + } else { + return { + regex: RegExp(strings.map(fixListRegex2).join("|")), + deser: ([s3]) => strings.findIndex((i) => stripInsensitivities2(s3) === stripInsensitivities2(i)) + startIndex + }; + } + } + function offset2(regex2, groups) { + return { regex: regex2, deser: ([, h, m]) => signedOffset2(h, m), groups }; + } + function simple2(regex2) { + return { regex: regex2, deser: ([s3]) => s3 }; + } + function escapeToken2(value) { + return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); + } + function unitForToken2(token, loc) { + const one = digitRegex2(loc), two = digitRegex2(loc, "{2}"), three = digitRegex2(loc, "{3}"), four = digitRegex2(loc, "{4}"), six = digitRegex2(loc, "{6}"), oneOrTwo = digitRegex2(loc, "{1,2}"), oneToThree = digitRegex2(loc, "{1,3}"), oneToSix = digitRegex2(loc, "{1,6}"), oneToNine = digitRegex2(loc, "{1,9}"), twoToFour = digitRegex2(loc, "{2,4}"), fourToSix = digitRegex2(loc, "{4,6}"), literal = (t) => ({ regex: RegExp(escapeToken2(t.val)), deser: ([s3]) => s3, literal: true }), unitate = (t) => { + if (token.literal) { + return literal(t); + } + switch (t.val) { + case "G": + return oneOf2(loc.eras("short"), 0); + case "GG": + return oneOf2(loc.eras("long"), 0); + case "y": + return intUnit2(oneToSix); + case "yy": + return intUnit2(twoToFour, untruncateYear2); + case "yyyy": + return intUnit2(four); + case "yyyyy": + return intUnit2(fourToSix); + case "yyyyyy": + return intUnit2(six); + case "M": + return intUnit2(oneOrTwo); + case "MM": + return intUnit2(two); + case "MMM": + return oneOf2(loc.months("short", true), 1); + case "MMMM": + return oneOf2(loc.months("long", true), 1); + case "L": + return intUnit2(oneOrTwo); + case "LL": + return intUnit2(two); + case "LLL": + return oneOf2(loc.months("short", false), 1); + case "LLLL": + return oneOf2(loc.months("long", false), 1); + case "d": + return intUnit2(oneOrTwo); + case "dd": + return intUnit2(two); + case "o": + return intUnit2(oneToThree); + case "ooo": + return intUnit2(three); + case "HH": + return intUnit2(two); + case "H": + return intUnit2(oneOrTwo); + case "hh": + return intUnit2(two); + case "h": + return intUnit2(oneOrTwo); + case "mm": + return intUnit2(two); + case "m": + return intUnit2(oneOrTwo); + case "q": + return intUnit2(oneOrTwo); + case "qq": + return intUnit2(two); + case "s": + return intUnit2(oneOrTwo); + case "ss": + return intUnit2(two); + case "S": + return intUnit2(oneToThree); + case "SSS": + return intUnit2(three); + case "u": + return simple2(oneToNine); + case "uu": + return simple2(oneOrTwo); + case "uuu": + return intUnit2(one); + case "a": + return oneOf2(loc.meridiems(), 0); + case "kkkk": + return intUnit2(four); + case "kk": + return intUnit2(twoToFour, untruncateYear2); + case "W": + return intUnit2(oneOrTwo); + case "WW": + return intUnit2(two); + case "E": + case "c": + return intUnit2(one); + case "EEE": + return oneOf2(loc.weekdays("short", false), 1); + case "EEEE": + return oneOf2(loc.weekdays("long", false), 1); + case "ccc": + return oneOf2(loc.weekdays("short", true), 1); + case "cccc": + return oneOf2(loc.weekdays("long", true), 1); + case "Z": + case "ZZ": + return offset2(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2); + case "ZZZ": + return offset2(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2); + case "z": + return simple2(/[a-z_+-/]{1,256}?/i); + case " ": + return simple2(/[^\S\n\r]/); + default: + return literal(t); + } + }; + const unit = unitate(token) || { + invalidReason: MISSING_FTP2 + }; + unit.token = token; + return unit; + } + var partTypeStyleToTokenVal2 = { + year: { + "2-digit": "yy", + numeric: "yyyyy" + }, + month: { + numeric: "M", + "2-digit": "MM", + short: "MMM", + long: "MMMM" + }, + day: { + numeric: "d", + "2-digit": "dd" + }, + weekday: { + short: "EEE", + long: "EEEE" + }, + dayperiod: "a", + dayPeriod: "a", + hour12: { + numeric: "h", + "2-digit": "hh" + }, + hour24: { + numeric: "H", + "2-digit": "HH" + }, + minute: { + numeric: "m", + "2-digit": "mm" + }, + second: { + numeric: "s", + "2-digit": "ss" + }, + timeZoneName: { + long: "ZZZZZ", + short: "ZZZ" + } + }; + function tokenForPart2(part, formatOpts, resolvedOpts) { + const { type, value } = part; + if (type === "literal") { + const isSpace = /^\s+$/.test(value); + return { + literal: !isSpace, + val: isSpace ? " " : value + }; + } + const style = formatOpts[type]; + let actualType = type; + if (type === "hour") { + if (formatOpts.hour12 != null) { + actualType = formatOpts.hour12 ? "hour12" : "hour24"; + } else if (formatOpts.hourCycle != null) { + if (formatOpts.hourCycle === "h11" || formatOpts.hourCycle === "h12") { + actualType = "hour12"; + } else { + actualType = "hour24"; + } + } else { + actualType = resolvedOpts.hour12 ? "hour12" : "hour24"; + } + } + let val = partTypeStyleToTokenVal2[actualType]; + if (typeof val === "object") { + val = val[style]; + } + if (val) { + return { + literal: false, + val + }; + } + return void 0; + } + function buildRegex2(units) { + const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, ""); + return [`^${re}$`, units]; + } + function match2(input, regex2, handlers) { + const matches = input.match(regex2); + if (matches) { + const all = {}; + let matchIndex = 1; + for (const i in handlers) { + if (hasOwnProperty2(handlers, i)) { + const h = handlers[i], groups = h.groups ? h.groups + 1 : 1; + if (!h.literal && h.token) { + all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups)); + } + matchIndex += groups; + } + } + return [matches, all]; + } else { + return [matches, {}]; + } + } + function dateTimeFromMatches2(matches) { + const toField = (token) => { + switch (token) { + case "S": + return "millisecond"; + case "s": + return "second"; + case "m": + return "minute"; + case "h": + case "H": + return "hour"; + case "d": + return "day"; + case "o": + return "ordinal"; + case "L": + case "M": + return "month"; + case "y": + return "year"; + case "E": + case "c": + return "weekday"; + case "W": + return "weekNumber"; + case "k": + return "weekYear"; + case "q": + return "quarter"; + default: + return null; + } + }; + let zone = null; + let specificOffset; + if (!isUndefined2(matches.z)) { + zone = IANAZone2.create(matches.z); + } + if (!isUndefined2(matches.Z)) { + if (!zone) { + zone = new FixedOffsetZone2(matches.Z); + } + specificOffset = matches.Z; + } + if (!isUndefined2(matches.q)) { + matches.M = (matches.q - 1) * 3 + 1; + } + if (!isUndefined2(matches.h)) { + if (matches.h < 12 && matches.a === 1) { + matches.h += 12; + } else if (matches.h === 12 && matches.a === 0) { + matches.h = 0; + } + } + if (matches.G === 0 && matches.y) { + matches.y = -matches.y; + } + if (!isUndefined2(matches.u)) { + matches.S = parseMillis2(matches.u); + } + const vals = Object.keys(matches).reduce((r, k) => { + const f = toField(k); + if (f) { + r[f] = matches[k]; + } + return r; + }, {}); + return [vals, zone, specificOffset]; + } + var dummyDateTimeCache2 = null; + function getDummyDateTime2() { + if (!dummyDateTimeCache2) { + dummyDateTimeCache2 = DateTime2.fromMillis(1555555555555); + } + return dummyDateTimeCache2; + } + function maybeExpandMacroToken2(token, locale) { + if (token.literal) { + return token; + } + const formatOpts = Formatter2.macroTokenToFormatOpts(token.val); + const tokens = formatOptsToTokens2(formatOpts, locale); + if (tokens == null || tokens.includes(void 0)) { + return token; + } + return tokens; + } + function expandMacroTokens2(tokens, locale) { + return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken2(t, locale))); + } + function explainFromTokens2(locale, input, format) { + const tokens = expandMacroTokens2(Formatter2.parseFormat(format), locale), units = tokens.map((t) => unitForToken2(t, locale)), disqualifyingUnit = units.find((t) => t.invalidReason); + if (disqualifyingUnit) { + return { input, tokens, invalidReason: disqualifyingUnit.invalidReason }; + } else { + const [regexString, handlers] = buildRegex2(units), regex2 = RegExp(regexString, "i"), [rawMatches, matches] = match2(input, regex2, handlers), [result, zone, specificOffset] = matches ? dateTimeFromMatches2(matches) : [null, null, void 0]; + if (hasOwnProperty2(matches, "a") && hasOwnProperty2(matches, "H")) { + throw new ConflictingSpecificationError2( + "Can't include meridiem when specifying 24-hour format" + ); + } + return { input, tokens, regex: regex2, rawMatches, matches, result, zone, specificOffset }; + } + } + function parseFromTokens2(locale, input, format) { + const { result, zone, specificOffset, invalidReason } = explainFromTokens2(locale, input, format); + return [result, zone, specificOffset, invalidReason]; + } + function formatOptsToTokens2(formatOpts, locale) { + if (!formatOpts) { + return null; + } + const formatter = Formatter2.create(locale, formatOpts); + const df = formatter.dtFormatter(getDummyDateTime2()); + const parts = df.formatToParts(); + const resolvedOpts = df.resolvedOptions(); + return parts.map((p) => tokenForPart2(p, formatOpts, resolvedOpts)); + } + var nonLeapLadder2 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; + var leapLadder2 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]; + function unitOutOfRange2(unit, value) { + return new Invalid2( + "unit out of range", + `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid` + ); + } + function dayOfWeek2(year, month, day) { + const d = new Date(Date.UTC(year, month - 1, day)); + if (year < 100 && year >= 0) { + d.setUTCFullYear(d.getUTCFullYear() - 1900); + } + const js = d.getUTCDay(); + return js === 0 ? 7 : js; + } + function computeOrdinal2(year, month, day) { + return day + (isLeapYear2(year) ? leapLadder2 : nonLeapLadder2)[month - 1]; + } + function uncomputeOrdinal2(year, ordinal) { + const table = isLeapYear2(year) ? leapLadder2 : nonLeapLadder2, month0 = table.findIndex((i) => i < ordinal), day = ordinal - table[month0]; + return { month: month0 + 1, day }; + } + function gregorianToWeek2(gregObj) { + const { year, month, day } = gregObj, ordinal = computeOrdinal2(year, month, day), weekday = dayOfWeek2(year, month, day); + let weekNumber = Math.floor((ordinal - weekday + 10) / 7), weekYear; + if (weekNumber < 1) { + weekYear = year - 1; + weekNumber = weeksInWeekYear2(weekYear); + } else if (weekNumber > weeksInWeekYear2(year)) { + weekYear = year + 1; + weekNumber = 1; + } else { + weekYear = year; + } + return { weekYear, weekNumber, weekday, ...timeObject2(gregObj) }; + } + function weekToGregorian2(weekData) { + const { weekYear, weekNumber, weekday } = weekData, weekdayOfJan4 = dayOfWeek2(weekYear, 1, 4), yearInDays = daysInYear2(weekYear); + let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3, year; + if (ordinal < 1) { + year = weekYear - 1; + ordinal += daysInYear2(year); + } else if (ordinal > yearInDays) { + year = weekYear + 1; + ordinal -= daysInYear2(weekYear); + } else { + year = weekYear; + } + const { month, day } = uncomputeOrdinal2(year, ordinal); + return { year, month, day, ...timeObject2(weekData) }; + } + function gregorianToOrdinal2(gregData) { + const { year, month, day } = gregData; + const ordinal = computeOrdinal2(year, month, day); + return { year, ordinal, ...timeObject2(gregData) }; + } + function ordinalToGregorian2(ordinalData) { + const { year, ordinal } = ordinalData; + const { month, day } = uncomputeOrdinal2(year, ordinal); + return { year, month, day, ...timeObject2(ordinalData) }; + } + function hasInvalidWeekData2(obj) { + const validYear = isInteger2(obj.weekYear), validWeek = integerBetween2(obj.weekNumber, 1, weeksInWeekYear2(obj.weekYear)), validWeekday = integerBetween2(obj.weekday, 1, 7); + if (!validYear) { + return unitOutOfRange2("weekYear", obj.weekYear); + } else if (!validWeek) { + return unitOutOfRange2("week", obj.week); + } else if (!validWeekday) { + return unitOutOfRange2("weekday", obj.weekday); + } else + return false; + } + function hasInvalidOrdinalData2(obj) { + const validYear = isInteger2(obj.year), validOrdinal = integerBetween2(obj.ordinal, 1, daysInYear2(obj.year)); + if (!validYear) { + return unitOutOfRange2("year", obj.year); + } else if (!validOrdinal) { + return unitOutOfRange2("ordinal", obj.ordinal); + } else + return false; + } + function hasInvalidGregorianData2(obj) { + const validYear = isInteger2(obj.year), validMonth = integerBetween2(obj.month, 1, 12), validDay = integerBetween2(obj.day, 1, daysInMonth2(obj.year, obj.month)); + if (!validYear) { + return unitOutOfRange2("year", obj.year); + } else if (!validMonth) { + return unitOutOfRange2("month", obj.month); + } else if (!validDay) { + return unitOutOfRange2("day", obj.day); + } else + return false; + } + function hasInvalidTimeData2(obj) { + const { hour, minute, second, millisecond } = obj; + const validHour = integerBetween2(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0, validMinute = integerBetween2(minute, 0, 59), validSecond = integerBetween2(second, 0, 59), validMillisecond = integerBetween2(millisecond, 0, 999); + if (!validHour) { + return unitOutOfRange2("hour", hour); + } else if (!validMinute) { + return unitOutOfRange2("minute", minute); + } else if (!validSecond) { + return unitOutOfRange2("second", second); + } else if (!validMillisecond) { + return unitOutOfRange2("millisecond", millisecond); + } else + return false; + } + var INVALID5 = "Invalid DateTime"; + var MAX_DATE2 = 864e13; + function unsupportedZone2(zone) { + return new Invalid2("unsupported zone", `the zone "${zone.name}" is not supported`); + } + function possiblyCachedWeekData2(dt) { + if (dt.weekData === null) { + dt.weekData = gregorianToWeek2(dt.c); + } + return dt.weekData; + } + function clone3(inst, alts) { + const current = { + ts: inst.ts, + zone: inst.zone, + c: inst.c, + o: inst.o, + loc: inst.loc, + invalid: inst.invalid + }; + return new DateTime2({ ...current, ...alts, old: current }); + } + function fixOffset2(localTS, o, tz) { + let utcGuess = localTS - o * 60 * 1e3; + const o2 = tz.offset(utcGuess); + if (o === o2) { + return [utcGuess, o]; + } + utcGuess -= (o2 - o) * 60 * 1e3; + const o3 = tz.offset(utcGuess); + if (o2 === o3) { + return [utcGuess, o2]; + } + return [localTS - Math.min(o2, o3) * 60 * 1e3, Math.max(o2, o3)]; + } + function tsToObj2(ts, offset3) { + ts += offset3 * 60 * 1e3; + const d = new Date(ts); + return { + year: d.getUTCFullYear(), + month: d.getUTCMonth() + 1, + day: d.getUTCDate(), + hour: d.getUTCHours(), + minute: d.getUTCMinutes(), + second: d.getUTCSeconds(), + millisecond: d.getUTCMilliseconds() + }; + } + function objToTS2(obj, offset3, zone) { + return fixOffset2(objToLocalTS2(obj), offset3, zone); + } + function adjustTime2(inst, dur) { + const oPre = inst.o, year = inst.c.year + Math.trunc(dur.years), month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3, c = { + ...inst.c, + year, + month, + day: Math.min(inst.c.day, daysInMonth2(year, month)) + Math.trunc(dur.days) + Math.trunc(dur.weeks) * 7 + }, millisToAdd = Duration2.fromObject({ + years: dur.years - Math.trunc(dur.years), + quarters: dur.quarters - Math.trunc(dur.quarters), + months: dur.months - Math.trunc(dur.months), + weeks: dur.weeks - Math.trunc(dur.weeks), + days: dur.days - Math.trunc(dur.days), + hours: dur.hours, + minutes: dur.minutes, + seconds: dur.seconds, + milliseconds: dur.milliseconds + }).as("milliseconds"), localTS = objToLocalTS2(c); + let [ts, o] = fixOffset2(localTS, oPre, inst.zone); + if (millisToAdd !== 0) { + ts += millisToAdd; + o = inst.zone.offset(ts); + } + return { ts, o }; + } + function parseDataToDateTime2(parsed, parsedZone, opts, format, text2, specificOffset) { + const { setZone, zone } = opts; + if (parsed && Object.keys(parsed).length !== 0 || parsedZone) { + const interpretationZone = parsedZone || zone, inst = DateTime2.fromObject(parsed, { + ...opts, + zone: interpretationZone, + specificOffset + }); + return setZone ? inst : inst.setZone(zone); + } else { + return DateTime2.invalid( + new Invalid2("unparsable", `the input "${text2}" can't be parsed as ${format}`) + ); + } + } + function toTechFormat2(dt, format, allowZ = true) { + return dt.isValid ? Formatter2.create(Locale2.create("en-US"), { + allowZ, + forceSimple: true + }).formatDateTimeFromString(dt, format) : null; + } + function toISODate2(o, extended) { + const longFormat = o.c.year > 9999 || o.c.year < 0; + let c = ""; + if (longFormat && o.c.year >= 0) + c += "+"; + c += padStart2(o.c.year, longFormat ? 6 : 4); + if (extended) { + c += "-"; + c += padStart2(o.c.month); + c += "-"; + c += padStart2(o.c.day); + } else { + c += padStart2(o.c.month); + c += padStart2(o.c.day); + } + return c; + } + function toISOTime2(o, extended, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone) { + let c = padStart2(o.c.hour); + if (extended) { + c += ":"; + c += padStart2(o.c.minute); + if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) { + c += ":"; + } + } else { + c += padStart2(o.c.minute); + } + if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) { + c += padStart2(o.c.second); + if (o.c.millisecond !== 0 || !suppressMilliseconds) { + c += "."; + c += padStart2(o.c.millisecond, 3); + } + } + if (includeOffset) { + if (o.isOffsetFixed && o.offset === 0 && !extendedZone) { + c += "Z"; + } else if (o.o < 0) { + c += "-"; + c += padStart2(Math.trunc(-o.o / 60)); + c += ":"; + c += padStart2(Math.trunc(-o.o % 60)); + } else { + c += "+"; + c += padStart2(Math.trunc(o.o / 60)); + c += ":"; + c += padStart2(Math.trunc(o.o % 60)); + } + } + if (extendedZone) { + c += "[" + o.zone.ianaName + "]"; + } + return c; + } + var defaultUnitValues2 = { + month: 1, + day: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }; + var defaultWeekUnitValues2 = { + weekNumber: 1, + weekday: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }; + var defaultOrdinalUnitValues2 = { + ordinal: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }; + var orderedUnits3 = ["year", "month", "day", "hour", "minute", "second", "millisecond"]; + var orderedWeekUnits2 = [ + "weekYear", + "weekNumber", + "weekday", + "hour", + "minute", + "second", + "millisecond" + ]; + var orderedOrdinalUnits2 = ["year", "ordinal", "hour", "minute", "second", "millisecond"]; + function normalizeUnit2(unit) { + const normalized = { + year: "year", + years: "year", + month: "month", + months: "month", + day: "day", + days: "day", + hour: "hour", + hours: "hour", + minute: "minute", + minutes: "minute", + quarter: "quarter", + quarters: "quarter", + second: "second", + seconds: "second", + millisecond: "millisecond", + milliseconds: "millisecond", + weekday: "weekday", + weekdays: "weekday", + weeknumber: "weekNumber", + weeksnumber: "weekNumber", + weeknumbers: "weekNumber", + weekyear: "weekYear", + weekyears: "weekYear", + ordinal: "ordinal" + }[unit.toLowerCase()]; + if (!normalized) + throw new InvalidUnitError2(unit); + return normalized; + } + function quickDT2(obj, opts) { + const zone = normalizeZone2(opts.zone, Settings2.defaultZone), loc = Locale2.fromObject(opts), tsNow = Settings2.now(); + let ts, o; + if (!isUndefined2(obj.year)) { + for (const u of orderedUnits3) { + if (isUndefined2(obj[u])) { + obj[u] = defaultUnitValues2[u]; + } + } + const invalid = hasInvalidGregorianData2(obj) || hasInvalidTimeData2(obj); + if (invalid) { + return DateTime2.invalid(invalid); + } + const offsetProvis = zone.offset(tsNow); + [ts, o] = objToTS2(obj, offsetProvis, zone); + } else { + ts = tsNow; + } + return new DateTime2({ ts, zone, loc, o }); + } + function diffRelative2(start, end, opts) { + const round = isUndefined2(opts.round) ? true : opts.round, format = (c, unit) => { + c = roundTo2(c, round || opts.calendary ? 0 : 2, true); + const formatter = end.loc.clone(opts).relFormatter(opts); + return formatter.format(c, unit); + }, differ = (unit) => { + if (opts.calendary) { + if (!end.hasSame(start, unit)) { + return end.startOf(unit).diff(start.startOf(unit), unit).get(unit); + } else + return 0; + } else { + return end.diff(start, unit).get(unit); + } + }; + if (opts.unit) { + return format(differ(opts.unit), opts.unit); + } + for (const unit of opts.units) { + const count = differ(unit); + if (Math.abs(count) >= 1) { + return format(count, unit); + } + } + return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]); + } + function lastOpts2(argList) { + let opts = {}, args; + if (argList.length > 0 && typeof argList[argList.length - 1] === "object") { + opts = argList[argList.length - 1]; + args = Array.from(argList).slice(0, argList.length - 1); + } else { + args = Array.from(argList); + } + return [opts, args]; + } + var DateTime2 = class _DateTime { + /** + * @access private + */ + constructor(config) { + const zone = config.zone || Settings2.defaultZone; + let invalid = config.invalid || (Number.isNaN(config.ts) ? new Invalid2("invalid input") : null) || (!zone.isValid ? unsupportedZone2(zone) : null); + this.ts = isUndefined2(config.ts) ? Settings2.now() : config.ts; + let c = null, o = null; + if (!invalid) { + const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone); + if (unchanged) { + [c, o] = [config.old.c, config.old.o]; + } else { + const ot = zone.offset(this.ts); + c = tsToObj2(this.ts, ot); + invalid = Number.isNaN(c.year) ? new Invalid2("invalid input") : null; + c = invalid ? null : c; + o = invalid ? null : ot; + } + } + this._zone = zone; + this.loc = config.loc || Locale2.create(); + this.invalid = invalid; + this.weekData = null; + this.c = c; + this.o = o; + this.isLuxonDateTime = true; + } + // CONSTRUCT + /** + * Create a DateTime for the current instant, in the system's time zone. + * + * Use Settings to override these default values if needed. + * @example DateTime.now().toISO() //~> now in the ISO format + * @return {DateTime} + */ + static now() { + return new _DateTime({}); + } + /** + * Create a local DateTime + * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used + * @param {number} [month=1] - The month, 1-indexed + * @param {number} [day=1] - The day of the month, 1-indexed + * @param {number} [hour=0] - The hour of the day, in 24-hour time + * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59 + * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59 + * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999 + * @example DateTime.local() //~> now + * @example DateTime.local({ zone: "America/New_York" }) //~> now, in US east coast time + * @example DateTime.local(2017) //~> 2017-01-01T00:00:00 + * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00 + * @example DateTime.local(2017, 3, 12, { locale: "fr" }) //~> 2017-03-12T00:00:00, with a French locale + * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00 + * @example DateTime.local(2017, 3, 12, 5, { zone: "utc" }) //~> 2017-03-12T05:00:00, in UTC + * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00 + * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10 + * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765 + * @return {DateTime} + */ + static local() { + const [opts, args] = lastOpts2(arguments), [year, month, day, hour, minute, second, millisecond] = args; + return quickDT2({ year, month, day, hour, minute, second, millisecond }, opts); + } + /** + * Create a DateTime in UTC + * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used + * @param {number} [month=1] - The month, 1-indexed + * @param {number} [day=1] - The day of the month + * @param {number} [hour=0] - The hour of the day, in 24-hour time + * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59 + * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59 + * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999 + * @param {Object} options - configuration options for the DateTime + * @param {string} [options.locale] - a locale to set on the resulting DateTime instance + * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance + * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance + * @example DateTime.utc() //~> now + * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z + * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z + * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z + * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z + * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z + * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: "fr" }) //~> 2017-03-12T05:45:00Z with a French locale + * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z + * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: "fr" }) //~> 2017-03-12T05:45:10.765Z with a French locale + * @return {DateTime} + */ + static utc() { + const [opts, args] = lastOpts2(arguments), [year, month, day, hour, minute, second, millisecond] = args; + opts.zone = FixedOffsetZone2.utcInstance; + return quickDT2({ year, month, day, hour, minute, second, millisecond }, opts); + } + /** + * Create a DateTime from a JavaScript Date object. Uses the default zone. + * @param {Date} date - a JavaScript Date object + * @param {Object} options - configuration options for the DateTime + * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into + * @return {DateTime} + */ + static fromJSDate(date, options = {}) { + const ts = isDate2(date) ? date.valueOf() : NaN; + if (Number.isNaN(ts)) { + return _DateTime.invalid("invalid input"); + } + const zoneToUse = normalizeZone2(options.zone, Settings2.defaultZone); + if (!zoneToUse.isValid) { + return _DateTime.invalid(unsupportedZone2(zoneToUse)); + } + return new _DateTime({ + ts, + zone: zoneToUse, + loc: Locale2.fromObject(options) + }); + } + /** + * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone. + * @param {number} milliseconds - a number of milliseconds since 1970 UTC + * @param {Object} options - configuration options for the DateTime + * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into + * @param {string} [options.locale] - a locale to set on the resulting DateTime instance + * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance + * @return {DateTime} + */ + static fromMillis(milliseconds, options = {}) { + if (!isNumber2(milliseconds)) { + throw new InvalidArgumentError2( + `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}` + ); + } else if (milliseconds < -MAX_DATE2 || milliseconds > MAX_DATE2) { + return _DateTime.invalid("Timestamp out of range"); + } else { + return new _DateTime({ + ts: milliseconds, + zone: normalizeZone2(options.zone, Settings2.defaultZone), + loc: Locale2.fromObject(options) + }); + } + } + /** + * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone. + * @param {number} seconds - a number of seconds since 1970 UTC + * @param {Object} options - configuration options for the DateTime + * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into + * @param {string} [options.locale] - a locale to set on the resulting DateTime instance + * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance + * @return {DateTime} + */ + static fromSeconds(seconds, options = {}) { + if (!isNumber2(seconds)) { + throw new InvalidArgumentError2("fromSeconds requires a numerical input"); + } else { + return new _DateTime({ + ts: seconds * 1e3, + zone: normalizeZone2(options.zone, Settings2.defaultZone), + loc: Locale2.fromObject(options) + }); + } + } + /** + * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults. + * @param {Object} obj - the object to create the DateTime from + * @param {number} obj.year - a year, such as 1987 + * @param {number} obj.month - a month, 1-12 + * @param {number} obj.day - a day of the month, 1-31, depending on the month + * @param {number} obj.ordinal - day of the year, 1-365 or 366 + * @param {number} obj.weekYear - an ISO week year + * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year + * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday + * @param {number} obj.hour - hour of the day, 0-23 + * @param {number} obj.minute - minute of the hour, 0-59 + * @param {number} obj.second - second of the minute, 0-59 + * @param {number} obj.millisecond - millisecond of the second, 0-999 + * @param {Object} opts - options for creating this DateTime + * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone() + * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25' + * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01' + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06 + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }), + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' }) + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' }) + * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13' + * @return {DateTime} + */ + static fromObject(obj, opts = {}) { + obj = obj || {}; + const zoneToUse = normalizeZone2(opts.zone, Settings2.defaultZone); + if (!zoneToUse.isValid) { + return _DateTime.invalid(unsupportedZone2(zoneToUse)); + } + const tsNow = Settings2.now(), offsetProvis = !isUndefined2(opts.specificOffset) ? opts.specificOffset : zoneToUse.offset(tsNow), normalized = normalizeObject2(obj, normalizeUnit2), containsOrdinal = !isUndefined2(normalized.ordinal), containsGregorYear = !isUndefined2(normalized.year), containsGregorMD = !isUndefined2(normalized.month) || !isUndefined2(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber, loc = Locale2.fromObject(opts); + if ((containsGregor || containsOrdinal) && definiteWeekDef) { + throw new ConflictingSpecificationError2( + "Can't mix weekYear/weekNumber units with year/month/day or ordinals" + ); + } + if (containsGregorMD && containsOrdinal) { + throw new ConflictingSpecificationError2("Can't mix ordinal dates with month/day"); + } + const useWeekData = definiteWeekDef || normalized.weekday && !containsGregor; + let units, defaultValues, objNow = tsToObj2(tsNow, offsetProvis); + if (useWeekData) { + units = orderedWeekUnits2; + defaultValues = defaultWeekUnitValues2; + objNow = gregorianToWeek2(objNow); + } else if (containsOrdinal) { + units = orderedOrdinalUnits2; + defaultValues = defaultOrdinalUnitValues2; + objNow = gregorianToOrdinal2(objNow); + } else { + units = orderedUnits3; + defaultValues = defaultUnitValues2; + } + let foundFirst = false; + for (const u of units) { + const v = normalized[u]; + if (!isUndefined2(v)) { + foundFirst = true; + } else if (foundFirst) { + normalized[u] = defaultValues[u]; + } else { + normalized[u] = objNow[u]; + } + } + const higherOrderInvalid = useWeekData ? hasInvalidWeekData2(normalized) : containsOrdinal ? hasInvalidOrdinalData2(normalized) : hasInvalidGregorianData2(normalized), invalid = higherOrderInvalid || hasInvalidTimeData2(normalized); + if (invalid) { + return _DateTime.invalid(invalid); + } + const gregorian = useWeekData ? weekToGregorian2(normalized) : containsOrdinal ? ordinalToGregorian2(normalized) : normalized, [tsFinal, offsetFinal] = objToTS2(gregorian, offsetProvis, zoneToUse), inst = new _DateTime({ + ts: tsFinal, + zone: zoneToUse, + o: offsetFinal, + loc + }); + if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) { + return _DateTime.invalid( + "mismatched weekday", + `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}` + ); + } + return inst; + } + /** + * Create a DateTime from an ISO 8601 string + * @param {string} text - the ISO string + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone + * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance + * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromISO('2016-05-25T09:08:34.123') + * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00') + * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true}) + * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'}) + * @example DateTime.fromISO('2016-W05-4') + * @return {DateTime} + */ + static fromISO(text2, opts = {}) { + const [vals, parsedZone] = parseISODate2(text2); + return parseDataToDateTime2(vals, parsedZone, opts, "ISO 8601", text2); + } + /** + * Create a DateTime from an RFC 2822 string + * @param {string} text - the RFC 2822 string + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in. + * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT') + * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600') + * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z') + * @return {DateTime} + */ + static fromRFC2822(text2, opts = {}) { + const [vals, parsedZone] = parseRFC2822Date2(text2); + return parseDataToDateTime2(vals, parsedZone, opts, "RFC 2822", text2); + } + /** + * Create a DateTime from an HTTP header date + * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 + * @param {string} text - the HTTP header date + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in. + * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods. + * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT') + * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT') + * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994') + * @return {DateTime} + */ + static fromHTTP(text2, opts = {}) { + const [vals, parsedZone] = parseHTTPDate2(text2); + return parseDataToDateTime2(vals, parsedZone, opts, "HTTP", opts); + } + /** + * Create a DateTime from an input string and format string. + * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens). + * @param {string} text - the string to parse + * @param {string} fmt - the format the string is expected to be in (see the link below for the formats) + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone + * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale + * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @return {DateTime} + */ + static fromFormat(text2, fmt, opts = {}) { + if (isUndefined2(text2) || isUndefined2(fmt)) { + throw new InvalidArgumentError2("fromFormat requires an input string and a format"); + } + const { locale = null, numberingSystem = null } = opts, localeToUse = Locale2.fromOpts({ + locale, + numberingSystem, + defaultToEN: true + }), [vals, parsedZone, specificOffset, invalid] = parseFromTokens2(localeToUse, text2, fmt); + if (invalid) { + return _DateTime.invalid(invalid); + } else { + return parseDataToDateTime2(vals, parsedZone, opts, `format ${fmt}`, text2, specificOffset); + } + } + /** + * @deprecated use fromFormat instead + */ + static fromString(text2, fmt, opts = {}) { + return _DateTime.fromFormat(text2, fmt, opts); + } + /** + * Create a DateTime from a SQL date, time, or datetime + * Defaults to en-US if no locale has been specified, regardless of the system's locale + * @param {string} text - the string to parse + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone + * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale + * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @example DateTime.fromSQL('2017-05-15') + * @example DateTime.fromSQL('2017-05-15 09:12:34') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true }) + * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' }) + * @example DateTime.fromSQL('09:12:34.342') + * @return {DateTime} + */ + static fromSQL(text2, opts = {}) { + const [vals, parsedZone] = parseSQL2(text2); + return parseDataToDateTime2(vals, parsedZone, opts, "SQL", text2); + } + /** + * Create an invalid DateTime. + * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent. + * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information + * @return {DateTime} + */ + static invalid(reason, explanation = null) { + if (!reason) { + throw new InvalidArgumentError2("need to specify a reason the DateTime is invalid"); + } + const invalid = reason instanceof Invalid2 ? reason : new Invalid2(reason, explanation); + if (Settings2.throwOnInvalid) { + throw new InvalidDateTimeError2(invalid); + } else { + return new _DateTime({ invalid }); + } + } + /** + * Check if an object is an instance of DateTime. Works across context boundaries + * @param {object} o + * @return {boolean} + */ + static isDateTime(o) { + return o && o.isLuxonDateTime || false; + } + /** + * Produce the format string for a set of options + * @param formatOpts + * @param localeOpts + * @returns {string} + */ + static parseFormatForOpts(formatOpts, localeOpts = {}) { + const tokenList = formatOptsToTokens2(formatOpts, Locale2.fromObject(localeOpts)); + return !tokenList ? null : tokenList.map((t) => t ? t.val : null).join(""); + } + /** + * Produce the the fully expanded format token for the locale + * Does NOT quote characters, so quoted tokens will not round trip correctly + * @param fmt + * @param localeOpts + * @returns {string} + */ + static expandFormat(fmt, localeOpts = {}) { + const expanded = expandMacroTokens2(Formatter2.parseFormat(fmt), Locale2.fromObject(localeOpts)); + return expanded.map((t) => t.val).join(""); + } + // INFO + /** + * Get the value of unit. + * @param {string} unit - a unit such as 'minute' or 'day' + * @example DateTime.local(2017, 7, 4).get('month'); //=> 7 + * @example DateTime.local(2017, 7, 4).get('day'); //=> 4 + * @return {number} + */ + get(unit) { + return this[unit]; + } + /** + * Returns whether the DateTime is valid. Invalid DateTimes occur when: + * * The DateTime was created from invalid calendar information, such as the 13th month or February 30 + * * The DateTime was created by an operation on another invalid date + * @type {boolean} + */ + get isValid() { + return this.invalid === null; + } + /** + * Returns an error code if this DateTime is invalid, or null if the DateTime is valid + * @type {string} + */ + get invalidReason() { + return this.invalid ? this.invalid.reason : null; + } + /** + * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid + * @type {string} + */ + get invalidExplanation() { + return this.invalid ? this.invalid.explanation : null; + } + /** + * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime + * + * @type {string} + */ + get locale() { + return this.isValid ? this.loc.locale : null; + } + /** + * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime + * + * @type {string} + */ + get numberingSystem() { + return this.isValid ? this.loc.numberingSystem : null; + } + /** + * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime + * + * @type {string} + */ + get outputCalendar() { + return this.isValid ? this.loc.outputCalendar : null; + } + /** + * Get the time zone associated with this DateTime. + * @type {Zone} + */ + get zone() { + return this._zone; + } + /** + * Get the name of the time zone. + * @type {string} + */ + get zoneName() { + return this.isValid ? this.zone.name : null; + } + /** + * Get the year + * @example DateTime.local(2017, 5, 25).year //=> 2017 + * @type {number} + */ + get year() { + return this.isValid ? this.c.year : NaN; + } + /** + * Get the quarter + * @example DateTime.local(2017, 5, 25).quarter //=> 2 + * @type {number} + */ + get quarter() { + return this.isValid ? Math.ceil(this.c.month / 3) : NaN; + } + /** + * Get the month (1-12). + * @example DateTime.local(2017, 5, 25).month //=> 5 + * @type {number} + */ + get month() { + return this.isValid ? this.c.month : NaN; + } + /** + * Get the day of the month (1-30ish). + * @example DateTime.local(2017, 5, 25).day //=> 25 + * @type {number} + */ + get day() { + return this.isValid ? this.c.day : NaN; + } + /** + * Get the hour of the day (0-23). + * @example DateTime.local(2017, 5, 25, 9).hour //=> 9 + * @type {number} + */ + get hour() { + return this.isValid ? this.c.hour : NaN; + } + /** + * Get the minute of the hour (0-59). + * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30 + * @type {number} + */ + get minute() { + return this.isValid ? this.c.minute : NaN; + } + /** + * Get the second of the minute (0-59). + * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52 + * @type {number} + */ + get second() { + return this.isValid ? this.c.second : NaN; + } + /** + * Get the millisecond of the second (0-999). + * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654 + * @type {number} + */ + get millisecond() { + return this.isValid ? this.c.millisecond : NaN; + } + /** + * Get the week year + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2014, 12, 31).weekYear //=> 2015 + * @type {number} + */ + get weekYear() { + return this.isValid ? possiblyCachedWeekData2(this).weekYear : NaN; + } + /** + * Get the week number of the week year (1-52ish). + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2017, 5, 25).weekNumber //=> 21 + * @type {number} + */ + get weekNumber() { + return this.isValid ? possiblyCachedWeekData2(this).weekNumber : NaN; + } + /** + * Get the day of the week. + * 1 is Monday and 7 is Sunday + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2014, 11, 31).weekday //=> 4 + * @type {number} + */ + get weekday() { + return this.isValid ? possiblyCachedWeekData2(this).weekday : NaN; + } + /** + * Get the ordinal (meaning the day of the year) + * @example DateTime.local(2017, 5, 25).ordinal //=> 145 + * @type {number|DateTime} + */ + get ordinal() { + return this.isValid ? gregorianToOrdinal2(this.c).ordinal : NaN; + } + /** + * Get the human readable short month name, such as 'Oct'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).monthShort //=> Oct + * @type {string} + */ + get monthShort() { + return this.isValid ? Info2.months("short", { locObj: this.loc })[this.month - 1] : null; + } + /** + * Get the human readable long month name, such as 'October'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).monthLong //=> October + * @type {string} + */ + get monthLong() { + return this.isValid ? Info2.months("long", { locObj: this.loc })[this.month - 1] : null; + } + /** + * Get the human readable short weekday, such as 'Mon'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon + * @type {string} + */ + get weekdayShort() { + return this.isValid ? Info2.weekdays("short", { locObj: this.loc })[this.weekday - 1] : null; + } + /** + * Get the human readable long weekday, such as 'Monday'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday + * @type {string} + */ + get weekdayLong() { + return this.isValid ? Info2.weekdays("long", { locObj: this.loc })[this.weekday - 1] : null; + } + /** + * Get the UTC offset of this DateTime in minutes + * @example DateTime.now().offset //=> -240 + * @example DateTime.utc().offset //=> 0 + * @type {number} + */ + get offset() { + return this.isValid ? +this.o : NaN; + } + /** + * Get the short human name for the zone's current offset, for example "EST" or "EDT". + * Defaults to the system's locale if no locale has been specified + * @type {string} + */ + get offsetNameShort() { + if (this.isValid) { + return this.zone.offsetName(this.ts, { + format: "short", + locale: this.locale + }); + } else { + return null; + } + } + /** + * Get the long human name for the zone's current offset, for example "Eastern Standard Time" or "Eastern Daylight Time". + * Defaults to the system's locale if no locale has been specified + * @type {string} + */ + get offsetNameLong() { + if (this.isValid) { + return this.zone.offsetName(this.ts, { + format: "long", + locale: this.locale + }); + } else { + return null; + } + } + /** + * Get whether this zone's offset ever changes, as in a DST. + * @type {boolean} + */ + get isOffsetFixed() { + return this.isValid ? this.zone.isUniversal : null; + } + /** + * Get whether the DateTime is in a DST. + * @type {boolean} + */ + get isInDST() { + if (this.isOffsetFixed) { + return false; + } else { + return this.offset > this.set({ month: 1, day: 1 }).offset || this.offset > this.set({ month: 5 }).offset; + } + } + /** + * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC + * in this DateTime's zone. During DST changes local time can be ambiguous, for example + * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`. + * This method will return both possible DateTimes if this DateTime's local time is ambiguous. + * @returns {DateTime[]} + */ + getPossibleOffsets() { + if (!this.isValid || this.isOffsetFixed) { + return [this]; + } + const dayMs = 864e5; + const minuteMs = 6e4; + const localTS = objToLocalTS2(this.c); + const oEarlier = this.zone.offset(localTS - dayMs); + const oLater = this.zone.offset(localTS + dayMs); + const o1 = this.zone.offset(localTS - oEarlier * minuteMs); + const o2 = this.zone.offset(localTS - oLater * minuteMs); + if (o1 === o2) { + return [this]; + } + const ts1 = localTS - o1 * minuteMs; + const ts2 = localTS - o2 * minuteMs; + const c1 = tsToObj2(ts1, o1); + const c2 = tsToObj2(ts2, o2); + if (c1.hour === c2.hour && c1.minute === c2.minute && c1.second === c2.second && c1.millisecond === c2.millisecond) { + return [clone3(this, { ts: ts1 }), clone3(this, { ts: ts2 })]; + } + return [this]; + } + /** + * Returns true if this DateTime is in a leap year, false otherwise + * @example DateTime.local(2016).isInLeapYear //=> true + * @example DateTime.local(2013).isInLeapYear //=> false + * @type {boolean} + */ + get isInLeapYear() { + return isLeapYear2(this.year); + } + /** + * Returns the number of days in this DateTime's month + * @example DateTime.local(2016, 2).daysInMonth //=> 29 + * @example DateTime.local(2016, 3).daysInMonth //=> 31 + * @type {number} + */ + get daysInMonth() { + return daysInMonth2(this.year, this.month); + } + /** + * Returns the number of days in this DateTime's year + * @example DateTime.local(2016).daysInYear //=> 366 + * @example DateTime.local(2013).daysInYear //=> 365 + * @type {number} + */ + get daysInYear() { + return this.isValid ? daysInYear2(this.year) : NaN; + } + /** + * Returns the number of weeks in this DateTime's year + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2004).weeksInWeekYear //=> 53 + * @example DateTime.local(2013).weeksInWeekYear //=> 52 + * @type {number} + */ + get weeksInWeekYear() { + return this.isValid ? weeksInWeekYear2(this.weekYear) : NaN; + } + /** + * Returns the resolved Intl options for this DateTime. + * This is useful in understanding the behavior of formatting methods + * @param {Object} opts - the same options as toLocaleString + * @return {Object} + */ + resolvedLocaleOptions(opts = {}) { + const { locale, numberingSystem, calendar } = Formatter2.create( + this.loc.clone(opts), + opts + ).resolvedOptions(this); + return { locale, numberingSystem, outputCalendar: calendar }; + } + // TRANSFORM + /** + * "Set" the DateTime's zone to UTC. Returns a newly-constructed DateTime. + * + * Equivalent to {@link DateTime#setZone}('utc') + * @param {number} [offset=0] - optionally, an offset from UTC in minutes + * @param {Object} [opts={}] - options to pass to `setZone()` + * @return {DateTime} + */ + toUTC(offset3 = 0, opts = {}) { + return this.setZone(FixedOffsetZone2.instance(offset3), opts); + } + /** + * "Set" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime. + * + * Equivalent to `setZone('local')` + * @return {DateTime} + */ + toLocal() { + return this.setZone(Settings2.defaultZone); + } + /** + * "Set" the DateTime's zone to specified zone. Returns a newly-constructed DateTime. + * + * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones. + * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class. + * @param {Object} opts - options + * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this. + * @return {DateTime} + */ + setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) { + zone = normalizeZone2(zone, Settings2.defaultZone); + if (zone.equals(this.zone)) { + return this; + } else if (!zone.isValid) { + return _DateTime.invalid(unsupportedZone2(zone)); + } else { + let newTS = this.ts; + if (keepLocalTime || keepCalendarTime) { + const offsetGuess = zone.offset(this.ts); + const asObj = this.toObject(); + [newTS] = objToTS2(asObj, offsetGuess, zone); + } + return clone3(this, { ts: newTS, zone }); + } + } + /** + * "Set" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime. + * @param {Object} properties - the properties to set + * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' }) + * @return {DateTime} + */ + reconfigure({ locale, numberingSystem, outputCalendar } = {}) { + const loc = this.loc.clone({ locale, numberingSystem, outputCalendar }); + return clone3(this, { loc }); + } + /** + * "Set" the locale. Returns a newly-constructed DateTime. + * Just a convenient alias for reconfigure({ locale }) + * @example DateTime.local(2017, 5, 25).setLocale('en-GB') + * @return {DateTime} + */ + setLocale(locale) { + return this.reconfigure({ locale }); + } + /** + * "Set" the values of specified units. Returns a newly-constructed DateTime. + * You can only set units with this method; for "setting" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}. + * @param {Object} values - a mapping of units to numbers + * @example dt.set({ year: 2017 }) + * @example dt.set({ hour: 8, minute: 30 }) + * @example dt.set({ weekday: 5 }) + * @example dt.set({ year: 2005, ordinal: 234 }) + * @return {DateTime} + */ + set(values) { + if (!this.isValid) + return this; + const normalized = normalizeObject2(values, normalizeUnit2), settingWeekStuff = !isUndefined2(normalized.weekYear) || !isUndefined2(normalized.weekNumber) || !isUndefined2(normalized.weekday), containsOrdinal = !isUndefined2(normalized.ordinal), containsGregorYear = !isUndefined2(normalized.year), containsGregorMD = !isUndefined2(normalized.month) || !isUndefined2(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber; + if ((containsGregor || containsOrdinal) && definiteWeekDef) { + throw new ConflictingSpecificationError2( + "Can't mix weekYear/weekNumber units with year/month/day or ordinals" + ); + } + if (containsGregorMD && containsOrdinal) { + throw new ConflictingSpecificationError2("Can't mix ordinal dates with month/day"); + } + let mixed; + if (settingWeekStuff) { + mixed = weekToGregorian2({ ...gregorianToWeek2(this.c), ...normalized }); + } else if (!isUndefined2(normalized.ordinal)) { + mixed = ordinalToGregorian2({ ...gregorianToOrdinal2(this.c), ...normalized }); + } else { + mixed = { ...this.toObject(), ...normalized }; + if (isUndefined2(normalized.day)) { + mixed.day = Math.min(daysInMonth2(mixed.year, mixed.month), mixed.day); + } + } + const [ts, o] = objToTS2(mixed, this.o, this.zone); + return clone3(this, { ts, o }); + } + /** + * Add a period of time to this DateTime and return the resulting DateTime + * + * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between. + * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + * @example DateTime.now().plus(123) //~> in 123 milliseconds + * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes + * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow + * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday + * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min + * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min + * @return {DateTime} + */ + plus(duration) { + if (!this.isValid) + return this; + const dur = Duration2.fromDurationLike(duration); + return clone3(this, adjustTime2(this, dur)); + } + /** + * Subtract a period of time to this DateTime and return the resulting DateTime + * See {@link DateTime#plus} + * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + @return {DateTime} + */ + minus(duration) { + if (!this.isValid) + return this; + const dur = Duration2.fromDurationLike(duration).negate(); + return clone3(this, adjustTime2(this, dur)); + } + /** + * "Set" this DateTime to the beginning of a unit of time. + * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'. + * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01' + * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01' + * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays + * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00' + * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00' + * @return {DateTime} + */ + startOf(unit) { + if (!this.isValid) + return this; + const o = {}, normalizedUnit = Duration2.normalizeUnit(unit); + switch (normalizedUnit) { + case "years": + o.month = 1; + case "quarters": + case "months": + o.day = 1; + case "weeks": + case "days": + o.hour = 0; + case "hours": + o.minute = 0; + case "minutes": + o.second = 0; + case "seconds": + o.millisecond = 0; + break; + } + if (normalizedUnit === "weeks") { + o.weekday = 1; + } + if (normalizedUnit === "quarters") { + const q = Math.ceil(this.month / 3); + o.month = (q - 1) * 3 + 1; + } + return this.set(o); + } + /** + * "Set" this DateTime to the end (meaning the last millisecond) of a unit of time + * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'. + * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00' + * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00' + * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays + * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00' + * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00' + * @return {DateTime} + */ + endOf(unit) { + return this.isValid ? this.plus({ [unit]: 1 }).startOf(unit).minus(1) : this; + } + // OUTPUT + /** + * Returns a string representation of this DateTime formatted according to the specified format string. + * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens). + * Defaults to en-US if no locale has been specified, regardless of the system's locale. + * @param {string} fmt - the format string + * @param {Object} opts - opts to override the configuration options on this DateTime + * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22' + * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22' + * @example DateTime.now().toFormat('yyyy LLL dd', { locale: "fr" }) //=> '2017 avr. 22' + * @example DateTime.now().toFormat("HH 'hours and' mm 'minutes'") //=> '20 hours and 55 minutes' + * @return {string} + */ + toFormat(fmt, opts = {}) { + return this.isValid ? Formatter2.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt) : INVALID5; + } + /** + * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`. + * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation + * of the DateTime in the assigned locale. + * Defaults to the system's locale if no locale has been specified + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options + * @param {Object} opts - opts to override the configuration options on this DateTime + * @example DateTime.now().toLocaleString(); //=> 4/20/2017 + * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017' + * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017' + * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022' + * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM' + * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM' + * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20' + * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM' + * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32' + * @return {string} + */ + toLocaleString(formatOpts = DATE_SHORT2, opts = {}) { + return this.isValid ? Formatter2.create(this.loc.clone(opts), formatOpts).formatDateTime(this) : INVALID5; + } + /** + * Returns an array of format "parts", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output. + * Defaults to the system's locale if no locale has been specified + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts + * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`. + * @example DateTime.now().toLocaleParts(); //=> [ + * //=> { type: 'day', value: '25' }, + * //=> { type: 'literal', value: '/' }, + * //=> { type: 'month', value: '05' }, + * //=> { type: 'literal', value: '/' }, + * //=> { type: 'year', value: '1982' } + * //=> ] + */ + toLocaleParts(opts = {}) { + return this.isValid ? Formatter2.create(this.loc.clone(opts), opts).formatDateTimeParts(this) : []; + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime + * @param {Object} opts - options + * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0 + * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0 + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @param {boolean} [opts.extendedZone=false] - add the time zone format extension + * @param {string} [opts.format='extended'] - choose between the basic and extended format + * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z' + * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00' + * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335' + * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400' + * @return {string} + */ + toISO({ + format = "extended", + suppressSeconds = false, + suppressMilliseconds = false, + includeOffset = true, + extendedZone = false + } = {}) { + if (!this.isValid) { + return null; + } + const ext = format === "extended"; + let c = toISODate2(this, ext); + c += "T"; + c += toISOTime2(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone); + return c; + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime's date component + * @param {Object} opts - options + * @param {string} [opts.format='extended'] - choose between the basic and extended format + * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25' + * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525' + * @return {string} + */ + toISODate({ format = "extended" } = {}) { + if (!this.isValid) { + return null; + } + return toISODate2(this, format === "extended"); + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime's week date + * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2' + * @return {string} + */ + toISOWeekDate() { + return toTechFormat2(this, "kkkk-'W'WW-c"); + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime's time component + * @param {Object} opts - options + * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0 + * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0 + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @param {boolean} [opts.extendedZone=true] - add the time zone format extension + * @param {boolean} [opts.includePrefix=false] - include the `T` prefix + * @param {string} [opts.format='extended'] - choose between the basic and extended format + * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z' + * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z' + * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z' + * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z' + * @return {string} + */ + toISOTime({ + suppressMilliseconds = false, + suppressSeconds = false, + includeOffset = true, + includePrefix = false, + extendedZone = false, + format = "extended" + } = {}) { + if (!this.isValid) { + return null; + } + let c = includePrefix ? "T" : ""; + return c + toISOTime2( + this, + format === "extended", + suppressSeconds, + suppressMilliseconds, + includeOffset, + extendedZone + ); + } + /** + * Returns an RFC 2822-compatible string representation of this DateTime + * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000' + * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400' + * @return {string} + */ + toRFC2822() { + return toTechFormat2(this, "EEE, dd LLL yyyy HH:mm:ss ZZZ", false); + } + /** + * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT. + * Specifically, the string conforms to RFC 1123. + * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 + * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT' + * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT' + * @return {string} + */ + toHTTP() { + return toTechFormat2(this.toUTC(), "EEE, dd LLL yyyy HH:mm:ss 'GMT'"); + } + /** + * Returns a string representation of this DateTime appropriate for use in SQL Date + * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13' + * @return {string} + */ + toSQLDate() { + if (!this.isValid) { + return null; + } + return toISODate2(this, true); + } + /** + * Returns a string representation of this DateTime appropriate for use in SQL Time + * @param {Object} opts - options + * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset. + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00' + * @example DateTime.utc().toSQL() //=> '05:15:16.345' + * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00' + * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345' + * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York' + * @return {string} + */ + toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) { + let fmt = "HH:mm:ss.SSS"; + if (includeZone || includeOffset) { + if (includeOffsetSpace) { + fmt += " "; + } + if (includeZone) { + fmt += "z"; + } else if (includeOffset) { + fmt += "ZZ"; + } + } + return toTechFormat2(this, fmt, true); + } + /** + * Returns a string representation of this DateTime appropriate for use in SQL DateTime + * @param {Object} opts - options + * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset. + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00' + * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z' + * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00' + * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000' + * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York' + * @return {string} + */ + toSQL(opts = {}) { + if (!this.isValid) { + return null; + } + return `${this.toSQLDate()} ${this.toSQLTime(opts)}`; + } + /** + * Returns a string representation of this DateTime appropriate for debugging + * @return {string} + */ + toString() { + return this.isValid ? this.toISO() : INVALID5; + } + /** + * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis} + * @return {number} + */ + valueOf() { + return this.toMillis(); + } + /** + * Returns the epoch milliseconds of this DateTime. + * @return {number} + */ + toMillis() { + return this.isValid ? this.ts : NaN; + } + /** + * Returns the epoch seconds of this DateTime. + * @return {number} + */ + toSeconds() { + return this.isValid ? this.ts / 1e3 : NaN; + } + /** + * Returns the epoch seconds (as a whole number) of this DateTime. + * @return {number} + */ + toUnixInteger() { + return this.isValid ? Math.floor(this.ts / 1e3) : NaN; + } + /** + * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON. + * @return {string} + */ + toJSON() { + return this.toISO(); + } + /** + * Returns a BSON serializable equivalent to this DateTime. + * @return {Date} + */ + toBSON() { + return this.toJSDate(); + } + /** + * Returns a JavaScript object with this DateTime's year, month, day, and so on. + * @param opts - options for generating the object + * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output + * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 } + * @return {Object} + */ + toObject(opts = {}) { + if (!this.isValid) + return {}; + const base = { ...this.c }; + if (opts.includeConfig) { + base.outputCalendar = this.outputCalendar; + base.numberingSystem = this.loc.numberingSystem; + base.locale = this.loc.locale; + } + return base; + } + /** + * Returns a JavaScript Date equivalent to this DateTime. + * @return {Date} + */ + toJSDate() { + return new Date(this.isValid ? this.ts : NaN); + } + // COMPARE + /** + * Return the difference between two DateTimes as a Duration. + * @param {DateTime} otherDateTime - the DateTime to compare this one to + * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration. + * @param {Object} opts - options that affect the creation of the Duration + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @example + * var i1 = DateTime.fromISO('1982-05-25T09:45'), + * i2 = DateTime.fromISO('1983-10-14T10:30'); + * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 } + * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 } + * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 } + * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 } + * @return {Duration} + */ + diff(otherDateTime, unit = "milliseconds", opts = {}) { + if (!this.isValid || !otherDateTime.isValid) { + return Duration2.invalid("created by diffing an invalid DateTime"); + } + const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts }; + const units = maybeArray2(unit).map(Duration2.normalizeUnit), otherIsLater = otherDateTime.valueOf() > this.valueOf(), earlier = otherIsLater ? this : otherDateTime, later = otherIsLater ? otherDateTime : this, diffed = diff(earlier, later, units, durOpts); + return otherIsLater ? diffed.negate() : diffed; + } + /** + * Return the difference between this DateTime and right now. + * See {@link DateTime#diff} + * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration + * @param {Object} opts - options that affect the creation of the Duration + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @return {Duration} + */ + diffNow(unit = "milliseconds", opts = {}) { + return this.diff(_DateTime.now(), unit, opts); + } + /** + * Return an Interval spanning between this DateTime and another DateTime + * @param {DateTime} otherDateTime - the other end point of the Interval + * @return {Interval} + */ + until(otherDateTime) { + return this.isValid ? Interval2.fromDateTimes(this, otherDateTime) : this; + } + /** + * Return whether this DateTime is in the same unit of time as another DateTime. + * Higher-order units must also be identical for this function to return `true`. + * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed. + * @param {DateTime} otherDateTime - the other DateTime + * @param {string} unit - the unit of time to check sameness on + * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day + * @return {boolean} + */ + hasSame(otherDateTime, unit) { + if (!this.isValid) + return false; + const inputMs = otherDateTime.valueOf(); + const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true }); + return adjustedToZone.startOf(unit) <= inputMs && inputMs <= adjustedToZone.endOf(unit); + } + /** + * Equality check + * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid. + * To compare just the millisecond values, use `+dt1 === +dt2`. + * @param {DateTime} other - the other DateTime + * @return {boolean} + */ + equals(other) { + return this.isValid && other.isValid && this.valueOf() === other.valueOf() && this.zone.equals(other.zone) && this.loc.equals(other.loc); + } + /** + * Returns a string representation of a this time relative to now, such as "in two days". Can only internationalize if your + * platform supports Intl.RelativeTimeFormat. Rounds down by default. + * @param {Object} options - options that affect the output + * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now. + * @param {string} [options.style="long"] - the style of units, must be "long", "short", or "narrow" + * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of "years", "quarters", "months", "weeks", "days", "hours", "minutes", or "seconds" + * @param {boolean} [options.round=true] - whether to round the numbers in the output. + * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding. + * @param {string} options.locale - override the locale of this DateTime + * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this + * @example DateTime.now().plus({ days: 1 }).toRelative() //=> "in 1 day" + * @example DateTime.now().setLocale("es").toRelative({ days: 1 }) //=> "dentro de 1 día" + * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: "fr" }) //=> "dans 23 heures" + * @example DateTime.now().minus({ days: 2 }).toRelative() //=> "2 days ago" + * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: "hours" }) //=> "48 hours ago" + * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> "1.5 days ago" + */ + toRelative(options = {}) { + if (!this.isValid) + return null; + const base = options.base || _DateTime.fromObject({}, { zone: this.zone }), padding = options.padding ? this < base ? -options.padding : options.padding : 0; + let units = ["years", "months", "days", "hours", "minutes", "seconds"]; + let unit = options.unit; + if (Array.isArray(options.unit)) { + units = options.unit; + unit = void 0; + } + return diffRelative2(base, this.plus(padding), { + ...options, + numeric: "always", + units, + unit + }); + } + /** + * Returns a string representation of this date relative to today, such as "yesterday" or "next month". + * Only internationalizes on platforms that supports Intl.RelativeTimeFormat. + * @param {Object} options - options that affect the output + * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now. + * @param {string} options.locale - override the locale of this DateTime + * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of "years", "quarters", "months", "weeks", or "days" + * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this + * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> "tomorrow" + * @example DateTime.now().setLocale("es").plus({ days: 1 }).toRelative() //=> ""mañana" + * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: "fr" }) //=> "demain" + * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> "2 days ago" + */ + toRelativeCalendar(options = {}) { + if (!this.isValid) + return null; + return diffRelative2(options.base || _DateTime.fromObject({}, { zone: this.zone }), this, { + ...options, + numeric: "auto", + units: ["years", "months", "days"], + calendary: true + }); + } + /** + * Return the min of several date times + * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum + * @return {DateTime} the min DateTime, or undefined if called with no argument + */ + static min(...dateTimes) { + if (!dateTimes.every(_DateTime.isDateTime)) { + throw new InvalidArgumentError2("min requires all arguments be DateTimes"); + } + return bestBy2(dateTimes, (i) => i.valueOf(), Math.min); + } + /** + * Return the max of several date times + * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum + * @return {DateTime} the max DateTime, or undefined if called with no argument + */ + static max(...dateTimes) { + if (!dateTimes.every(_DateTime.isDateTime)) { + throw new InvalidArgumentError2("max requires all arguments be DateTimes"); + } + return bestBy2(dateTimes, (i) => i.valueOf(), Math.max); + } + // MISC + /** + * Explain how a string would be parsed by fromFormat() + * @param {string} text - the string to parse + * @param {string} fmt - the format the string is expected to be in (see description) + * @param {Object} options - options taken by fromFormat() + * @return {Object} + */ + static fromFormatExplain(text2, fmt, options = {}) { + const { locale = null, numberingSystem = null } = options, localeToUse = Locale2.fromOpts({ + locale, + numberingSystem, + defaultToEN: true + }); + return explainFromTokens2(localeToUse, text2, fmt); + } + /** + * @deprecated use fromFormatExplain instead + */ + static fromStringExplain(text2, fmt, options = {}) { + return _DateTime.fromFormatExplain(text2, fmt, options); + } + // FORMAT PRESETS + /** + * {@link DateTime#toLocaleString} format like 10/14/1983 + * @type {Object} + */ + static get DATE_SHORT() { + return DATE_SHORT2; + } + /** + * {@link DateTime#toLocaleString} format like 'Oct 14, 1983' + * @type {Object} + */ + static get DATE_MED() { + return DATE_MED2; + } + /** + * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983' + * @type {Object} + */ + static get DATE_MED_WITH_WEEKDAY() { + return DATE_MED_WITH_WEEKDAY2; + } + /** + * {@link DateTime#toLocaleString} format like 'October 14, 1983' + * @type {Object} + */ + static get DATE_FULL() { + return DATE_FULL2; + } + /** + * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983' + * @type {Object} + */ + static get DATE_HUGE() { + return DATE_HUGE2; + } + /** + * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get TIME_SIMPLE() { + return TIME_SIMPLE2; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get TIME_WITH_SECONDS() { + return TIME_WITH_SECONDS2; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is. + * @type {Object} + */ + static get TIME_WITH_SHORT_OFFSET() { + return TIME_WITH_SHORT_OFFSET2; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is. + * @type {Object} + */ + static get TIME_WITH_LONG_OFFSET() { + return TIME_WITH_LONG_OFFSET2; + } + /** + * {@link DateTime#toLocaleString} format like '09:30', always 24-hour. + * @type {Object} + */ + static get TIME_24_SIMPLE() { + return TIME_24_SIMPLE2; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour. + * @type {Object} + */ + static get TIME_24_WITH_SECONDS() { + return TIME_24_WITH_SECONDS2; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour. + * @type {Object} + */ + static get TIME_24_WITH_SHORT_OFFSET() { + return TIME_24_WITH_SHORT_OFFSET2; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour. + * @type {Object} + */ + static get TIME_24_WITH_LONG_OFFSET() { + return TIME_24_WITH_LONG_OFFSET2; + } + /** + * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_SHORT() { + return DATETIME_SHORT2; + } + /** + * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_SHORT_WITH_SECONDS() { + return DATETIME_SHORT_WITH_SECONDS2; + } + /** + * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_MED() { + return DATETIME_MED2; + } + /** + * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_MED_WITH_SECONDS() { + return DATETIME_MED_WITH_SECONDS2; + } + /** + * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_MED_WITH_WEEKDAY() { + return DATETIME_MED_WITH_WEEKDAY2; + } + /** + * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_FULL() { + return DATETIME_FULL2; + } + /** + * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_FULL_WITH_SECONDS() { + return DATETIME_FULL_WITH_SECONDS2; + } + /** + * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_HUGE() { + return DATETIME_HUGE2; + } + /** + * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_HUGE_WITH_SECONDS() { + return DATETIME_HUGE_WITH_SECONDS2; + } + }; + function friendlyDateTime2(dateTimeish) { + if (DateTime2.isDateTime(dateTimeish)) { + return dateTimeish; + } else if (dateTimeish && dateTimeish.valueOf && isNumber2(dateTimeish.valueOf())) { + return DateTime2.fromJSDate(dateTimeish); + } else if (dateTimeish && typeof dateTimeish === "object") { + return DateTime2.fromObject(dateTimeish); + } else { + throw new InvalidArgumentError2( + `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}` + ); + } + } + var DEFAULT_QUERY_SETTINGS = { + renderNullAs: "\\-", + taskCompletionTracking: false, + taskCompletionUseEmojiShorthand: false, + taskCompletionText: "completion", + taskCompletionDateFormat: "yyyy-MM-dd", + recursiveSubTaskCompletion: false, + warnOnEmptyResult: true, + refreshEnabled: true, + refreshInterval: 2500, + defaultDateFormat: "MMMM dd, yyyy", + defaultDateTimeFormat: "h:mm a - MMMM dd, yyyy", + maxRecursiveRenderDepth: 4, + tableIdColumnName: "File", + tableGroupColumnName: "Group", + showResultCount: true + }; + var DEFAULT_EXPORT_SETTINGS = { + allowHtml: true + }; + ({ + ...DEFAULT_QUERY_SETTINGS, + ...DEFAULT_EXPORT_SETTINGS, + ...{ + inlineQueryPrefix: "=", + inlineJsQueryPrefix: "$=", + inlineQueriesInCodeblocks: true, + enableInlineDataview: true, + enableDataviewJs: false, + enableInlineDataviewJs: false, + prettyRenderInlineFields: true, + prettyRenderInlineFieldsInLivePreview: true, + dataviewJsKeyword: "dataviewjs" + } }); + var Success = class _Success { + constructor(value) { + this.value = value; + this.successful = true; + } + map(f) { + return new _Success(f(this.value)); + } + flatMap(f) { + return f(this.value); + } + mapErr(f) { + return this; + } + bimap(succ2, _fail) { + return this.map(succ2); + } + orElse(_value) { + return this.value; + } + cast() { + return this; + } + orElseThrow(_message) { + return this.value; + } + }; + var Failure = class _Failure { + constructor(error) { + this.error = error; + this.successful = false; + } + map(_f) { + return this; + } + flatMap(_f) { + return this; + } + mapErr(f) { + return new _Failure(f(this.error)); + } + bimap(_succ, fail2) { + return this.mapErr(fail2); + } + orElse(value) { + return value; + } + cast() { + return this; + } + orElseThrow(message) { + if (message) + throw new Error(message(this.error)); + else + throw new Error("" + this.error); + } + }; + var Result; + (function(Result2) { + function success(value) { + return new Success(value); + } + Result2.success = success; + function failure(error) { + return new Failure(error); + } + Result2.failure = failure; + function flatMap2(first, second, f) { + if (first.successful) { + if (second.successful) + return f(first.value, second.value); + else + return failure(second.error); + } else { + return failure(first.error); + } + } + Result2.flatMap2 = flatMap2; + function map2(first, second, f) { + return flatMap2(first, second, (a, b) => success(f(a, b))); + } + Result2.map2 = map2; + })(Result || (Result = {})); + var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; + var parsimmon_umd_min = { exports: {} }; + parsimmon_umd_min.exports; + (function(module3, exports2) { + !function(n3, t) { + module3.exports = t(); + }("undefined" != typeof self ? self : commonjsGlobal, function() { + return function(n3) { + var t = {}; + function r(e) { + if (t[e]) + return t[e].exports; + var u = t[e] = { i: e, l: false, exports: {} }; + return n3[e].call(u.exports, u, u.exports, r), u.l = true, u.exports; + } + return r.m = n3, r.c = t, r.d = function(n4, t2, e) { + r.o(n4, t2) || Object.defineProperty(n4, t2, { configurable: false, enumerable: true, get: e }); + }, r.r = function(n4) { + Object.defineProperty(n4, "__esModule", { value: true }); + }, r.n = function(n4) { + var t2 = n4 && n4.__esModule ? function() { + return n4.default; + } : function() { + return n4; + }; + return r.d(t2, "a", t2), t2; + }, r.o = function(n4, t2) { + return Object.prototype.hasOwnProperty.call(n4, t2); + }, r.p = "", r(r.s = 0); + }([function(n3, t, r) { + function e(n4) { + if (!(this instanceof e)) + return new e(n4); + this._ = n4; + } + var u = e.prototype; + function o(n4, t2) { + for (var r2 = 0; r2 < n4; r2++) + t2(r2); + } + function i(n4, t2, r2) { + return function(n5, t3) { + o(t3.length, function(r3) { + n5(t3[r3], r3, t3); + }); + }(function(r3, e2, u2) { + t2 = n4(t2, r3, e2, u2); + }, r2), t2; + } + function a(n4, t2) { + return i(function(t3, r2, e2, u2) { + return t3.concat([n4(r2, e2, u2)]); + }, [], t2); + } + function f(n4, t2) { + var r2 = { v: 0, buf: t2 }; + return o(n4, function() { + var n5; + r2 = { v: r2.v << 1 | (n5 = r2.buf, n5[0] >> 7), buf: function(n6) { + var t3 = i(function(n7, t4, r3, e2) { + return n7.concat(r3 === e2.length - 1 ? Buffer.from([t4, 0]).readUInt16BE(0) : e2.readUInt16BE(r3)); + }, [], n6); + return Buffer.from(a(function(n7) { + return (n7 << 1 & 65535) >> 8; + }, t3)); + }(r2.buf) }; + }), r2; + } + function c() { + return "undefined" != typeof Buffer; + } + function s3() { + if (!c()) + throw new Error("Buffer global does not exist; please use webpack if you need to parse Buffers in the browser."); + } + function l3(n4) { + s3(); + var t2 = i(function(n5, t3) { + return n5 + t3; + }, 0, n4); + if (t2 % 8 != 0) + throw new Error("The bits [" + n4.join(", ") + "] add up to " + t2 + " which is not an even number of bytes; the total should be divisible by 8"); + var r2, u2 = t2 / 8, o2 = (r2 = function(n5) { + return n5 > 48; + }, i(function(n5, t3) { + return n5 || (r2(t3) ? t3 : n5); + }, null, n4)); + if (o2) + throw new Error(o2 + " bit range requested exceeds 48 bit (6 byte) Number max."); + return new e(function(t3, r3) { + var e2 = u2 + r3; + return e2 > t3.length ? x(r3, u2.toString() + " bytes") : b(e2, i(function(n5, t4) { + var r4 = f(t4, n5.buf); + return { coll: n5.coll.concat(r4.v), buf: r4.buf }; + }, { coll: [], buf: t3.slice(r3, e2) }, n4).coll); + }); + } + function h(n4, t2) { + return new e(function(r2, e2) { + return s3(), e2 + t2 > r2.length ? x(e2, t2 + " bytes for " + n4) : b(e2 + t2, r2.slice(e2, e2 + t2)); + }); + } + function p(n4, t2) { + if ("number" != typeof (r2 = t2) || Math.floor(r2) !== r2 || t2 < 0 || t2 > 6) + throw new Error(n4 + " requires integer length in range [0, 6]."); + var r2; + } + function d(n4) { + return p("uintBE", n4), h("uintBE(" + n4 + ")", n4).map(function(t2) { + return t2.readUIntBE(0, n4); + }); + } + function v(n4) { + return p("uintLE", n4), h("uintLE(" + n4 + ")", n4).map(function(t2) { + return t2.readUIntLE(0, n4); + }); + } + function g(n4) { + return p("intBE", n4), h("intBE(" + n4 + ")", n4).map(function(t2) { + return t2.readIntBE(0, n4); + }); + } + function m(n4) { + return p("intLE", n4), h("intLE(" + n4 + ")", n4).map(function(t2) { + return t2.readIntLE(0, n4); + }); + } + function y(n4) { + return n4 instanceof e; + } + function E(n4) { + return "[object Array]" === {}.toString.call(n4); + } + function w(n4) { + return c() && Buffer.isBuffer(n4); + } + function b(n4, t2) { + return { status: true, index: n4, value: t2, furthest: -1, expected: [] }; + } + function x(n4, t2) { + return E(t2) || (t2 = [t2]), { status: false, index: -1, value: null, furthest: n4, expected: t2 }; + } + function B(n4, t2) { + if (!t2) + return n4; + if (n4.furthest > t2.furthest) + return n4; + var r2 = n4.furthest === t2.furthest ? function(n5, t3) { + if (function() { + if (void 0 !== e._supportsSet) + return e._supportsSet; + var n6 = "undefined" != typeof Set; + return e._supportsSet = n6, n6; + }() && Array.from) { + for (var r3 = new Set(n5), u2 = 0; u2 < t3.length; u2++) + r3.add(t3[u2]); + var o2 = Array.from(r3); + return o2.sort(), o2; + } + for (var i2 = {}, a2 = 0; a2 < n5.length; a2++) + i2[n5[a2]] = true; + for (var f2 = 0; f2 < t3.length; f2++) + i2[t3[f2]] = true; + var c2 = []; + for (var s4 in i2) + ({}).hasOwnProperty.call(i2, s4) && c2.push(s4); + return c2.sort(), c2; + }(n4.expected, t2.expected) : t2.expected; + return { status: n4.status, index: n4.index, value: n4.value, furthest: t2.furthest, expected: r2 }; + } + var j = {}; + function S(n4, t2) { + if (w(n4)) + return { offset: t2, line: -1, column: -1 }; + n4 in j || (j[n4] = {}); + for (var r2 = j[n4], e2 = 0, u2 = 0, o2 = 0, i2 = t2; i2 >= 0; ) { + if (i2 in r2) { + e2 = r2[i2].line, 0 === o2 && (o2 = r2[i2].lineStart); + break; + } + ("\n" === n4.charAt(i2) || "\r" === n4.charAt(i2) && "\n" !== n4.charAt(i2 + 1)) && (u2++, 0 === o2 && (o2 = i2 + 1)), i2--; + } + var a2 = e2 + u2, f2 = t2 - o2; + return r2[t2] = { line: a2, lineStart: o2 }, { offset: t2, line: a2 + 1, column: f2 + 1 }; + } + function _(n4) { + if (!y(n4)) + throw new Error("not a parser: " + n4); + } + function L(n4, t2) { + return "string" == typeof n4 ? n4.charAt(t2) : n4[t2]; + } + function O(n4) { + if ("number" != typeof n4) + throw new Error("not a number: " + n4); + } + function k(n4) { + if ("function" != typeof n4) + throw new Error("not a function: " + n4); + } + function P(n4) { + if ("string" != typeof n4) + throw new Error("not a string: " + n4); + } + var q = 2, A = 3, I = 8, F = 5 * I, M = 4 * I, z2 = " "; + function R(n4, t2) { + return new Array(t2 + 1).join(n4); + } + function U(n4, t2, r2) { + var e2 = t2 - n4.length; + return e2 <= 0 ? n4 : R(r2, e2) + n4; + } + function W(n4, t2, r2, e2) { + return { from: n4 - t2 > 0 ? n4 - t2 : 0, to: n4 + r2 > e2 ? e2 : n4 + r2 }; + } + function D(n4, t2) { + var r2, e2, u2, o2, f2, c2 = t2.index, s4 = c2.offset, l4 = 1; + if (s4 === n4.length) + return "Got the end of the input"; + if (w(n4)) { + var h2 = s4 - s4 % I, p2 = s4 - h2, d2 = W(h2, F, M + I, n4.length), v2 = a(function(n5) { + return a(function(n6) { + return U(n6.toString(16), 2, "0"); + }, n5); + }, function(n5, t3) { + var r3 = n5.length, e3 = [], u3 = 0; + if (r3 <= t3) + return [n5.slice()]; + for (var o3 = 0; o3 < r3; o3++) + e3[u3] || e3.push([]), e3[u3].push(n5[o3]), (o3 + 1) % t3 == 0 && u3++; + return e3; + }(n4.slice(d2.from, d2.to).toJSON().data, I)); + o2 = function(n5) { + return 0 === n5.from && 1 === n5.to ? { from: n5.from, to: n5.to } : { from: n5.from / I, to: Math.floor(n5.to / I) }; + }(d2), e2 = h2 / I, r2 = 3 * p2, p2 >= 4 && (r2 += 1), l4 = 2, u2 = a(function(n5) { + return n5.length <= 4 ? n5.join(" ") : n5.slice(0, 4).join(" ") + " " + n5.slice(4).join(" "); + }, v2), (f2 = (8 * (o2.to > 0 ? o2.to - 1 : o2.to)).toString(16).length) < 2 && (f2 = 2); + } else { + var g2 = n4.split(/\r\n|[\n\r\u2028\u2029]/); + r2 = c2.column - 1, e2 = c2.line - 1, o2 = W(e2, q, A, g2.length), u2 = g2.slice(o2.from, o2.to), f2 = o2.to.toString().length; + } + var m2 = e2 - o2.from; + return w(n4) && (f2 = (8 * (o2.to > 0 ? o2.to - 1 : o2.to)).toString(16).length) < 2 && (f2 = 2), i(function(t3, e3, u3) { + var i2, a2 = u3 === m2, c3 = a2 ? "> " : z2; + return i2 = w(n4) ? U((8 * (o2.from + u3)).toString(16), f2, "0") : U((o2.from + u3 + 1).toString(), f2, " "), [].concat(t3, [c3 + i2 + " | " + e3], a2 ? [z2 + R(" ", f2) + " | " + U("", r2, " ") + R("^", l4)] : []); + }, [], u2).join("\n"); + } + function N(n4, t2) { + return ["\n", "-- PARSING FAILED " + R("-", 50), "\n\n", D(n4, t2), "\n\n", (r2 = t2.expected, 1 === r2.length ? "Expected:\n\n" + r2[0] : "Expected one of the following: \n\n" + r2.join(", ")), "\n"].join(""); + var r2; + } + function G(n4) { + return void 0 !== n4.flags ? n4.flags : [n4.global ? "g" : "", n4.ignoreCase ? "i" : "", n4.multiline ? "m" : "", n4.unicode ? "u" : "", n4.sticky ? "y" : ""].join(""); + } + function C() { + for (var n4 = [].slice.call(arguments), t2 = n4.length, r2 = 0; r2 < t2; r2 += 1) + _(n4[r2]); + return e(function(r3, e2) { + for (var u2, o2 = new Array(t2), i2 = 0; i2 < t2; i2 += 1) { + if (!(u2 = B(n4[i2]._(r3, e2), u2)).status) + return u2; + o2[i2] = u2.value, e2 = u2.index; + } + return B(b(e2, o2), u2); + }); + } + function J() { + var n4 = [].slice.call(arguments); + if (0 === n4.length) + throw new Error("seqMap needs at least one argument"); + var t2 = n4.pop(); + return k(t2), C.apply(null, n4).map(function(n5) { + return t2.apply(null, n5); + }); + } + function T() { + var n4 = [].slice.call(arguments), t2 = n4.length; + if (0 === t2) + return Y("zero alternates"); + for (var r2 = 0; r2 < t2; r2 += 1) + _(n4[r2]); + return e(function(t3, r3) { + for (var e2, u2 = 0; u2 < n4.length; u2 += 1) + if ((e2 = B(n4[u2]._(t3, r3), e2)).status) + return e2; + return e2; + }); + } + function V(n4, t2) { + return H(n4, t2).or(X([])); + } + function H(n4, t2) { + return _(n4), _(t2), J(n4, t2.then(n4).many(), function(n5, t3) { + return [n5].concat(t3); + }); + } + function K(n4) { + P(n4); + var t2 = "'" + n4 + "'"; + return e(function(r2, e2) { + var u2 = e2 + n4.length, o2 = r2.slice(e2, u2); + return o2 === n4 ? b(u2, o2) : x(e2, t2); + }); + } + function Q(n4, t2) { + !function(n5) { + if (!(n5 instanceof RegExp)) + throw new Error("not a regexp: " + n5); + for (var t3 = G(n5), r3 = 0; r3 < t3.length; r3++) { + var e2 = t3.charAt(r3); + if ("i" !== e2 && "m" !== e2 && "u" !== e2 && "s" !== e2) + throw new Error('unsupported regexp flag "' + e2 + '": ' + n5); + } + }(n4), arguments.length >= 2 ? O(t2) : t2 = 0; + var r2 = function(n5) { + return RegExp("^(?:" + n5.source + ")", G(n5)); + }(n4), u2 = "" + n4; + return e(function(n5, e2) { + var o2 = r2.exec(n5.slice(e2)); + if (o2) { + if (0 <= t2 && t2 <= o2.length) { + var i2 = o2[0], a2 = o2[t2]; + return b(e2 + i2.length, a2); + } + return x(e2, "valid match group (0 to " + o2.length + ") in " + u2); + } + return x(e2, u2); + }); + } + function X(n4) { + return e(function(t2, r2) { + return b(r2, n4); + }); + } + function Y(n4) { + return e(function(t2, r2) { + return x(r2, n4); + }); + } + function Z(n4) { + if (y(n4)) + return e(function(t2, r2) { + var e2 = n4._(t2, r2); + return e2.index = r2, e2.value = "", e2; + }); + if ("string" == typeof n4) + return Z(K(n4)); + if (n4 instanceof RegExp) + return Z(Q(n4)); + throw new Error("not a string, regexp, or parser: " + n4); + } + function $(n4) { + return _(n4), e(function(t2, r2) { + var e2 = n4._(t2, r2), u2 = t2.slice(r2, e2.index); + return e2.status ? x(r2, 'not "' + u2 + '"') : b(r2, null); + }); + } + function nn(n4) { + return k(n4), e(function(t2, r2) { + var e2 = L(t2, r2); + return r2 < t2.length && n4(e2) ? b(r2 + 1, e2) : x(r2, "a character/byte matching " + n4); + }); + } + function tn(n4, t2) { + arguments.length < 2 && (t2 = n4, n4 = void 0); + var r2 = e(function(n5, e2) { + return r2._ = t2()._, r2._(n5, e2); + }); + return n4 ? r2.desc(n4) : r2; + } + function rn() { + return Y("fantasy-land/empty"); + } + u.parse = function(n4) { + if ("string" != typeof n4 && !w(n4)) + throw new Error(".parse must be called with a string or Buffer as its argument"); + var t2, r2 = this.skip(an)._(n4, 0); + return t2 = r2.status ? { status: true, value: r2.value } : { status: false, index: S(n4, r2.furthest), expected: r2.expected }, delete j[n4], t2; + }, u.tryParse = function(n4) { + var t2 = this.parse(n4); + if (t2.status) + return t2.value; + var r2 = N(n4, t2), e2 = new Error(r2); + throw e2.type = "ParsimmonError", e2.result = t2, e2; + }, u.assert = function(n4, t2) { + return this.chain(function(r2) { + return n4(r2) ? X(r2) : Y(t2); + }); + }, u.or = function(n4) { + return T(this, n4); + }, u.trim = function(n4) { + return this.wrap(n4, n4); + }, u.wrap = function(n4, t2) { + return J(n4, this, t2, function(n5, t3) { + return t3; + }); + }, u.thru = function(n4) { + return n4(this); + }, u.then = function(n4) { + return _(n4), C(this, n4).map(function(n5) { + return n5[1]; + }); + }, u.many = function() { + var n4 = this; + return e(function(t2, r2) { + for (var e2 = [], u2 = void 0; ; ) { + if (!(u2 = B(n4._(t2, r2), u2)).status) + return B(b(r2, e2), u2); + if (r2 === u2.index) + throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause"); + r2 = u2.index, e2.push(u2.value); + } + }); + }, u.tieWith = function(n4) { + return P(n4), this.map(function(t2) { + if (function(n5) { + if (!E(n5)) + throw new Error("not an array: " + n5); + }(t2), t2.length) { + P(t2[0]); + for (var r2 = t2[0], e2 = 1; e2 < t2.length; e2++) + P(t2[e2]), r2 += n4 + t2[e2]; + return r2; + } + return ""; + }); + }, u.tie = function() { + return this.tieWith(""); + }, u.times = function(n4, t2) { + var r2 = this; + return arguments.length < 2 && (t2 = n4), O(n4), O(t2), e(function(e2, u2) { + for (var o2 = [], i2 = void 0, a2 = void 0, f2 = 0; f2 < n4; f2 += 1) { + if (a2 = B(i2 = r2._(e2, u2), a2), !i2.status) + return a2; + u2 = i2.index, o2.push(i2.value); + } + for (; f2 < t2 && (a2 = B(i2 = r2._(e2, u2), a2), i2.status); f2 += 1) + u2 = i2.index, o2.push(i2.value); + return B(b(u2, o2), a2); + }); + }, u.result = function(n4) { + return this.map(function() { + return n4; + }); + }, u.atMost = function(n4) { + return this.times(0, n4); + }, u.atLeast = function(n4) { + return J(this.times(n4), this.many(), function(n5, t2) { + return n5.concat(t2); + }); + }, u.map = function(n4) { + k(n4); + var t2 = this; + return e(function(r2, e2) { + var u2 = t2._(r2, e2); + return u2.status ? B(b(u2.index, n4(u2.value)), u2) : u2; + }); + }, u.contramap = function(n4) { + k(n4); + var t2 = this; + return e(function(r2, e2) { + var u2 = t2.parse(n4(r2.slice(e2))); + return u2.status ? b(e2 + r2.length, u2.value) : u2; + }); + }, u.promap = function(n4, t2) { + return k(n4), k(t2), this.contramap(n4).map(t2); + }, u.skip = function(n4) { + return C(this, n4).map(function(n5) { + return n5[0]; + }); + }, u.mark = function() { + return J(en, this, en, function(n4, t2, r2) { + return { start: n4, value: t2, end: r2 }; + }); + }, u.node = function(n4) { + return J(en, this, en, function(t2, r2, e2) { + return { name: n4, value: r2, start: t2, end: e2 }; + }); + }, u.sepBy = function(n4) { + return V(this, n4); + }, u.sepBy1 = function(n4) { + return H(this, n4); + }, u.lookahead = function(n4) { + return this.skip(Z(n4)); + }, u.notFollowedBy = function(n4) { + return this.skip($(n4)); + }, u.desc = function(n4) { + E(n4) || (n4 = [n4]); + var t2 = this; + return e(function(r2, e2) { + var u2 = t2._(r2, e2); + return u2.status || (u2.expected = n4), u2; + }); + }, u.fallback = function(n4) { + return this.or(X(n4)); + }, u.ap = function(n4) { + return J(n4, this, function(n5, t2) { + return n5(t2); + }); + }, u.chain = function(n4) { + var t2 = this; + return e(function(r2, e2) { + var u2 = t2._(r2, e2); + return u2.status ? B(n4(u2.value)._(r2, u2.index), u2) : u2; + }); + }, u.concat = u.or, u.empty = rn, u.of = X, u["fantasy-land/ap"] = u.ap, u["fantasy-land/chain"] = u.chain, u["fantasy-land/concat"] = u.concat, u["fantasy-land/empty"] = u.empty, u["fantasy-land/of"] = u.of, u["fantasy-land/map"] = u.map; + var en = e(function(n4, t2) { + return b(t2, S(n4, t2)); + }), un = e(function(n4, t2) { + return t2 >= n4.length ? x(t2, "any character/byte") : b(t2 + 1, L(n4, t2)); + }), on = e(function(n4, t2) { + return b(n4.length, n4.slice(t2)); + }), an = e(function(n4, t2) { + return t2 < n4.length ? x(t2, "EOF") : b(t2, null); + }), fn = Q(/[0-9]/).desc("a digit"), cn = Q(/[0-9]*/).desc("optional digits"), sn = Q(/[a-z]/i).desc("a letter"), ln = Q(/[a-z]*/i).desc("optional letters"), hn = Q(/\s*/).desc("optional whitespace"), pn = Q(/\s+/).desc("whitespace"), dn = K("\r"), vn = K("\n"), gn = K("\r\n"), mn = T(gn, vn, dn).desc("newline"), yn = T(mn, an); + e.all = on, e.alt = T, e.any = un, e.cr = dn, e.createLanguage = function(n4) { + var t2 = {}; + for (var r2 in n4) + ({}).hasOwnProperty.call(n4, r2) && function(r3) { + t2[r3] = tn(function() { + return n4[r3](t2); + }); + }(r2); + return t2; + }, e.crlf = gn, e.custom = function(n4) { + return e(n4(b, x)); + }, e.digit = fn, e.digits = cn, e.empty = rn, e.end = yn, e.eof = an, e.fail = Y, e.formatError = N, e.index = en, e.isParser = y, e.lazy = tn, e.letter = sn, e.letters = ln, e.lf = vn, e.lookahead = Z, e.makeFailure = x, e.makeSuccess = b, e.newline = mn, e.noneOf = function(n4) { + return nn(function(t2) { + return n4.indexOf(t2) < 0; + }).desc("none of '" + n4 + "'"); + }, e.notFollowedBy = $, e.of = X, e.oneOf = function(n4) { + for (var t2 = n4.split(""), r2 = 0; r2 < t2.length; r2++) + t2[r2] = "'" + t2[r2] + "'"; + return nn(function(t3) { + return n4.indexOf(t3) >= 0; + }).desc(t2); + }, e.optWhitespace = hn, e.Parser = e, e.range = function(n4, t2) { + return nn(function(r2) { + return n4 <= r2 && r2 <= t2; + }).desc(n4 + "-" + t2); + }, e.regex = Q, e.regexp = Q, e.sepBy = V, e.sepBy1 = H, e.seq = C, e.seqMap = J, e.seqObj = function() { + for (var n4, t2 = {}, r2 = 0, u2 = (n4 = arguments, Array.prototype.slice.call(n4)), o2 = u2.length, i2 = 0; i2 < o2; i2 += 1) { + var a2 = u2[i2]; + if (!y(a2)) { + if (E(a2) && 2 === a2.length && "string" == typeof a2[0] && y(a2[1])) { + var f2 = a2[0]; + if (Object.prototype.hasOwnProperty.call(t2, f2)) + throw new Error("seqObj: duplicate key " + f2); + t2[f2] = true, r2++; + continue; + } + throw new Error("seqObj arguments must be parsers or [string, parser] array pairs."); + } + } + if (0 === r2) + throw new Error("seqObj expects at least one named parser, found zero"); + return e(function(n5, t3) { + for (var r3, e2 = {}, i3 = 0; i3 < o2; i3 += 1) { + var a3, f3; + if (E(u2[i3]) ? (a3 = u2[i3][0], f3 = u2[i3][1]) : (a3 = null, f3 = u2[i3]), !(r3 = B(f3._(n5, t3), r3)).status) + return r3; + a3 && (e2[a3] = r3.value), t3 = r3.index; + } + return B(b(t3, e2), r3); + }); + }, e.string = K, e.succeed = X, e.takeWhile = function(n4) { + return k(n4), e(function(t2, r2) { + for (var e2 = r2; e2 < t2.length && n4(L(t2, e2)); ) + e2++; + return b(e2, t2.slice(r2, e2)); + }); + }, e.test = nn, e.whitespace = pn, e["fantasy-land/empty"] = rn, e["fantasy-land/of"] = X, e.Binary = { bitSeq: l3, bitSeqObj: function(n4) { + s3(); + var t2 = {}, r2 = 0, e2 = a(function(n5) { + if (E(n5)) { + var e3 = n5; + if (2 !== e3.length) + throw new Error("[" + e3.join(", ") + "] should be length 2, got length " + e3.length); + if (P(e3[0]), O(e3[1]), Object.prototype.hasOwnProperty.call(t2, e3[0])) + throw new Error("duplicate key in bitSeqObj: " + e3[0]); + return t2[e3[0]] = true, r2++, e3; + } + return O(n5), [null, n5]; + }, n4); + if (r2 < 1) + throw new Error("bitSeqObj expects at least one named pair, got [" + n4.join(", ") + "]"); + var u2 = a(function(n5) { + return n5[0]; + }, e2); + return l3(a(function(n5) { + return n5[1]; + }, e2)).map(function(n5) { + return i(function(n6, t3) { + return null !== t3[0] && (n6[t3[0]] = t3[1]), n6; + }, {}, a(function(t3, r3) { + return [t3, n5[r3]]; + }, u2)); + }); + }, byte: function(n4) { + if (s3(), O(n4), n4 > 255) + throw new Error("Value specified to byte constructor (" + n4 + "=0x" + n4.toString(16) + ") is larger in value than a single byte."); + var t2 = (n4 > 15 ? "0x" : "0x0") + n4.toString(16); + return e(function(r2, e2) { + var u2 = L(r2, e2); + return u2 === n4 ? b(e2 + 1, u2) : x(e2, t2); + }); + }, buffer: function(n4) { + return h("buffer", n4).map(function(n5) { + return Buffer.from(n5); + }); + }, encodedString: function(n4, t2) { + return h("string", t2).map(function(t3) { + return t3.toString(n4); + }); + }, uintBE: d, uint8BE: d(1), uint16BE: d(2), uint32BE: d(4), uintLE: v, uint8LE: v(1), uint16LE: v(2), uint32LE: v(4), intBE: g, int8BE: g(1), int16BE: g(2), int32BE: g(4), intLE: m, int8LE: m(1), int16LE: m(2), int32LE: m(4), floatBE: h("floatBE", 4).map(function(n4) { + return n4.readFloatBE(0); + }), floatLE: h("floatLE", 4).map(function(n4) { + return n4.readFloatLE(0); + }), doubleBE: h("doubleBE", 8).map(function(n4) { + return n4.readDoubleBE(0); + }), doubleLE: h("doubleLE", 8).map(function(n4) { + return n4.readDoubleLE(0); + }) }, n3.exports = e; + }]); + }); + })(parsimmon_umd_min, parsimmon_umd_min.exports); + var parsimmon_umd_minExports = parsimmon_umd_min.exports; + var emojiRegex2 = () => { + return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g; + }; + function normalizeDuration(dur) { + if (dur === void 0 || dur === null) + return dur; + return dur.shiftToAll().normalize(); + } + function getFileTitle(path) { + if (path.includes("/")) + path = path.substring(path.lastIndexOf("/") + 1); + if (path.endsWith(".md")) + path = path.substring(0, path.length - 3); + return path; + } + parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regex(new RegExp(emojiRegex2(), "")), parsimmon_umd_minExports.regex(/[0-9\p{Letter}_-]+/u).map((str) => str.toLocaleLowerCase()), parsimmon_umd_minExports.whitespace.map((_) => "-"), parsimmon_umd_minExports.any.map((_) => "")).many().map((result) => result.join("")); + var HEADER_CANONICALIZER = parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regex(new RegExp(emojiRegex2(), "")), parsimmon_umd_minExports.regex(/[0-9\p{Letter}_-]+/u), parsimmon_umd_minExports.whitespace.map((_) => " "), parsimmon_umd_minExports.any.map((_) => " ")).many().map((result) => { + return result.join("").split(/\s+/).join(" ").trim(); + }); + function normalizeHeaderForLink(header) { + return HEADER_CANONICALIZER.tryParse(header); + } + function renderMinimalDuration(dur) { + dur = normalizeDuration(dur); + dur = Duration2.fromObject(Object.fromEntries(Object.entries(dur.toObject()).filter(([, quantity]) => quantity != 0))); + return dur.toHuman(); + } + var Values; + (function(Values2) { + function toString(field, setting = DEFAULT_QUERY_SETTINGS, recursive = false) { + let wrapped = wrapValue(field); + if (!wrapped) + return setting.renderNullAs; + switch (wrapped.type) { + case "null": + return setting.renderNullAs; + case "string": + return wrapped.value; + case "number": + case "boolean": + return "" + wrapped.value; + case "html": + return wrapped.value.outerHTML; + case "widget": + return wrapped.value.markdown(); + case "link": + return wrapped.value.markdown(); + case "function": + return ""; + case "array": + let result = ""; + if (recursive) + result += "["; + result += wrapped.value.map((f) => toString(f, setting, true)).join(", "); + if (recursive) + result += "]"; + return result; + case "object": + return "{ " + Object.entries(wrapped.value).map((e) => e[0] + ": " + toString(e[1], setting, true)).join(", ") + " }"; + case "date": + if (wrapped.value.second == 0 && wrapped.value.hour == 0 && wrapped.value.minute == 0) { + return wrapped.value.toFormat(setting.defaultDateFormat); + } + return wrapped.value.toFormat(setting.defaultDateTimeFormat); + case "duration": + return renderMinimalDuration(wrapped.value); + } + } + Values2.toString = toString; + function wrapValue(val) { + if (isNull(val)) + return { type: "null", value: val }; + else if (isNumber3(val)) + return { type: "number", value: val }; + else if (isString3(val)) + return { type: "string", value: val }; + else if (isBoolean(val)) + return { type: "boolean", value: val }; + else if (isDuration(val)) + return { type: "duration", value: val }; + else if (isDate3(val)) + return { type: "date", value: val }; + else if (isWidget(val)) + return { type: "widget", value: val }; + else if (isArray(val)) + return { type: "array", value: val }; + else if (isLink(val)) + return { type: "link", value: val }; + else if (isFunction(val)) + return { type: "function", value: val }; + else if (isHtml(val)) + return { type: "html", value: val }; + else if (isObject(val)) + return { type: "object", value: val }; + else + return void 0; + } + Values2.wrapValue = wrapValue; + function mapLeaves(val, func) { + if (isObject(val)) { + let result = {}; + for (let [key, value] of Object.entries(val)) + result[key] = mapLeaves(value, func); + return result; + } else if (isArray(val)) { + let result = []; + for (let value of val) + result.push(mapLeaves(value, func)); + return result; + } else { + return func(val); + } + } + Values2.mapLeaves = mapLeaves; + function compareValue(val1, val2, linkNormalizer) { + var _a, _b; + if (val1 === void 0) + val1 = null; + if (val2 === void 0) + val2 = null; + if (val1 === null && val2 === null) + return 0; + else if (val1 === null) + return -1; + else if (val2 === null) + return 1; + let wrap1 = wrapValue(val1); + let wrap2 = wrapValue(val2); + if (wrap1 === void 0 && wrap2 === void 0) + return 0; + else if (wrap1 === void 0) + return -1; + else if (wrap2 === void 0) + return 1; + if (wrap1.type != wrap2.type) + return wrap1.type.localeCompare(wrap2.type); + if (wrap1.value === wrap2.value) + return 0; + switch (wrap1.type) { + case "string": + return wrap1.value.localeCompare(wrap2.value); + case "number": + if (wrap1.value < wrap2.value) + return -1; + else if (wrap1.value == wrap2.value) + return 0; + return 1; + case "null": + return 0; + case "boolean": + if (wrap1.value == wrap2.value) + return 0; + else + return wrap1.value ? 1 : -1; + case "link": + let link1 = wrap1.value; + let link2 = wrap2.value; + let normalize = linkNormalizer !== null && linkNormalizer !== void 0 ? linkNormalizer : (x) => x; + let pathCompare = normalize(link1.path).localeCompare(normalize(link2.path)); + if (pathCompare != 0) + return pathCompare; + let typeCompare = link1.type.localeCompare(link2.type); + if (typeCompare != 0) + return typeCompare; + if (link1.subpath && !link2.subpath) + return 1; + if (!link1.subpath && link2.subpath) + return -1; + if (!link1.subpath && !link2.subpath) + return 0; + return ((_a = link1.subpath) !== null && _a !== void 0 ? _a : "").localeCompare((_b = link2.subpath) !== null && _b !== void 0 ? _b : ""); + case "date": + return wrap1.value < wrap2.value ? -1 : wrap1.value.equals(wrap2.value) ? 0 : 1; + case "duration": + return wrap1.value < wrap2.value ? -1 : wrap1.value.equals(wrap2.value) ? 0 : 1; + case "array": + let f1 = wrap1.value; + let f2 = wrap2.value; + for (let index = 0; index < Math.min(f1.length, f2.length); index++) { + let comp = compareValue(f1[index], f2[index]); + if (comp != 0) + return comp; + } + return f1.length - f2.length; + case "object": + let o1 = wrap1.value; + let o2 = wrap2.value; + let k1 = Array.from(Object.keys(o1)); + let k2 = Array.from(Object.keys(o2)); + k1.sort(); + k2.sort(); + let keyCompare = compareValue(k1, k2); + if (keyCompare != 0) + return keyCompare; + for (let key of k1) { + let comp = compareValue(o1[key], o2[key]); + if (comp != 0) + return comp; + } + return 0; + case "widget": + case "html": + case "function": + return 0; + } + } + Values2.compareValue = compareValue; + function typeOf(val) { + var _a; + return (_a = wrapValue(val)) === null || _a === void 0 ? void 0 : _a.type; + } + Values2.typeOf = typeOf; + function isTruthy(field) { + let wrapped = wrapValue(field); + if (!wrapped) + return false; + switch (wrapped.type) { + case "number": + return wrapped.value != 0; + case "string": + return wrapped.value.length > 0; + case "boolean": + return wrapped.value; + case "link": + return !!wrapped.value.path; + case "date": + return wrapped.value.toMillis() != 0; + case "duration": + return wrapped.value.as("seconds") != 0; + case "object": + return Object.keys(wrapped.value).length > 0; + case "array": + return wrapped.value.length > 0; + case "null": + return false; + case "html": + case "widget": + case "function": + return true; + } + } + Values2.isTruthy = isTruthy; + function deepCopy(field) { + if (field === null || field === void 0) + return field; + if (Values2.isArray(field)) { + return [].concat(field.map((v) => deepCopy(v))); + } else if (Values2.isObject(field)) { + let result = {}; + for (let [key, value] of Object.entries(field)) + result[key] = deepCopy(value); + return result; + } else { + return field; + } + } + Values2.deepCopy = deepCopy; + function isString3(val) { + return typeof val == "string"; + } + Values2.isString = isString3; + function isNumber3(val) { + return typeof val == "number"; + } + Values2.isNumber = isNumber3; + function isDate3(val) { + return val instanceof DateTime2; + } + Values2.isDate = isDate3; + function isDuration(val) { + return val instanceof Duration2; + } + Values2.isDuration = isDuration; + function isNull(val) { + return val === null || val === void 0; + } + Values2.isNull = isNull; + function isArray(val) { + return Array.isArray(val); + } + Values2.isArray = isArray; + function isBoolean(val) { + return typeof val === "boolean"; + } + Values2.isBoolean = isBoolean; + function isLink(val) { + return val instanceof Link; + } + Values2.isLink = isLink; + function isWidget(val) { + return val instanceof Widget; + } + Values2.isWidget = isWidget; + function isHtml(val) { + if (typeof HTMLElement !== "undefined") { + return val instanceof HTMLElement; + } else { + return false; + } + } + Values2.isHtml = isHtml; + function isObject(val) { + return typeof val == "object" && !isHtml(val) && !isWidget(val) && !isArray(val) && !isDuration(val) && !isDate3(val) && !isLink(val) && val !== void 0 && !isNull(val); + } + Values2.isObject = isObject; + function isFunction(val) { + return typeof val == "function"; + } + Values2.isFunction = isFunction; + })(Values || (Values = {})); + var Groupings; + (function(Groupings2) { + function isElementGroup(entry) { + return Values.isObject(entry) && Object.keys(entry).length == 2 && "key" in entry && "rows" in entry; + } + Groupings2.isElementGroup = isElementGroup; + function isGrouping(entry) { + for (let element2 of entry) + if (!isElementGroup(element2)) + return false; + return true; + } + Groupings2.isGrouping = isGrouping; + function count(elements) { + if (isGrouping(elements)) { + let result = 0; + for (let subgroup of elements) + result += count(subgroup.rows); + return result; + } else { + return elements.length; + } + } + Groupings2.count = count; + })(Groupings || (Groupings = {})); + var Link = class _Link { + /** Create a link to a specific file. */ + static file(path, embed = false, display) { + return new _Link({ + path, + embed, + display, + subpath: void 0, + type: "file" + }); + } + static infer(linkpath, embed = false, display) { + if (linkpath.includes("#^")) { + let split = linkpath.split("#^"); + return _Link.block(split[0], split[1], embed, display); + } else if (linkpath.includes("#")) { + let split = linkpath.split("#"); + return _Link.header(split[0], split[1], embed, display); + } else + return _Link.file(linkpath, embed, display); + } + /** Create a link to a specific file and header in that file. */ + static header(path, header, embed, display) { + return new _Link({ + path, + embed, + display, + subpath: normalizeHeaderForLink(header), + type: "header" + }); + } + /** Create a link to a specific file and block in that file. */ + static block(path, blockId, embed, display) { + return new _Link({ + path, + embed, + display, + subpath: blockId, + type: "block" + }); + } + static fromObject(object) { + return new _Link(object); + } + constructor(fields) { + Object.assign(this, fields); + } + /** Checks for link equality (i.e., that the links are pointing to the same exact location). */ + equals(other) { + if (other == void 0 || other == null) + return false; + return this.path == other.path && this.type == other.type && this.subpath == other.subpath; + } + /** Convert this link to it's markdown representation. */ + toString() { + return this.markdown(); + } + /** Convert this link to a raw object which is serialization-friendly. */ + toObject() { + return { path: this.path, type: this.type, subpath: this.subpath, display: this.display, embed: this.embed }; + } + /** Update this link with a new path. */ + //@ts-ignore; error appeared after updating Obsidian to 0.15.4; it also updated other packages but didn't say which + withPath(path) { + return new _Link(Object.assign({}, this, { path })); + } + /** Return a new link which points to the same location but with a new display value. */ + withDisplay(display) { + return new _Link(Object.assign({}, this, { display })); + } + /** Convert a file link into a link to a specific header. */ + withHeader(header) { + return _Link.header(this.path, header, this.embed, this.display); + } + /** Convert any link into a link to its file. */ + toFile() { + return _Link.file(this.path, this.embed, this.display); + } + /** Convert this link into an embedded link. */ + toEmbed() { + if (this.embed) { + return this; + } else { + let link = new _Link(this); + link.embed = true; + return link; + } + } + /** Convert this link into a non-embedded link. */ + fromEmbed() { + if (!this.embed) { + return this; + } else { + let link = new _Link(this); + link.embed = false; + return link; + } + } + /** Convert this link to markdown so it can be rendered. */ + markdown() { + let result = (this.embed ? "!" : "") + "[[" + this.obsidianLink(); + if (this.display) { + result += "|" + this.display; + } else { + result += "|" + getFileTitle(this.path); + if (this.type == "header" || this.type == "block") + result += " > " + this.subpath; + } + result += "]]"; + return result; + } + /** Convert the inner part of the link to something that Obsidian can open / understand. */ + obsidianLink() { + var _a, _b; + const escaped = this.path.replace("|", "\\|"); + if (this.type == "header") + return escaped + "#" + ((_a = this.subpath) === null || _a === void 0 ? void 0 : _a.replace("|", "\\|")); + if (this.type == "block") + return escaped + "#^" + ((_b = this.subpath) === null || _b === void 0 ? void 0 : _b.replace("|", "\\|")); + else + return escaped; + } + /** The stripped name of the file this link points to. */ + fileName() { + return getFileTitle(this.path).replace(".md", ""); + } + }; + var Widget = class { + constructor($widget) { + this.$widget = $widget; + } + }; + var ListPairWidget = class extends Widget { + constructor(key, value) { + super("dataview:list-pair"); + this.key = key; + this.value = value; + } + markdown() { + return `${Values.toString(this.key)}: ${Values.toString(this.value)}`; + } + }; + var ExternalLinkWidget = class extends Widget { + constructor(url, display) { + super("dataview:external-link"); + this.url = url; + this.display = display; + } + markdown() { + var _a; + return `[${(_a = this.display) !== null && _a !== void 0 ? _a : this.url}](${this.url})`; + } + }; + var Widgets; + (function(Widgets2) { + function listPair(key, value) { + return new ListPairWidget(key, value); + } + Widgets2.listPair = listPair; + function externalLink(url, display) { + return new ExternalLinkWidget(url, display); + } + Widgets2.externalLink = externalLink; + function isListPair(widget) { + return widget.$widget === "dataview:list-pair"; + } + Widgets2.isListPair = isListPair; + function isExternalLink(widget) { + return widget.$widget === "dataview:external-link"; + } + Widgets2.isExternalLink = isExternalLink; + function isBuiltin(widget) { + return isListPair(widget) || isExternalLink(widget); + } + Widgets2.isBuiltin = isBuiltin; + })(Widgets || (Widgets = {})); + var Fields; + (function(Fields2) { + function variable(name) { + return { type: "variable", name }; + } + Fields2.variable = variable; + function literal(value) { + return { type: "literal", value }; + } + Fields2.literal = literal; + function binaryOp(left, op, right) { + return { type: "binaryop", left, op, right }; + } + Fields2.binaryOp = binaryOp; + function index(obj, index2) { + return { type: "index", object: obj, index: index2 }; + } + Fields2.index = index; + function indexVariable(name) { + let parts = name.split("."); + let result = Fields2.variable(parts[0]); + for (let index2 = 1; index2 < parts.length; index2++) { + result = Fields2.index(result, Fields2.literal(parts[index2])); + } + return result; + } + Fields2.indexVariable = indexVariable; + function lambda(args, value) { + return { type: "lambda", arguments: args, value }; + } + Fields2.lambda = lambda; + function func(func2, args) { + return { type: "function", func: func2, arguments: args }; + } + Fields2.func = func; + function list(values) { + return { type: "list", values }; + } + Fields2.list = list; + function object(values) { + return { type: "object", values }; + } + Fields2.object = object; + function negate(child) { + return { type: "negated", child }; + } + Fields2.negate = negate; + function isCompareOp(op) { + return op == "<=" || op == "<" || op == ">" || op == ">=" || op == "!=" || op == "="; + } + Fields2.isCompareOp = isCompareOp; + Fields2.NULL = Fields2.literal(null); + })(Fields || (Fields = {})); + var Sources; + (function(Sources2) { + function tag(tag2) { + return { type: "tag", tag: tag2 }; + } + Sources2.tag = tag; + function csv(path) { + return { type: "csv", path }; + } + Sources2.csv = csv; + function folder(prefix) { + return { type: "folder", folder: prefix }; + } + Sources2.folder = folder; + function link(file, incoming) { + return { type: "link", file, direction: incoming ? "incoming" : "outgoing" }; + } + Sources2.link = link; + function binaryOp(left, op, right) { + return { type: "binaryop", left, op, right }; + } + Sources2.binaryOp = binaryOp; + function and(left, right) { + return { type: "binaryop", left, op: "&", right }; + } + Sources2.and = and; + function or(left, right) { + return { type: "binaryop", left, op: "|", right }; + } + Sources2.or = or; + function negate(child) { + return { type: "negate", child }; + } + Sources2.negate = negate; + function empty2() { + return { type: "empty" }; + } + Sources2.empty = empty2; + })(Sources || (Sources = {})); + var EMOJI_REGEX = new RegExp(emojiRegex2(), ""); + var DURATION_TYPES = { + year: Duration2.fromObject({ years: 1 }), + years: Duration2.fromObject({ years: 1 }), + yr: Duration2.fromObject({ years: 1 }), + yrs: Duration2.fromObject({ years: 1 }), + month: Duration2.fromObject({ months: 1 }), + months: Duration2.fromObject({ months: 1 }), + mo: Duration2.fromObject({ months: 1 }), + mos: Duration2.fromObject({ months: 1 }), + week: Duration2.fromObject({ weeks: 1 }), + weeks: Duration2.fromObject({ weeks: 1 }), + wk: Duration2.fromObject({ weeks: 1 }), + wks: Duration2.fromObject({ weeks: 1 }), + w: Duration2.fromObject({ weeks: 1 }), + day: Duration2.fromObject({ days: 1 }), + days: Duration2.fromObject({ days: 1 }), + d: Duration2.fromObject({ days: 1 }), + hour: Duration2.fromObject({ hours: 1 }), + hours: Duration2.fromObject({ hours: 1 }), + hr: Duration2.fromObject({ hours: 1 }), + hrs: Duration2.fromObject({ hours: 1 }), + h: Duration2.fromObject({ hours: 1 }), + minute: Duration2.fromObject({ minutes: 1 }), + minutes: Duration2.fromObject({ minutes: 1 }), + min: Duration2.fromObject({ minutes: 1 }), + mins: Duration2.fromObject({ minutes: 1 }), + m: Duration2.fromObject({ minutes: 1 }), + second: Duration2.fromObject({ seconds: 1 }), + seconds: Duration2.fromObject({ seconds: 1 }), + sec: Duration2.fromObject({ seconds: 1 }), + secs: Duration2.fromObject({ seconds: 1 }), + s: Duration2.fromObject({ seconds: 1 }) + }; + var DATE_SHORTHANDS = { + now: () => DateTime2.local(), + today: () => DateTime2.local().startOf("day"), + yesterday: () => DateTime2.local().startOf("day").minus(Duration2.fromObject({ days: 1 })), + tomorrow: () => DateTime2.local().startOf("day").plus(Duration2.fromObject({ days: 1 })), + sow: () => DateTime2.local().startOf("week"), + "start-of-week": () => DateTime2.local().startOf("week"), + eow: () => DateTime2.local().endOf("week"), + "end-of-week": () => DateTime2.local().endOf("week"), + soy: () => DateTime2.local().startOf("year"), + "start-of-year": () => DateTime2.local().startOf("year"), + eoy: () => DateTime2.local().endOf("year"), + "end-of-year": () => DateTime2.local().endOf("year"), + som: () => DateTime2.local().startOf("month"), + "start-of-month": () => DateTime2.local().startOf("month"), + eom: () => DateTime2.local().endOf("month"), + "end-of-month": () => DateTime2.local().endOf("month") + }; + var KEYWORDS = ["FROM", "WHERE", "LIMIT", "GROUP", "FLATTEN"]; + function splitOnUnescapedPipe(link) { + let pipe = -1; + while ((pipe = link.indexOf("|", pipe + 1)) >= 0) { + if (pipe > 0 && link[pipe - 1] == "\\") + continue; + return [link.substring(0, pipe).replace(/\\\|/g, "|"), link.substring(pipe + 1)]; + } + return [link.replace(/\\\|/g, "|"), void 0]; + } + function parseInnerLink(rawlink) { + let [link, display] = splitOnUnescapedPipe(rawlink); + return Link.infer(link, false, display); + } + function createBinaryParser(child, sep, combine) { + return parsimmon_umd_minExports.seqMap(child, parsimmon_umd_minExports.seq(parsimmon_umd_minExports.optWhitespace, sep, parsimmon_umd_minExports.optWhitespace, child).many(), (first, rest) => { + if (rest.length == 0) + return first; + let node = combine(first, rest[0][1], rest[0][3]); + for (let index = 1; index < rest.length; index++) { + node = combine(node, rest[index][1], rest[index][3]); + } + return node; + }); + } + function chainOpt(base, ...funcs) { + return parsimmon_umd_minExports.custom((success, failure) => { + return (input, i) => { + let result = base._(input, i); + if (!result.status) + return result; + for (let func of funcs) { + let next = func(result.value)._(input, result.index); + if (!next.status) + return result; + result = next; + } + return result; + }; + }); + } + var EXPRESSION = parsimmon_umd_minExports.createLanguage({ + // A floating point number; the decimal point is optional. + number: (q) => parsimmon_umd_minExports.regexp(/-?[0-9]+(\.[0-9]+)?/).map((str) => Number.parseFloat(str)).desc("number"), + // A quote-surrounded string which supports escape characters ('\'). + string: (q) => parsimmon_umd_minExports.string('"').then(parsimmon_umd_minExports.alt(q.escapeCharacter, parsimmon_umd_minExports.noneOf('"\\')).atLeast(0).map((chars) => chars.join(""))).skip(parsimmon_umd_minExports.string('"')).desc("string"), + escapeCharacter: (_) => parsimmon_umd_minExports.string("\\").then(parsimmon_umd_minExports.any).map((escaped) => { + if (escaped === '"') + return '"'; + if (escaped === "\\") + return "\\"; + else + return "\\" + escaped; + }), + // A boolean true/false value. + bool: (_) => parsimmon_umd_minExports.regexp(/true|false|True|False/).map((str) => str.toLowerCase() == "true").desc("boolean ('true' or 'false')"), + // A tag of the form '#stuff/hello-there'. + tag: (_) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("#"), parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]/).desc("text")).many(), (start, rest) => start + rest.join("")).desc("tag ('#hello/stuff')"), + // A variable identifier, which is alphanumeric and must start with a letter or... emoji. + identifier: (_) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/\p{Letter}/u), parsimmon_umd_minExports.regexp(EMOJI_REGEX).desc("text")), parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/[0-9\p{Letter}_-]/u), parsimmon_umd_minExports.regexp(EMOJI_REGEX).desc("text")).many(), (first, rest) => first + rest.join("")).desc("variable identifier"), + // An Obsidian link of the form [[]]. + link: (_) => parsimmon_umd_minExports.regexp(/\[\[([^\[\]]*?)\]\]/u, 1).map((linkInner) => parseInnerLink(linkInner)).desc("file link"), + // An embeddable link which can start with '!'. This overlaps with the normal negation operator, so it is only + // provided for metadata parsing. + embedLink: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("!").atMost(1), q.link, (p, l3) => { + if (p.length > 0) + l3.embed = true; + return l3; + }).desc("file link"), + // Binary plus or minus operator. + binaryPlusMinus: (_) => parsimmon_umd_minExports.regexp(/\+|-/).map((str) => str).desc("'+' or '-'"), + // Binary times or divide operator. + binaryMulDiv: (_) => parsimmon_umd_minExports.regexp(/\*|\/|%/).map((str) => str).desc("'*' or '/' or '%'"), + // Binary comparison operator. + binaryCompareOp: (_) => parsimmon_umd_minExports.regexp(/>=|<=|!=|>|<|=/).map((str) => str).desc("'>=' or '<=' or '!=' or '=' or '>' or '<'"), + // Binary boolean combination operator. + binaryBooleanOp: (_) => parsimmon_umd_minExports.regexp(/and|or|&|\|/i).map((str) => { + if (str.toLowerCase() == "and") + return "&"; + else if (str.toLowerCase() == "or") + return "|"; + else + return str; + }).desc("'and' or 'or'"), + // A date which can be YYYY-MM[-DDTHH:mm:ss]. + rootDate: (_) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/\d{4}/), parsimmon_umd_minExports.string("-"), parsimmon_umd_minExports.regexp(/\d{2}/), (year, _2, month) => { + return DateTime2.fromObject({ year: Number.parseInt(year), month: Number.parseInt(month) }); + }).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"), + dateShorthand: (_) => parsimmon_umd_minExports.alt(...Object.keys(DATE_SHORTHANDS).sort((a, b) => b.length - a.length).map(parsimmon_umd_minExports.string)), + date: (q) => chainOpt(q.rootDate, (ym) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("-"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, day) => ym.set({ day: Number.parseInt(day) })), (ymd) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("T"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, hour) => ymd.set({ hour: Number.parseInt(hour) })), (ymdh) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string(":"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, minute) => ymdh.set({ minute: Number.parseInt(minute) })), (ymdhm) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string(":"), parsimmon_umd_minExports.regexp(/\d{2}/), (_, second) => ymdhm.set({ second: Number.parseInt(second) })), (ymdhms) => parsimmon_umd_minExports.alt( + parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("."), parsimmon_umd_minExports.regexp(/\d{3}/), (_, millisecond) => ymdhms.set({ millisecond: Number.parseInt(millisecond) })), + parsimmon_umd_minExports.succeed(ymdhms) + // pass + ), (dt) => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("+").or(parsimmon_umd_minExports.string("-")), parsimmon_umd_minExports.regexp(/\d{1,2}(:\d{2})?/), (pm, hr) => dt.setZone("UTC" + pm + hr, { keepLocalTime: true })), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("Z"), () => dt.setZone("utc", { keepLocalTime: true })), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("["), parsimmon_umd_minExports.regexp(/[0-9A-Za-z+-\/]+/u), parsimmon_umd_minExports.string("]"), (_a, zone, _b) => dt.setZone(zone, { keepLocalTime: true })))).assert((dt) => dt.isValid, "valid date").desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"), + // A date, plus various shorthand times of day it could be. + datePlus: (q) => parsimmon_umd_minExports.alt(q.dateShorthand.map((d) => DATE_SHORTHANDS[d]()), q.date).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS] or in shorthand"), + // A duration of time. + durationType: (_) => parsimmon_umd_minExports.alt(...Object.keys(DURATION_TYPES).sort((a, b) => b.length - a.length).map(parsimmon_umd_minExports.string)), + duration: (q) => parsimmon_umd_minExports.seqMap(q.number, parsimmon_umd_minExports.optWhitespace, q.durationType, (count, _, t) => DURATION_TYPES[t].mapUnits((x) => x * count)).sepBy1(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace).or(parsimmon_umd_minExports.optWhitespace)).map((durations) => durations.reduce((p, c) => p.plus(c))).desc("duration like 4hr2min"), + // A raw null value. + rawNull: (_) => parsimmon_umd_minExports.string("null"), + // Source parsing. + tagSource: (q) => q.tag.map((tag) => Sources.tag(tag)), + csvSource: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("csv(").skip(parsimmon_umd_minExports.optWhitespace), q.string, parsimmon_umd_minExports.string(")"), (_1, path, _2) => Sources.csv(path)), + linkIncomingSource: (q) => q.link.map((link) => Sources.link(link.path, true)), + linkOutgoingSource: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("outgoing(").skip(parsimmon_umd_minExports.optWhitespace), q.link, parsimmon_umd_minExports.string(")"), (_1, link, _2) => Sources.link(link.path, false)), + folderSource: (q) => q.string.map((str) => Sources.folder(str)), + parensSource: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("("), parsimmon_umd_minExports.optWhitespace, q.source, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (_1, _2, field, _3, _4) => field), + negateSource: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.alt(parsimmon_umd_minExports.string("-"), parsimmon_umd_minExports.string("!")), q.atomSource, (_, source) => Sources.negate(source)), + atomSource: (q) => parsimmon_umd_minExports.alt(q.parensSource, q.negateSource, q.linkOutgoingSource, q.linkIncomingSource, q.folderSource, q.tagSource, q.csvSource), + binaryOpSource: (q) => createBinaryParser(q.atomSource, q.binaryBooleanOp.map((s3) => s3), Sources.binaryOp), + source: (q) => q.binaryOpSource, + // Field parsing. + variableField: (q) => q.identifier.chain((r) => { + if (KEYWORDS.includes(r.toUpperCase())) { + return parsimmon_umd_minExports.fail("Variable fields cannot be a keyword (" + KEYWORDS.join(" or ") + ")"); + } else { + return parsimmon_umd_minExports.succeed(Fields.variable(r)); + } + }).desc("variable"), + numberField: (q) => q.number.map((val) => Fields.literal(val)).desc("number"), + stringField: (q) => q.string.map((val) => Fields.literal(val)).desc("string"), + boolField: (q) => q.bool.map((val) => Fields.literal(val)).desc("boolean"), + dateField: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("date("), parsimmon_umd_minExports.optWhitespace, q.datePlus, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (prefix, _1, date, _2, postfix) => Fields.literal(date)).desc("date"), + durationField: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("dur("), parsimmon_umd_minExports.optWhitespace, q.duration, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (prefix, _1, dur, _2, postfix) => Fields.literal(dur)).desc("duration"), + nullField: (q) => q.rawNull.map((_) => Fields.NULL), + linkField: (q) => q.link.map((f) => Fields.literal(f)), + listField: (q) => q.field.sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)).wrap(parsimmon_umd_minExports.string("[").skip(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.optWhitespace.then(parsimmon_umd_minExports.string("]"))).map((l3) => Fields.list(l3)).desc("list ('[1, 2, 3]')"), + objectField: (q) => parsimmon_umd_minExports.seqMap(q.identifier.or(q.string), parsimmon_umd_minExports.string(":").trim(parsimmon_umd_minExports.optWhitespace), q.field, (name, _sep, value) => { + return { name, value }; + }).sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)).wrap(parsimmon_umd_minExports.string("{").skip(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.optWhitespace.then(parsimmon_umd_minExports.string("}"))).map((vals) => { + let res = {}; + for (let entry of vals) + res[entry.name] = entry.value; + return Fields.object(res); + }).desc("object ('{ a: 1, b: 2 }')"), + atomInlineField: (q) => parsimmon_umd_minExports.alt(q.date, q.duration.map((d) => normalizeDuration(d)), q.string, q.tag, q.embedLink, q.bool, q.number, q.rawNull), + inlineFieldList: (q) => q.atomInlineField.sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace).lookahead(q.atomInlineField)), + inlineField: (q) => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.seqMap(q.atomInlineField, parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace), q.inlineFieldList, (f, _s, l3) => [f].concat(l3)), q.atomInlineField), + atomField: (q) => parsimmon_umd_minExports.alt( + // Place embed links above negated fields as they are the special parser case '![[thing]]' and are generally unambigious. + q.embedLink.map((l3) => Fields.literal(l3)), + q.negatedField, + q.linkField, + q.listField, + q.objectField, + q.lambdaField, + q.parensField, + q.boolField, + q.numberField, + q.stringField, + q.dateField, + q.durationField, + q.nullField, + q.variableField + ), + indexField: (q) => parsimmon_umd_minExports.seqMap(q.atomField, parsimmon_umd_minExports.alt(q.dotPostfix, q.indexPostfix, q.functionPostfix).many(), (obj, postfixes) => { + let result = obj; + for (let post of postfixes) { + switch (post.type) { + case "dot": + result = Fields.index(result, Fields.literal(post.field)); + break; + case "index": + result = Fields.index(result, post.field); + break; + case "function": + result = Fields.func(result, post.fields); + break; + } + } + return result; + }), + negatedField: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("!"), q.indexField, (_, field) => Fields.negate(field)).desc("negated field"), + parensField: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("("), parsimmon_umd_minExports.optWhitespace, q.field, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (_1, _2, field, _3, _4) => field), + lambdaField: (q) => parsimmon_umd_minExports.seqMap(q.identifier.sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)).wrap(parsimmon_umd_minExports.string("(").trim(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.string(")").trim(parsimmon_umd_minExports.optWhitespace)), parsimmon_umd_minExports.string("=>").trim(parsimmon_umd_minExports.optWhitespace), q.field, (ident, _ignore, value) => { + return { type: "lambda", arguments: ident, value }; + }), + dotPostfix: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("."), q.identifier, (_, field) => { + return { type: "dot", field }; + }), + indexPostfix: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("["), parsimmon_umd_minExports.optWhitespace, q.field, parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string("]"), (_, _2, field, _3, _4) => { + return { type: "index", field }; + }), + functionPostfix: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.string("("), parsimmon_umd_minExports.optWhitespace, q.field.sepBy(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)), parsimmon_umd_minExports.optWhitespace, parsimmon_umd_minExports.string(")"), (_, _1, fields, _2, _3) => { + return { type: "function", fields }; + }), + // The precedence hierarchy of operators - multiply/divide, add/subtract, compare, and then boolean operations. + binaryMulDivField: (q) => createBinaryParser(q.indexField, q.binaryMulDiv, Fields.binaryOp), + binaryPlusMinusField: (q) => createBinaryParser(q.binaryMulDivField, q.binaryPlusMinus, Fields.binaryOp), + binaryCompareField: (q) => createBinaryParser(q.binaryPlusMinusField, q.binaryCompareOp, Fields.binaryOp), + binaryBooleanField: (q) => createBinaryParser(q.binaryCompareField, q.binaryBooleanOp, Fields.binaryOp), + binaryOpField: (q) => q.binaryBooleanField, + field: (q) => q.binaryOpField + }); + function parseField(text2) { + try { + return Result.success(EXPRESSION.field.tryParse(text2)); + } catch (error) { + return Result.failure("" + error); + } + } + var QueryFields; + (function(QueryFields2) { + function named(name, field) { + return { name, field }; + } + QueryFields2.named = named; + function sortBy(field, dir) { + return { field, direction: dir }; + } + QueryFields2.sortBy = sortBy; + })(QueryFields || (QueryFields = {})); + function captureRaw(base) { + return parsimmon_umd_minExports.custom((success, failure) => { + return (input, i) => { + let result = base._(input, i); + if (!result.status) + return result; + return Object.assign({}, result, { value: [result.value, input.substring(i, result.index)] }); + }; + }); + } + function stripNewlines(text2) { + return text2.split(/[\r\n]+/).map((t) => t.trim()).join(""); + } + function precededByWhitespaceIfNotEof(if_eof, parser) { + return parsimmon_umd_minExports.eof.map(if_eof).or(parsimmon_umd_minExports.whitespace.then(parser)); + } + var QUERY_LANGUAGE = parsimmon_umd_minExports.createLanguage({ + // Simple atom parsing, like words, identifiers, numbers. + queryType: (q) => parsimmon_umd_minExports.alt(parsimmon_umd_minExports.regexp(/TABLE|LIST|TASK|CALENDAR/i)).map((str) => str.toLowerCase()).desc("query type ('TABLE', 'LIST', 'TASK', or 'CALENDAR')"), + explicitNamedField: (q) => parsimmon_umd_minExports.seqMap(EXPRESSION.field.skip(parsimmon_umd_minExports.whitespace), parsimmon_umd_minExports.regexp(/AS/i).skip(parsimmon_umd_minExports.whitespace), EXPRESSION.identifier.or(EXPRESSION.string), (field, _as, ident) => QueryFields.named(ident, field)), + namedField: (q) => parsimmon_umd_minExports.alt(q.explicitNamedField, captureRaw(EXPRESSION.field).map(([value, text2]) => QueryFields.named(stripNewlines(text2), value))), + sortField: (q) => parsimmon_umd_minExports.seqMap(EXPRESSION.field.skip(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1), (field, dir) => { + let direction = dir.length == 0 ? "ascending" : dir[0].toLowerCase(); + if (direction == "desc") + direction = "descending"; + if (direction == "asc") + direction = "ascending"; + return { + field, + direction + }; + }), + headerClause: (q) => q.queryType.chain((type) => { + switch (type) { + case "table": { + return precededByWhitespaceIfNotEof(() => ({ type, fields: [], showId: true }), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/WITHOUT\s+ID/i).skip(parsimmon_umd_minExports.optWhitespace).atMost(1), parsimmon_umd_minExports.sepBy(q.namedField, parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)), (withoutId, fields) => { + return { type, fields, showId: withoutId.length == 0 }; + })); + } + case "list": + return precededByWhitespaceIfNotEof(() => ({ type, format: void 0, showId: true }), parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/WITHOUT\s+ID/i).skip(parsimmon_umd_minExports.optWhitespace).atMost(1), EXPRESSION.field.atMost(1), (withoutId, format) => { + return { + type, + format: format.length == 1 ? format[0] : void 0, + showId: withoutId.length == 0 + }; + })); + case "task": + return parsimmon_umd_minExports.succeed({ type }); + case "calendar": + return parsimmon_umd_minExports.whitespace.then(parsimmon_umd_minExports.seqMap(q.namedField, (field) => { + return { + type, + showId: true, + field + }; + })); + default: + return parsimmon_umd_minExports.fail(`Unrecognized query type '${type}'`); + } + }).desc("TABLE or LIST or TASK or CALENDAR"), + fromClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/FROM/i), parsimmon_umd_minExports.whitespace, EXPRESSION.source, (_1, _2, source) => source), + whereClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/WHERE/i), parsimmon_umd_minExports.whitespace, EXPRESSION.field, (where, _, field) => { + return { type: "where", clause: field }; + }).desc("WHERE "), + sortByClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/SORT/i), parsimmon_umd_minExports.whitespace, q.sortField.sepBy1(parsimmon_umd_minExports.string(",").trim(parsimmon_umd_minExports.optWhitespace)), (sort, _1, fields) => { + return { type: "sort", fields }; + }).desc("SORT field [ASC/DESC]"), + limitClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/LIMIT/i), parsimmon_umd_minExports.whitespace, EXPRESSION.field, (limit, _1, field) => { + return { type: "limit", amount: field }; + }).desc("LIMIT "), + flattenClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/FLATTEN/i).skip(parsimmon_umd_minExports.whitespace), q.namedField, (_, field) => { + return { type: "flatten", field }; + }).desc("FLATTEN [AS ]"), + groupByClause: (q) => parsimmon_umd_minExports.seqMap(parsimmon_umd_minExports.regexp(/GROUP BY/i).skip(parsimmon_umd_minExports.whitespace), q.namedField, (_, field) => { + return { type: "group", field }; + }).desc("GROUP BY [AS ]"), + // Full query parsing. + clause: (q) => parsimmon_umd_minExports.alt(q.fromClause, q.whereClause, q.sortByClause, q.limitClause, q.groupByClause, q.flattenClause), + query: (q) => parsimmon_umd_minExports.seqMap(q.headerClause.trim(parsimmon_umd_minExports.optWhitespace), q.fromClause.trim(parsimmon_umd_minExports.optWhitespace).atMost(1), q.clause.trim(parsimmon_umd_minExports.optWhitespace).many(), (header, from, clauses) => { + return { + header, + source: from.length == 0 ? Sources.folder("") : from[0], + operations: clauses, + settings: DEFAULT_QUERY_SETTINGS + }; + }) + }); + var getAPI = (app) => { + var _a; + if (app) + return (_a = app.plugins.plugins.dataview) === null || _a === void 0 ? void 0 : _a.api; + else + return window.DataviewAPI; + }; + var isPluginEnabled = (app) => app.plugins.enabledPlugins.has("dataview"); + exports.DATE_SHORTHANDS = DATE_SHORTHANDS; + exports.DURATION_TYPES = DURATION_TYPES; + exports.EXPRESSION = EXPRESSION; + exports.KEYWORDS = KEYWORDS; + exports.QUERY_LANGUAGE = QUERY_LANGUAGE; + exports.getAPI = getAPI; + exports.isPluginEnabled = isPluginEnabled; + exports.parseField = parseField; } }); @@ -2897,25 +7633,25 @@ var require_graphology_umd_min = __commonJS({ "object" == typeof exports && "undefined" != typeof module2 ? module2.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).graphology = e(); }(exports, function() { "use strict"; - function t(e3) { + function t(e2) { return t = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t2) { return typeof t2; } : function(t2) { return t2 && "function" == typeof Symbol && t2.constructor === Symbol && t2 !== Symbol.prototype ? "symbol" : typeof t2; - }, t(e3); + }, t(e2); } - function e(t2, e3) { - t2.prototype = Object.create(e3.prototype), t2.prototype.constructor = t2, r(t2, e3); + function e(t2, e2) { + t2.prototype = Object.create(e2.prototype), t2.prototype.constructor = t2, r(t2, e2); } function n2(t2) { - return n2 = Object.setPrototypeOf ? Object.getPrototypeOf : function(t3) { + return n2 = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t3) { return t3.__proto__ || Object.getPrototypeOf(t3); }, n2(t2); } - function r(t2, e3) { - return r = Object.setPrototypeOf || function(t3, e4) { - return t3.__proto__ = e4, t3; - }, r(t2, e3); + function r(t2, e2) { + return r = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t3, e3) { + return t3.__proto__ = e3, t3; + }, r(t2, e2); } function i() { if ("undefined" == typeof Reflect || !Reflect.construct) @@ -2931,141 +7667,138 @@ var require_graphology_umd_min = __commonJS({ return false; } } - function o(t2, e3, n3) { - return o = i() ? Reflect.construct : function(t3, e4, n4) { + function o(t2, e2, n3) { + return o = i() ? Reflect.construct.bind() : function(t3, e3, n4) { var i2 = [null]; - i2.push.apply(i2, e4); + i2.push.apply(i2, e3); var o2 = new (Function.bind.apply(t3, i2))(); return n4 && r(o2, n4.prototype), o2; }, o.apply(null, arguments); } - function a2(t2) { - var e3 = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0; - return a2 = function(t3) { + function a(t2) { + var e2 = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0; + return a = function(t3) { if (null === t3 || (i2 = t3, -1 === Function.toString.call(i2).indexOf("[native code]"))) return t3; var i2; if ("function" != typeof t3) throw new TypeError("Super expression must either be null or a function"); - if (void 0 !== e3) { - if (e3.has(t3)) - return e3.get(t3); - e3.set(t3, a3); + if (void 0 !== e2) { + if (e2.has(t3)) + return e2.get(t3); + e2.set(t3, a2); } - function a3() { + function a2() { return o(t3, arguments, n2(this).constructor); } - return a3.prototype = Object.create(t3.prototype, { constructor: { value: a3, enumerable: false, writable: true, configurable: true } }), r(a3, t3); - }, a2(t2); + return a2.prototype = Object.create(t3.prototype, { constructor: { value: a2, enumerable: false, writable: true, configurable: true } }), r(a2, t3); + }, a(t2); } - function u(t2) { + function c(t2) { if (void 0 === t2) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return t2; } - var c3 = function() { - for (var t2 = arguments[0], e3 = 1, n3 = arguments.length; e3 < n3; e3++) - if (arguments[e3]) - for (var r2 in arguments[e3]) - t2[r2] = arguments[e3][r2]; + var u = function() { + for (var t2 = arguments[0], e2 = 1, n3 = arguments.length; e2 < n3; e2++) + if (arguments[e2]) + for (var r2 in arguments[e2]) + t2[r2] = arguments[e2][r2]; return t2; }; - function d(t2, e3, n3, r2) { - var i2 = t2._nodes.get(e3), o2 = null; + function d(t2, e2, n3, r2) { + var i2 = t2._nodes.get(e2), o2 = null; return i2 ? o2 = "mixed" === r2 ? i2.out && i2.out[n3] || i2.undirected && i2.undirected[n3] : "directed" === r2 ? i2.out && i2.out[n3] : i2.undirected && i2.undirected[n3] : o2; } - function s2(e3) { - return null !== e3 && "object" === t(e3) && "function" == typeof e3.addUndirectedEdgeWithKey && "function" == typeof e3.dropNode; + function s2(e2) { + return "object" === t(e2) && null !== e2; } - function h(e3) { - return "object" === t(e3) && null !== e3 && e3.constructor === Object; - } - function f(t2) { - var e3; - for (e3 in t2) + function h(t2) { + var e2; + for (e2 in t2) return false; return true; } - function p(t2, e3, n3) { - Object.defineProperty(t2, e3, { enumerable: false, configurable: false, writable: true, value: n3 }); + function p(t2, e2, n3) { + Object.defineProperty(t2, e2, { enumerable: false, configurable: false, writable: true, value: n3 }); } - function l2(t2, e3, n3) { + function f(t2, e2, n3) { var r2 = { enumerable: true, configurable: true }; - "function" == typeof n3 ? r2.get = n3 : (r2.value = n3, r2.writable = false), Object.defineProperty(t2, e3, r2); + "function" == typeof n3 ? r2.get = n3 : (r2.value = n3, r2.writable = false), Object.defineProperty(t2, e2, r2); } - function g(t2) { - return !!h(t2) && !(t2.attributes && !Array.isArray(t2.attributes)); + function l2(t2) { + return !!s2(t2) && !(t2.attributes && !Array.isArray(t2.attributes)); } - "function" == typeof Object.assign && (c3 = Object.assign); - var y4, v = { exports: {} }, b = "object" == typeof Reflect ? Reflect : null, w = b && "function" == typeof b.apply ? b.apply : function(t2, e3, n3) { - return Function.prototype.apply.call(t2, e3, n3); + "function" == typeof Object.assign && (u = Object.assign); + var g, y = { exports: {} }, w = "object" == typeof Reflect ? Reflect : null, v = w && "function" == typeof w.apply ? w.apply : function(t2, e2, n3) { + return Function.prototype.apply.call(t2, e2, n3); }; - y4 = b && "function" == typeof b.ownKeys ? b.ownKeys : Object.getOwnPropertySymbols ? function(t2) { + g = w && "function" == typeof w.ownKeys ? w.ownKeys : Object.getOwnPropertySymbols ? function(t2) { return Object.getOwnPropertyNames(t2).concat(Object.getOwnPropertySymbols(t2)); } : function(t2) { return Object.getOwnPropertyNames(t2); }; - var m2 = Number.isNaN || function(t2) { + var b = Number.isNaN || function(t2) { return t2 != t2; }; - function _() { - _.init.call(this); + function m() { + m.init.call(this); } - v.exports = _, v.exports.once = function(t2, e3) { + y.exports = m, y.exports.once = function(t2, e2) { return new Promise(function(n3, r2) { function i2(n4) { - t2.removeListener(e3, o2), r2(n4); + t2.removeListener(e2, o2), r2(n4); } function o2() { "function" == typeof t2.removeListener && t2.removeListener("error", i2), n3([].slice.call(arguments)); } - U(t2, e3, o2, { once: true }), "error" !== e3 && function(t3, e4, n4) { - "function" == typeof t3.on && U(t3, "error", e4, n4); + U(t2, e2, o2, { once: true }), "error" !== e2 && function(t3, e3, n4) { + "function" == typeof t3.on && U(t3, "error", e3, n4); }(t2, i2, { once: true }); }); - }, _.EventEmitter = _, _.prototype._events = void 0, _.prototype._eventsCount = 0, _.prototype._maxListeners = void 0; + }, m.EventEmitter = m, m.prototype._events = void 0, m.prototype._eventsCount = 0, m.prototype._maxListeners = void 0; var k = 10; - function G(t2) { + function _(t2) { if ("function" != typeof t2) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof t2); } - function x4(t2) { - return void 0 === t2._maxListeners ? _.defaultMaxListeners : t2._maxListeners; + function G(t2) { + return void 0 === t2._maxListeners ? m.defaultMaxListeners : t2._maxListeners; } - function E2(t2, e3, n3, r2) { - var i2, o2, a3, u2; - if (G(n3), void 0 === (o2 = t2._events) ? (o2 = t2._events = /* @__PURE__ */ Object.create(null), t2._eventsCount = 0) : (void 0 !== o2.newListener && (t2.emit("newListener", e3, n3.listener ? n3.listener : n3), o2 = t2._events), a3 = o2[e3]), void 0 === a3) - a3 = o2[e3] = n3, ++t2._eventsCount; - else if ("function" == typeof a3 ? a3 = o2[e3] = r2 ? [n3, a3] : [a3, n3] : r2 ? a3.unshift(n3) : a3.push(n3), (i2 = x4(t2)) > 0 && a3.length > i2 && !a3.warned) { - a3.warned = true; - var c4 = new Error("Possible EventEmitter memory leak detected. " + a3.length + " " + String(e3) + " listeners added. Use emitter.setMaxListeners() to increase limit"); - c4.name = "MaxListenersExceededWarning", c4.emitter = t2, c4.type = e3, c4.count = a3.length, u2 = c4, console && console.warn && console.warn(u2); + function x(t2, e2, n3, r2) { + var i2, o2, a2, c2; + if (_(n3), void 0 === (o2 = t2._events) ? (o2 = t2._events = /* @__PURE__ */ Object.create(null), t2._eventsCount = 0) : (void 0 !== o2.newListener && (t2.emit("newListener", e2, n3.listener ? n3.listener : n3), o2 = t2._events), a2 = o2[e2]), void 0 === a2) + a2 = o2[e2] = n3, ++t2._eventsCount; + else if ("function" == typeof a2 ? a2 = o2[e2] = r2 ? [n3, a2] : [a2, n3] : r2 ? a2.unshift(n3) : a2.push(n3), (i2 = G(t2)) > 0 && a2.length > i2 && !a2.warned) { + a2.warned = true; + var u2 = new Error("Possible EventEmitter memory leak detected. " + a2.length + " " + String(e2) + " listeners added. Use emitter.setMaxListeners() to increase limit"); + u2.name = "MaxListenersExceededWarning", u2.emitter = t2, u2.type = e2, u2.count = a2.length, c2 = u2, console && console.warn && console.warn(c2); } return t2; } - function S() { + function E() { if (!this.fired) return this.target.removeListener(this.type, this.wrapFn), this.fired = true, 0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments); } - function A2(t2, e3, n3) { - var r2 = { fired: false, wrapFn: void 0, target: t2, type: e3, listener: n3 }, i2 = S.bind(r2); + function A(t2, e2, n3) { + var r2 = { fired: false, wrapFn: void 0, target: t2, type: e2, listener: n3 }, i2 = E.bind(r2); return i2.listener = n3, r2.wrapFn = i2, i2; } - function L(t2, e3, n3) { + function L(t2, e2, n3) { var r2 = t2._events; if (void 0 === r2) return []; - var i2 = r2[e3]; + var i2 = r2[e2]; return void 0 === i2 ? [] : "function" == typeof i2 ? n3 ? [i2.listener || i2] : [i2] : n3 ? function(t3) { - for (var e4 = new Array(t3.length), n4 = 0; n4 < e4.length; ++n4) - e4[n4] = t3[n4].listener || t3[n4]; - return e4; - }(i2) : N(i2, i2.length); + for (var e3 = new Array(t3.length), n4 = 0; n4 < e3.length; ++n4) + e3[n4] = t3[n4].listener || t3[n4]; + return e3; + }(i2) : D(i2, i2.length); } - function D2(t2) { - var e3 = this._events; - if (void 0 !== e3) { - var n3 = e3[t2]; + function S(t2) { + var e2 = this._events; + if (void 0 !== e2) { + var n3 = e2[t2]; if ("function" == typeof n3) return 1; if (void 0 !== n3) @@ -3073,44 +7806,44 @@ var require_graphology_umd_min = __commonJS({ } return 0; } - function N(t2, e3) { - for (var n3 = new Array(e3), r2 = 0; r2 < e3; ++r2) + function D(t2, e2) { + for (var n3 = new Array(e2), r2 = 0; r2 < e2; ++r2) n3[r2] = t2[r2]; return n3; } - function U(t2, e3, n3, r2) { + function U(t2, e2, n3, r2) { if ("function" == typeof t2.on) - r2.once ? t2.once(e3, n3) : t2.on(e3, n3); + r2.once ? t2.once(e2, n3) : t2.on(e2, n3); else { if ("function" != typeof t2.addEventListener) throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof t2); - t2.addEventListener(e3, function i2(o2) { - r2.once && t2.removeEventListener(e3, i2), n3(o2); + t2.addEventListener(e2, function i2(o2) { + r2.once && t2.removeEventListener(e2, i2), n3(o2); }); } } - function j(t2) { + function N(t2) { if ("function" != typeof t2) throw new Error("obliterator/iterator: expecting a function!"); this.next = t2; } - Object.defineProperty(_, "defaultMaxListeners", { enumerable: true, get: function() { + Object.defineProperty(m, "defaultMaxListeners", { enumerable: true, get: function() { return k; }, set: function(t2) { - if ("number" != typeof t2 || t2 < 0 || m2(t2)) + if ("number" != typeof t2 || t2 < 0 || b(t2)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + t2 + "."); k = t2; - } }), _.init = function() { + } }), m.init = function() { void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0; - }, _.prototype.setMaxListeners = function(t2) { - if ("number" != typeof t2 || t2 < 0 || m2(t2)) + }, m.prototype.setMaxListeners = function(t2) { + if ("number" != typeof t2 || t2 < 0 || b(t2)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + t2 + "."); return this._maxListeners = t2, this; - }, _.prototype.getMaxListeners = function() { - return x4(this); - }, _.prototype.emit = function(t2) { - for (var e3 = [], n3 = 1; n3 < arguments.length; n3++) - e3.push(arguments[n3]); + }, m.prototype.getMaxListeners = function() { + return G(this); + }, m.prototype.emit = function(t2) { + for (var e2 = [], n3 = 1; n3 < arguments.length; n3++) + e2.push(arguments[n3]); var r2 = "error" === t2, i2 = this._events; if (void 0 !== i2) r2 = r2 && void 0 === i2.error; @@ -3118,55 +7851,55 @@ var require_graphology_umd_min = __commonJS({ return false; if (r2) { var o2; - if (e3.length > 0 && (o2 = e3[0]), o2 instanceof Error) + if (e2.length > 0 && (o2 = e2[0]), o2 instanceof Error) throw o2; - var a3 = new Error("Unhandled error." + (o2 ? " (" + o2.message + ")" : "")); - throw a3.context = o2, a3; + var a2 = new Error("Unhandled error." + (o2 ? " (" + o2.message + ")" : "")); + throw a2.context = o2, a2; } - var u2 = i2[t2]; - if (void 0 === u2) + var c2 = i2[t2]; + if (void 0 === c2) return false; - if ("function" == typeof u2) - w(u2, this, e3); + if ("function" == typeof c2) + v(c2, this, e2); else { - var c4 = u2.length, d2 = N(u2, c4); - for (n3 = 0; n3 < c4; ++n3) - w(d2[n3], this, e3); + var u2 = c2.length, d2 = D(c2, u2); + for (n3 = 0; n3 < u2; ++n3) + v(d2[n3], this, e2); } return true; - }, _.prototype.addListener = function(t2, e3) { - return E2(this, t2, e3, false); - }, _.prototype.on = _.prototype.addListener, _.prototype.prependListener = function(t2, e3) { - return E2(this, t2, e3, true); - }, _.prototype.once = function(t2, e3) { - return G(e3), this.on(t2, A2(this, t2, e3)), this; - }, _.prototype.prependOnceListener = function(t2, e3) { - return G(e3), this.prependListener(t2, A2(this, t2, e3)), this; - }, _.prototype.removeListener = function(t2, e3) { - var n3, r2, i2, o2, a3; - if (G(e3), void 0 === (r2 = this._events)) + }, m.prototype.addListener = function(t2, e2) { + return x(this, t2, e2, false); + }, m.prototype.on = m.prototype.addListener, m.prototype.prependListener = function(t2, e2) { + return x(this, t2, e2, true); + }, m.prototype.once = function(t2, e2) { + return _(e2), this.on(t2, A(this, t2, e2)), this; + }, m.prototype.prependOnceListener = function(t2, e2) { + return _(e2), this.prependListener(t2, A(this, t2, e2)), this; + }, m.prototype.removeListener = function(t2, e2) { + var n3, r2, i2, o2, a2; + if (_(e2), void 0 === (r2 = this._events)) return this; if (void 0 === (n3 = r2[t2])) return this; - if (n3 === e3 || n3.listener === e3) - 0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : (delete r2[t2], r2.removeListener && this.emit("removeListener", t2, n3.listener || e3)); + if (n3 === e2 || n3.listener === e2) + 0 == --this._eventsCount ? this._events = /* @__PURE__ */ Object.create(null) : (delete r2[t2], r2.removeListener && this.emit("removeListener", t2, n3.listener || e2)); else if ("function" != typeof n3) { for (i2 = -1, o2 = n3.length - 1; o2 >= 0; o2--) - if (n3[o2] === e3 || n3[o2].listener === e3) { - a3 = n3[o2].listener, i2 = o2; + if (n3[o2] === e2 || n3[o2].listener === e2) { + a2 = n3[o2].listener, i2 = o2; break; } if (i2 < 0) return this; - 0 === i2 ? n3.shift() : function(t3, e4) { - for (; e4 + 1 < t3.length; e4++) - t3[e4] = t3[e4 + 1]; + 0 === i2 ? n3.shift() : function(t3, e3) { + for (; e3 + 1 < t3.length; e3++) + t3[e3] = t3[e3 + 1]; t3.pop(); - }(n3, i2), 1 === n3.length && (r2[t2] = n3[0]), void 0 !== r2.removeListener && this.emit("removeListener", t2, a3 || e3); + }(n3, i2), 1 === n3.length && (r2[t2] = n3[0]), void 0 !== r2.removeListener && this.emit("removeListener", t2, a2 || e2); } return this; - }, _.prototype.off = _.prototype.removeListener, _.prototype.removeAllListeners = function(t2) { - var e3, n3, r2; + }, m.prototype.off = m.prototype.removeListener, m.prototype.removeAllListeners = function(t2) { + var e2, n3, r2; if (void 0 === (n3 = this._events)) return this; if (void 0 === n3.removeListener) @@ -3177,967 +7910,837 @@ var require_graphology_umd_min = __commonJS({ "removeListener" !== (i2 = o2[r2]) && this.removeAllListeners(i2); return this.removeAllListeners("removeListener"), this._events = /* @__PURE__ */ Object.create(null), this._eventsCount = 0, this; } - if ("function" == typeof (e3 = n3[t2])) - this.removeListener(t2, e3); - else if (void 0 !== e3) - for (r2 = e3.length - 1; r2 >= 0; r2--) - this.removeListener(t2, e3[r2]); + if ("function" == typeof (e2 = n3[t2])) + this.removeListener(t2, e2); + else if (void 0 !== e2) + for (r2 = e2.length - 1; r2 >= 0; r2--) + this.removeListener(t2, e2[r2]); return this; - }, _.prototype.listeners = function(t2) { + }, m.prototype.listeners = function(t2) { return L(this, t2, true); - }, _.prototype.rawListeners = function(t2) { + }, m.prototype.rawListeners = function(t2) { return L(this, t2, false); - }, _.listenerCount = function(t2, e3) { - return "function" == typeof t2.listenerCount ? t2.listenerCount(e3) : D2.call(t2, e3); - }, _.prototype.listenerCount = D2, _.prototype.eventNames = function() { - return this._eventsCount > 0 ? y4(this._events) : []; - }, "undefined" != typeof Symbol && (j.prototype[Symbol.iterator] = function() { + }, m.listenerCount = function(t2, e2) { + return "function" == typeof t2.listenerCount ? t2.listenerCount(e2) : S.call(t2, e2); + }, m.prototype.listenerCount = S, m.prototype.eventNames = function() { + return this._eventsCount > 0 ? g(this._events) : []; + }, "undefined" != typeof Symbol && (N.prototype[Symbol.iterator] = function() { return this; - }), j.of = function() { - var t2 = arguments, e3 = t2.length, n3 = 0; - return new j(function() { - return n3 >= e3 ? { done: true } : { done: false, value: t2[n3++] }; + }), N.of = function() { + var t2 = arguments, e2 = t2.length, n3 = 0; + return new N(function() { + return n3 >= e2 ? { done: true } : { done: false, value: t2[n3++] }; }); - }, j.empty = function() { - return new j(function() { + }, N.empty = function() { + return new N(function() { return { done: true }; }); - }, j.fromSequence = function(t2) { - var e3 = 0, n3 = t2.length; - return new j(function() { - return e3 >= n3 ? { done: true } : { done: false, value: t2[e3++] }; + }, N.fromSequence = function(t2) { + var e2 = 0, n3 = t2.length; + return new N(function() { + return e2 >= n3 ? { done: true } : { done: false, value: t2[e2++] }; }); - }, j.is = function(t2) { - return t2 instanceof j || "object" == typeof t2 && null !== t2 && "function" == typeof t2.next; + }, N.is = function(t2) { + return t2 instanceof N || "object" == typeof t2 && null !== t2 && "function" == typeof t2.next; }; - var O = j, C2 = {}; - C2.ARRAY_BUFFER_SUPPORT = "undefined" != typeof ArrayBuffer, C2.SYMBOL_SUPPORT = "undefined" != typeof Symbol; - var z = O, M = C2, P = M.ARRAY_BUFFER_SUPPORT, T = M.SYMBOL_SUPPORT; - var R = function(t2) { - var e3 = function(t3) { - return "string" == typeof t3 || Array.isArray(t3) || P && ArrayBuffer.isView(t3) ? z.fromSequence(t3) : "object" != typeof t3 || null === t3 ? null : T && "function" == typeof t3[Symbol.iterator] ? t3[Symbol.iterator]() : "function" == typeof t3.next ? t3 : null; + var O = N, j = {}; + j.ARRAY_BUFFER_SUPPORT = "undefined" != typeof ArrayBuffer, j.SYMBOL_SUPPORT = "undefined" != typeof Symbol; + var C = O, M = j, z2 = M.ARRAY_BUFFER_SUPPORT, W = M.SYMBOL_SUPPORT; + var P = function(t2) { + var e2 = function(t3) { + return "string" == typeof t3 || Array.isArray(t3) || z2 && ArrayBuffer.isView(t3) ? C.fromSequence(t3) : "object" != typeof t3 || null === t3 ? null : W && "function" == typeof t3[Symbol.iterator] ? t3[Symbol.iterator]() : "function" == typeof t3.next ? t3 : null; }(t2); - if (!e3) + if (!e2) throw new Error("obliterator: target is not iterable nor a valid iterator."); - return e3; - }, W = R, K = function(t2, e3) { - for (var n3, r2 = arguments.length > 1 ? e3 : 1 / 0, i2 = r2 !== 1 / 0 ? new Array(r2) : [], o2 = 0, a3 = W(t2); ; ) { + return e2; + }, R = P, K = function(t2, e2) { + for (var n3, r2 = arguments.length > 1 ? e2 : 1 / 0, i2 = r2 !== 1 / 0 ? new Array(r2) : [], o2 = 0, a2 = R(t2); ; ) { if (o2 === r2) return i2; - if ((n3 = a3.next()).done) - return o2 !== e3 && (i2.length = o2), i2; + if ((n3 = a2.next()).done) + return o2 !== e2 && (i2.length = o2), i2; i2[o2++] = n3.value; } - }, I = function(t2) { - function n3(e3) { + }, T = function(t2) { + function n3(e2) { var n4; - return (n4 = t2.call(this) || this).name = "GraphError", n4.message = e3, n4; + return (n4 = t2.call(this) || this).name = "GraphError", n4.message = e2, n4; } return e(n3, t2), n3; - }(a2(Error)), F = function(t2) { - function n3(e3) { + }(a(Error)), B = function(t2) { + function n3(e2) { var r2; - return (r2 = t2.call(this, e3) || this).name = "InvalidArgumentsGraphError", "function" == typeof Error.captureStackTrace && Error.captureStackTrace(u(r2), n3.prototype.constructor), r2; + return (r2 = t2.call(this, e2) || this).name = "InvalidArgumentsGraphError", "function" == typeof Error.captureStackTrace && Error.captureStackTrace(c(r2), n3.prototype.constructor), r2; } return e(n3, t2), n3; - }(I), Y2 = function(t2) { - function n3(e3) { + }(T), F = function(t2) { + function n3(e2) { var r2; - return (r2 = t2.call(this, e3) || this).name = "NotFoundGraphError", "function" == typeof Error.captureStackTrace && Error.captureStackTrace(u(r2), n3.prototype.constructor), r2; + return (r2 = t2.call(this, e2) || this).name = "NotFoundGraphError", "function" == typeof Error.captureStackTrace && Error.captureStackTrace(c(r2), n3.prototype.constructor), r2; } return e(n3, t2), n3; - }(I), B2 = function(t2) { - function n3(e3) { + }(T), I = function(t2) { + function n3(e2) { var r2; - return (r2 = t2.call(this, e3) || this).name = "UsageGraphError", "function" == typeof Error.captureStackTrace && Error.captureStackTrace(u(r2), n3.prototype.constructor), r2; + return (r2 = t2.call(this, e2) || this).name = "UsageGraphError", "function" == typeof Error.captureStackTrace && Error.captureStackTrace(c(r2), n3.prototype.constructor), r2; } return e(n3, t2), n3; - }(I); - function q(t2, e3) { - this.key = t2, this.attributes = e3, this.clear(); + }(T); + function Y(t2, e2) { + this.key = t2, this.attributes = e2, this.clear(); } - function J(t2, e3) { - this.key = t2, this.attributes = e3, this.clear(); + function q(t2, e2) { + this.key = t2, this.attributes = e2, this.clear(); } - function V(t2, e3) { - this.key = t2, this.attributes = e3, this.clear(); + function J(t2, e2) { + this.key = t2, this.attributes = e2, this.clear(); } - function H(t2, e3, n3, r2, i2) { - this.key = e3, this.attributes = i2, this.undirected = t2, this.source = n3, this.target = r2; + function V(t2, e2, n3, r2, i2) { + this.key = e2, this.attributes = i2, this.undirected = t2, this.source = n3, this.target = r2; } - function Q(t2, e3, n3, r2, i2, o2, a3) { - var u2, c4, d2 = "out", s3 = "in"; - if (e3 && (d2 = s3 = "undirected"), t2.multi) { - if (void 0 === (c4 = (u2 = o2[d2])[i2]) && (c4 = /* @__PURE__ */ new Set(), u2[i2] = c4), c4.add(n3), r2 === i2 && e3) - return; - void 0 === (u2 = a3[s3])[r2] && (u2[r2] = c4); - } else { - if (o2[d2][i2] = n3, r2 === i2 && e3) - return; - a3[s3][r2] = n3; - } - } - function X2(t2, e3, n3) { - var r2 = t2.multi, i2 = n3.source, o2 = n3.target, a3 = i2.key, u2 = o2.key, c4 = i2[e3 ? "undirected" : "out"], d2 = e3 ? "undirected" : "in"; - if (u2 in c4) - if (r2) { - var s3 = c4[u2]; - 1 === s3.size ? (delete c4[u2], delete o2[d2][a3]) : s3.delete(n3); - } else - delete c4[u2]; - r2 || delete o2[d2][a3]; - } - q.prototype.clear = function() { - this.inDegree = 0, this.outDegree = 0, this.undirectedDegree = 0, this.directedSelfLoops = 0, this.undirectedSelfLoops = 0, this.in = {}, this.out = {}, this.undirected = {}; + Y.prototype.clear = function() { + this.inDegree = 0, this.outDegree = 0, this.undirectedDegree = 0, this.undirectedLoops = 0, this.directedLoops = 0, this.in = {}, this.out = {}, this.undirected = {}; + }, q.prototype.clear = function() { + this.inDegree = 0, this.outDegree = 0, this.directedLoops = 0, this.in = {}, this.out = {}; }, J.prototype.clear = function() { - this.inDegree = 0, this.outDegree = 0, this.directedSelfLoops = 0, this.in = {}, this.out = {}; - }, J.prototype.upgradeToMixed = function() { - this.undirectedDegree = 0, this.undirectedSelfLoops = 0, this.undirected = {}; - }, V.prototype.clear = function() { - this.undirectedDegree = 0, this.undirectedSelfLoops = 0, this.undirected = {}; - }, V.prototype.upgradeToMixed = function() { - this.inDegree = 0, this.outDegree = 0, this.directedSelfLoops = 0, this.in = {}, this.out = {}; + this.undirectedDegree = 0, this.undirectedLoops = 0, this.undirected = {}; + }, V.prototype.attach = function() { + var t2 = "out", e2 = "in"; + this.undirected && (t2 = e2 = "undirected"); + var n3 = this.source.key, r2 = this.target.key; + this.source[t2][r2] = this, this.undirected && n3 === r2 || (this.target[e2][n3] = this); + }, V.prototype.attachMulti = function() { + var t2 = "out", e2 = "in", n3 = this.source.key, r2 = this.target.key; + this.undirected && (t2 = e2 = "undirected"); + var i2 = this.source[t2], o2 = i2[r2]; + if (void 0 === o2) + return i2[r2] = this, void (this.undirected && n3 === r2 || (this.target[e2][n3] = this)); + o2.previous = this, this.next = o2, i2[r2] = this, this.target[e2][n3] = this; + }, V.prototype.detach = function() { + var t2 = this.source.key, e2 = this.target.key, n3 = "out", r2 = "in"; + this.undirected && (n3 = r2 = "undirected"), delete this.source[n3][e2], delete this.target[r2][t2]; + }, V.prototype.detachMulti = function() { + var t2 = this.source.key, e2 = this.target.key, n3 = "out", r2 = "in"; + this.undirected && (n3 = r2 = "undirected"), void 0 === this.previous ? void 0 === this.next ? (delete this.source[n3][e2], delete this.target[r2][t2]) : (this.next.previous = void 0, this.source[n3][e2] = this.next, this.target[r2][t2] = this.next) : (this.previous.next = this.next, void 0 !== this.next && (this.next.previous = this.previous)); }; - function Z(t2, e3, n3, r2, i2, o2, a3) { - var u2, c4, d2, s3; + function H(t2, e2, n3, r2, i2, o2, a2) { + var c2, u2, d2, s3; if (r2 = "" + r2, 0 === n3) { - if (!(u2 = t2._nodes.get(r2))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(r2, '" node in the graph.')); + if (!(c2 = t2._nodes.get(r2))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(r2, '" node in the graph.')); d2 = i2, s3 = o2; } else if (3 === n3) { - if (i2 = "" + i2, !(c4 = t2._edges.get(i2))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(i2, '" edge in the graph.')); - var h2 = c4.source.key, f2 = c4.target.key; + if (i2 = "" + i2, !(u2 = t2._edges.get(i2))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(i2, '" edge in the graph.')); + var h2 = u2.source.key, p2 = u2.target.key; if (r2 === h2) - u2 = c4.target; + c2 = u2.target; else { - if (r2 !== f2) - throw new Y2("Graph.".concat(e3, ': the "').concat(r2, '" node is not attached to the "').concat(i2, '" edge (').concat(h2, ", ").concat(f2, ").")); - u2 = c4.source; + if (r2 !== p2) + throw new F("Graph.".concat(e2, ': the "').concat(r2, '" node is not attached to the "').concat(i2, '" edge (').concat(h2, ", ").concat(p2, ").")); + c2 = u2.source; } - d2 = o2, s3 = a3; + d2 = o2, s3 = a2; } else { - if (!(c4 = t2._edges.get(r2))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(r2, '" edge in the graph.')); - u2 = 1 === n3 ? c4.source : c4.target, d2 = i2, s3 = o2; + if (!(u2 = t2._edges.get(r2))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(r2, '" edge in the graph.')); + c2 = 1 === n3 ? u2.source : u2.target, d2 = i2, s3 = o2; } - return [u2, d2, s3]; + return [c2, d2, s3]; } - var $ = [{ name: function(t2) { + var Q = [{ name: function(t2) { return "get".concat(t2, "Attribute"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2, i2) { - var o2 = Z(this, e3, n3, t3, r2, i2), a3 = o2[0], u2 = o2[1]; - return a3.attributes[u2]; + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2, i2) { + var o2 = H(this, e2, n3, t3, r2, i2), a2 = o2[0], c2 = o2[1]; + return a2.attributes[c2]; }; } }, { name: function(t2) { return "get".concat(t2, "Attributes"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2) { - return Z(this, e3, n3, t3, r2)[0].attributes; + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2) { + return H(this, e2, n3, t3, r2)[0].attributes; }; } }, { name: function(t2) { return "has".concat(t2, "Attribute"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2, i2) { - var o2 = Z(this, e3, n3, t3, r2, i2), a3 = o2[0], u2 = o2[1]; - return a3.attributes.hasOwnProperty(u2); + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2, i2) { + var o2 = H(this, e2, n3, t3, r2, i2), a2 = o2[0], c2 = o2[1]; + return a2.attributes.hasOwnProperty(c2); }; } }, { name: function(t2) { return "set".concat(t2, "Attribute"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2, i2, o2) { - var a3 = Z(this, e3, n3, t3, r2, i2, o2), u2 = a3[0], c4 = a3[1], d2 = a3[2]; - return u2.attributes[c4] = d2, this.emit("nodeAttributesUpdated", { key: u2.key, type: "set", attributes: u2.attributes, name: c4 }), this; + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2, i2, o2) { + var a2 = H(this, e2, n3, t3, r2, i2, o2), c2 = a2[0], u2 = a2[1], d2 = a2[2]; + return c2.attributes[u2] = d2, this.emit("nodeAttributesUpdated", { key: c2.key, type: "set", attributes: c2.attributes, name: u2 }), this; }; } }, { name: function(t2) { return "update".concat(t2, "Attribute"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2, i2, o2) { - var a3 = Z(this, e3, n3, t3, r2, i2, o2), u2 = a3[0], c4 = a3[1], d2 = a3[2]; + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2, i2, o2) { + var a2 = H(this, e2, n3, t3, r2, i2, o2), c2 = a2[0], u2 = a2[1], d2 = a2[2]; if ("function" != typeof d2) - throw new F("Graph.".concat(e3, ": updater should be a function.")); - var s3 = u2.attributes, h2 = d2(s3[c4]); - return s3[c4] = h2, this.emit("nodeAttributesUpdated", { key: u2.key, type: "set", attributes: u2.attributes, name: c4 }), this; + throw new B("Graph.".concat(e2, ": updater should be a function.")); + var s3 = c2.attributes, h2 = d2(s3[u2]); + return s3[u2] = h2, this.emit("nodeAttributesUpdated", { key: c2.key, type: "set", attributes: c2.attributes, name: u2 }), this; }; } }, { name: function(t2) { return "remove".concat(t2, "Attribute"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2, i2) { - var o2 = Z(this, e3, n3, t3, r2, i2), a3 = o2[0], u2 = o2[1]; - return delete a3.attributes[u2], this.emit("nodeAttributesUpdated", { key: a3.key, type: "remove", attributes: a3.attributes, name: u2 }), this; + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2, i2) { + var o2 = H(this, e2, n3, t3, r2, i2), a2 = o2[0], c2 = o2[1]; + return delete a2.attributes[c2], this.emit("nodeAttributesUpdated", { key: a2.key, type: "remove", attributes: a2.attributes, name: c2 }), this; }; } }, { name: function(t2) { return "replace".concat(t2, "Attributes"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2, i2) { - var o2 = Z(this, e3, n3, t3, r2, i2), a3 = o2[0], u2 = o2[1]; - if (!h(u2)) - throw new F("Graph.".concat(e3, ": provided attributes are not a plain object.")); - return a3.attributes = u2, this.emit("nodeAttributesUpdated", { key: a3.key, type: "replace", attributes: a3.attributes }), this; + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2, i2) { + var o2 = H(this, e2, n3, t3, r2, i2), a2 = o2[0], c2 = o2[1]; + if (!s2(c2)) + throw new B("Graph.".concat(e2, ": provided attributes are not a plain object.")); + return a2.attributes = c2, this.emit("nodeAttributesUpdated", { key: a2.key, type: "replace", attributes: a2.attributes }), this; }; } }, { name: function(t2) { return "merge".concat(t2, "Attributes"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2, i2) { - var o2 = Z(this, e3, n3, t3, r2, i2), a3 = o2[0], u2 = o2[1]; - if (!h(u2)) - throw new F("Graph.".concat(e3, ": provided attributes are not a plain object.")); - return c3(a3.attributes, u2), this.emit("nodeAttributesUpdated", { key: a3.key, type: "merge", attributes: a3.attributes, data: u2 }), this; + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2, i2) { + var o2 = H(this, e2, n3, t3, r2, i2), a2 = o2[0], c2 = o2[1]; + if (!s2(c2)) + throw new B("Graph.".concat(e2, ": provided attributes are not a plain object.")); + return u(a2.attributes, c2), this.emit("nodeAttributesUpdated", { key: a2.key, type: "merge", attributes: a2.attributes, data: c2 }), this; }; } }, { name: function(t2) { return "update".concat(t2, "Attributes"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2, i2) { - var o2 = Z(this, e3, n3, t3, r2, i2), a3 = o2[0], u2 = o2[1]; - if ("function" != typeof u2) - throw new F("Graph.".concat(e3, ": provided updater is not a function.")); - return a3.attributes = u2(a3.attributes), this.emit("nodeAttributesUpdated", { key: a3.key, type: "update", attributes: a3.attributes }), this; + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2, i2) { + var o2 = H(this, e2, n3, t3, r2, i2), a2 = o2[0], c2 = o2[1]; + if ("function" != typeof c2) + throw new B("Graph.".concat(e2, ": provided updater is not a function.")); + return a2.attributes = c2(a2.attributes), this.emit("nodeAttributesUpdated", { key: a2.key, type: "update", attributes: a2.attributes }), this; }; } }]; - var tt = [{ name: function(t2) { + var X = [{ name: function(t2) { return "get".concat(t2, "Attribute"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2) { + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2) { var i2; if ("mixed" !== this.type && "mixed" !== n3 && n3 !== this.type) - throw new B2("Graph.".concat(e3, ": cannot find this type of edges in your ").concat(this.type, " graph.")); + throw new I("Graph.".concat(e2, ": cannot find this type of edges in your ").concat(this.type, " graph.")); if (arguments.length > 2) { if (this.multi) - throw new B2("Graph.".concat(e3, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); - var o2 = "" + t3, a3 = "" + r2; - if (r2 = arguments[2], !(i2 = d(this, o2, a3, n3))) - throw new Y2("Graph.".concat(e3, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a3, '").')); - } else if (t3 = "" + t3, !(i2 = this._edges.get(t3))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" edge in the graph.')); - if ("mixed" !== n3 && i2.undirected !== ("undirected" === n3)) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" ').concat(n3, " edge in the graph.")); + throw new I("Graph.".concat(e2, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); + var o2 = "" + t3, a2 = "" + r2; + if (r2 = arguments[2], !(i2 = d(this, o2, a2, n3))) + throw new F("Graph.".concat(e2, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a2, '").')); + } else { + if ("mixed" !== n3) + throw new I("Graph.".concat(e2, ": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.")); + if (t3 = "" + t3, !(i2 = this._edges.get(t3))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(t3, '" edge in the graph.')); + } return i2.attributes[r2]; }; } }, { name: function(t2) { return "get".concat(t2, "Attributes"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3) { + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3) { var r2; if ("mixed" !== this.type && "mixed" !== n3 && n3 !== this.type) - throw new B2("Graph.".concat(e3, ": cannot find this type of edges in your ").concat(this.type, " graph.")); + throw new I("Graph.".concat(e2, ": cannot find this type of edges in your ").concat(this.type, " graph.")); if (arguments.length > 1) { if (this.multi) - throw new B2("Graph.".concat(e3, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); + throw new I("Graph.".concat(e2, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); var i2 = "" + t3, o2 = "" + arguments[1]; if (!(r2 = d(this, i2, o2, n3))) - throw new Y2("Graph.".concat(e3, ': could not find an edge for the given path ("').concat(i2, '" - "').concat(o2, '").')); - } else if (t3 = "" + t3, !(r2 = this._edges.get(t3))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" edge in the graph.')); - if ("mixed" !== n3 && r2.undirected !== ("undirected" === n3)) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" ').concat(n3, " edge in the graph.")); + throw new F("Graph.".concat(e2, ': could not find an edge for the given path ("').concat(i2, '" - "').concat(o2, '").')); + } else { + if ("mixed" !== n3) + throw new I("Graph.".concat(e2, ": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.")); + if (t3 = "" + t3, !(r2 = this._edges.get(t3))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(t3, '" edge in the graph.')); + } return r2.attributes; }; } }, { name: function(t2) { return "has".concat(t2, "Attribute"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2) { + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2) { var i2; if ("mixed" !== this.type && "mixed" !== n3 && n3 !== this.type) - throw new B2("Graph.".concat(e3, ": cannot find this type of edges in your ").concat(this.type, " graph.")); + throw new I("Graph.".concat(e2, ": cannot find this type of edges in your ").concat(this.type, " graph.")); if (arguments.length > 2) { if (this.multi) - throw new B2("Graph.".concat(e3, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); - var o2 = "" + t3, a3 = "" + r2; - if (r2 = arguments[2], !(i2 = d(this, o2, a3, n3))) - throw new Y2("Graph.".concat(e3, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a3, '").')); - } else if (t3 = "" + t3, !(i2 = this._edges.get(t3))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" edge in the graph.')); - if ("mixed" !== n3 && i2.undirected !== ("undirected" === n3)) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" ').concat(n3, " edge in the graph.")); + throw new I("Graph.".concat(e2, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); + var o2 = "" + t3, a2 = "" + r2; + if (r2 = arguments[2], !(i2 = d(this, o2, a2, n3))) + throw new F("Graph.".concat(e2, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a2, '").')); + } else { + if ("mixed" !== n3) + throw new I("Graph.".concat(e2, ": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.")); + if (t3 = "" + t3, !(i2 = this._edges.get(t3))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(t3, '" edge in the graph.')); + } return i2.attributes.hasOwnProperty(r2); }; } }, { name: function(t2) { return "set".concat(t2, "Attribute"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2, i2) { + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2, i2) { var o2; if ("mixed" !== this.type && "mixed" !== n3 && n3 !== this.type) - throw new B2("Graph.".concat(e3, ": cannot find this type of edges in your ").concat(this.type, " graph.")); + throw new I("Graph.".concat(e2, ": cannot find this type of edges in your ").concat(this.type, " graph.")); if (arguments.length > 3) { if (this.multi) - throw new B2("Graph.".concat(e3, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); - var a3 = "" + t3, u2 = "" + r2; - if (r2 = arguments[2], i2 = arguments[3], !(o2 = d(this, a3, u2, n3))) - throw new Y2("Graph.".concat(e3, ': could not find an edge for the given path ("').concat(a3, '" - "').concat(u2, '").')); - } else if (t3 = "" + t3, !(o2 = this._edges.get(t3))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" edge in the graph.')); - if ("mixed" !== n3 && o2.undirected !== ("undirected" === n3)) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" ').concat(n3, " edge in the graph.")); + throw new I("Graph.".concat(e2, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); + var a2 = "" + t3, c2 = "" + r2; + if (r2 = arguments[2], i2 = arguments[3], !(o2 = d(this, a2, c2, n3))) + throw new F("Graph.".concat(e2, ': could not find an edge for the given path ("').concat(a2, '" - "').concat(c2, '").')); + } else { + if ("mixed" !== n3) + throw new I("Graph.".concat(e2, ": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.")); + if (t3 = "" + t3, !(o2 = this._edges.get(t3))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(t3, '" edge in the graph.')); + } return o2.attributes[r2] = i2, this.emit("edgeAttributesUpdated", { key: o2.key, type: "set", attributes: o2.attributes, name: r2 }), this; }; } }, { name: function(t2) { return "update".concat(t2, "Attribute"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2, i2) { + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2, i2) { var o2; if ("mixed" !== this.type && "mixed" !== n3 && n3 !== this.type) - throw new B2("Graph.".concat(e3, ": cannot find this type of edges in your ").concat(this.type, " graph.")); + throw new I("Graph.".concat(e2, ": cannot find this type of edges in your ").concat(this.type, " graph.")); if (arguments.length > 3) { if (this.multi) - throw new B2("Graph.".concat(e3, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); - var a3 = "" + t3, u2 = "" + r2; - if (r2 = arguments[2], i2 = arguments[3], !(o2 = d(this, a3, u2, n3))) - throw new Y2("Graph.".concat(e3, ': could not find an edge for the given path ("').concat(a3, '" - "').concat(u2, '").')); - } else if (t3 = "" + t3, !(o2 = this._edges.get(t3))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" edge in the graph.')); + throw new I("Graph.".concat(e2, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); + var a2 = "" + t3, c2 = "" + r2; + if (r2 = arguments[2], i2 = arguments[3], !(o2 = d(this, a2, c2, n3))) + throw new F("Graph.".concat(e2, ': could not find an edge for the given path ("').concat(a2, '" - "').concat(c2, '").')); + } else { + if ("mixed" !== n3) + throw new I("Graph.".concat(e2, ": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.")); + if (t3 = "" + t3, !(o2 = this._edges.get(t3))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(t3, '" edge in the graph.')); + } if ("function" != typeof i2) - throw new F("Graph.".concat(e3, ": updater should be a function.")); - if ("mixed" !== n3 && o2.undirected !== ("undirected" === n3)) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" ').concat(n3, " edge in the graph.")); + throw new B("Graph.".concat(e2, ": updater should be a function.")); return o2.attributes[r2] = i2(o2.attributes[r2]), this.emit("edgeAttributesUpdated", { key: o2.key, type: "set", attributes: o2.attributes, name: r2 }), this; }; } }, { name: function(t2) { return "remove".concat(t2, "Attribute"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2) { + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2) { var i2; if ("mixed" !== this.type && "mixed" !== n3 && n3 !== this.type) - throw new B2("Graph.".concat(e3, ": cannot find this type of edges in your ").concat(this.type, " graph.")); + throw new I("Graph.".concat(e2, ": cannot find this type of edges in your ").concat(this.type, " graph.")); if (arguments.length > 2) { if (this.multi) - throw new B2("Graph.".concat(e3, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); - var o2 = "" + t3, a3 = "" + r2; - if (r2 = arguments[2], !(i2 = d(this, o2, a3, n3))) - throw new Y2("Graph.".concat(e3, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a3, '").')); - } else if (t3 = "" + t3, !(i2 = this._edges.get(t3))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" edge in the graph.')); - if ("mixed" !== n3 && i2.undirected !== ("undirected" === n3)) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" ').concat(n3, " edge in the graph.")); + throw new I("Graph.".concat(e2, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); + var o2 = "" + t3, a2 = "" + r2; + if (r2 = arguments[2], !(i2 = d(this, o2, a2, n3))) + throw new F("Graph.".concat(e2, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a2, '").')); + } else { + if ("mixed" !== n3) + throw new I("Graph.".concat(e2, ": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.")); + if (t3 = "" + t3, !(i2 = this._edges.get(t3))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(t3, '" edge in the graph.')); + } return delete i2.attributes[r2], this.emit("edgeAttributesUpdated", { key: i2.key, type: "remove", attributes: i2.attributes, name: r2 }), this; }; } }, { name: function(t2) { return "replace".concat(t2, "Attributes"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2) { + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2) { var i2; if ("mixed" !== this.type && "mixed" !== n3 && n3 !== this.type) - throw new B2("Graph.".concat(e3, ": cannot find this type of edges in your ").concat(this.type, " graph.")); + throw new I("Graph.".concat(e2, ": cannot find this type of edges in your ").concat(this.type, " graph.")); if (arguments.length > 2) { if (this.multi) - throw new B2("Graph.".concat(e3, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); - var o2 = "" + t3, a3 = "" + r2; - if (r2 = arguments[2], !(i2 = d(this, o2, a3, n3))) - throw new Y2("Graph.".concat(e3, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a3, '").')); - } else if (t3 = "" + t3, !(i2 = this._edges.get(t3))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" edge in the graph.')); - if (!h(r2)) - throw new F("Graph.".concat(e3, ": provided attributes are not a plain object.")); - if ("mixed" !== n3 && i2.undirected !== ("undirected" === n3)) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" ').concat(n3, " edge in the graph.")); + throw new I("Graph.".concat(e2, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); + var o2 = "" + t3, a2 = "" + r2; + if (r2 = arguments[2], !(i2 = d(this, o2, a2, n3))) + throw new F("Graph.".concat(e2, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a2, '").')); + } else { + if ("mixed" !== n3) + throw new I("Graph.".concat(e2, ": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.")); + if (t3 = "" + t3, !(i2 = this._edges.get(t3))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(t3, '" edge in the graph.')); + } + if (!s2(r2)) + throw new B("Graph.".concat(e2, ": provided attributes are not a plain object.")); return i2.attributes = r2, this.emit("edgeAttributesUpdated", { key: i2.key, type: "replace", attributes: i2.attributes }), this; }; } }, { name: function(t2) { return "merge".concat(t2, "Attributes"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2) { + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2) { var i2; if ("mixed" !== this.type && "mixed" !== n3 && n3 !== this.type) - throw new B2("Graph.".concat(e3, ": cannot find this type of edges in your ").concat(this.type, " graph.")); + throw new I("Graph.".concat(e2, ": cannot find this type of edges in your ").concat(this.type, " graph.")); if (arguments.length > 2) { if (this.multi) - throw new B2("Graph.".concat(e3, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); - var o2 = "" + t3, a3 = "" + r2; - if (r2 = arguments[2], !(i2 = d(this, o2, a3, n3))) - throw new Y2("Graph.".concat(e3, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a3, '").')); - } else if (t3 = "" + t3, !(i2 = this._edges.get(t3))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" edge in the graph.')); - if (!h(r2)) - throw new F("Graph.".concat(e3, ": provided attributes are not a plain object.")); - if ("mixed" !== n3 && i2.undirected !== ("undirected" === n3)) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" ').concat(n3, " edge in the graph.")); - return c3(i2.attributes, r2), this.emit("edgeAttributesUpdated", { key: i2.key, type: "merge", attributes: i2.attributes, data: r2 }), this; + throw new I("Graph.".concat(e2, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); + var o2 = "" + t3, a2 = "" + r2; + if (r2 = arguments[2], !(i2 = d(this, o2, a2, n3))) + throw new F("Graph.".concat(e2, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a2, '").')); + } else { + if ("mixed" !== n3) + throw new I("Graph.".concat(e2, ": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.")); + if (t3 = "" + t3, !(i2 = this._edges.get(t3))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(t3, '" edge in the graph.')); + } + if (!s2(r2)) + throw new B("Graph.".concat(e2, ": provided attributes are not a plain object.")); + return u(i2.attributes, r2), this.emit("edgeAttributesUpdated", { key: i2.key, type: "merge", attributes: i2.attributes, data: r2 }), this; }; } }, { name: function(t2) { return "update".concat(t2, "Attributes"); - }, attacher: function(t2, e3, n3) { - t2.prototype[e3] = function(t3, r2) { + }, attacher: function(t2, e2, n3) { + t2.prototype[e2] = function(t3, r2) { var i2; if ("mixed" !== this.type && "mixed" !== n3 && n3 !== this.type) - throw new B2("Graph.".concat(e3, ": cannot find this type of edges in your ").concat(this.type, " graph.")); + throw new I("Graph.".concat(e2, ": cannot find this type of edges in your ").concat(this.type, " graph.")); if (arguments.length > 2) { if (this.multi) - throw new B2("Graph.".concat(e3, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); - var o2 = "" + t3, a3 = "" + r2; - if (r2 = arguments[2], !(i2 = d(this, o2, a3, n3))) - throw new Y2("Graph.".concat(e3, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a3, '").')); - } else if (t3 = "" + t3, !(i2 = this._edges.get(t3))) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" edge in the graph.')); + throw new I("Graph.".concat(e2, ": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about.")); + var o2 = "" + t3, a2 = "" + r2; + if (r2 = arguments[2], !(i2 = d(this, o2, a2, n3))) + throw new F("Graph.".concat(e2, ': could not find an edge for the given path ("').concat(o2, '" - "').concat(a2, '").')); + } else { + if ("mixed" !== n3) + throw new I("Graph.".concat(e2, ": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type.")); + if (t3 = "" + t3, !(i2 = this._edges.get(t3))) + throw new F("Graph.".concat(e2, ': could not find the "').concat(t3, '" edge in the graph.')); + } if ("function" != typeof r2) - throw new F("Graph.".concat(e3, ": provided updater is not a function.")); - if ("mixed" !== n3 && i2.undirected !== ("undirected" === n3)) - throw new Y2("Graph.".concat(e3, ': could not find the "').concat(t3, '" ').concat(n3, " edge in the graph.")); + throw new B("Graph.".concat(e2, ": provided updater is not a function.")); return i2.attributes = r2(i2.attributes), this.emit("edgeAttributesUpdated", { key: i2.key, type: "update", attributes: i2.attributes }), this; }; } }]; - var et = O, nt = R, rt = function() { - var t2 = arguments, e3 = null, n3 = -1; - return new et(function r2() { - if (null === e3) { - if (++n3 >= t2.length) - return { done: true }; - e3 = nt(t2[n3]); + var Z = O, $ = P, tt = function() { + var t2 = arguments, e2 = null, n3 = -1; + return new Z(function() { + for (var r2 = null; ; ) { + if (null === e2) { + if (++n3 >= t2.length) + return { done: true }; + e2 = $(t2[n3]); + } + if (true !== (r2 = e2.next()).done) + break; + e2 = null; } - var i2 = e3.next(); - return i2.done ? (e3 = null, r2()) : i2; + return r2; }); - }, it = [{ name: "edges", type: "mixed" }, { name: "inEdges", type: "directed", direction: "in" }, { name: "outEdges", type: "directed", direction: "out" }, { name: "inboundEdges", type: "mixed", direction: "in" }, { name: "outboundEdges", type: "mixed", direction: "out" }, { name: "directedEdges", type: "directed" }, { name: "undirectedEdges", type: "undirected" }]; - function ot(t2, e3) { - for (var n3 in e3) - t2.push(e3[n3].key); - } - function at(t2, e3) { - for (var n3 in e3) - e3[n3].forEach(function(e4) { - return t2.push(e4.key); - }); - } - function ut(t2, e3, n3) { - for (var r2 in t2) - if (r2 !== n3) { - var i2 = t2[r2]; - e3(i2.key, i2.attributes, i2.source.key, i2.target.key, i2.source.attributes, i2.target.attributes, i2.undirected); + }, et = [{ name: "edges", type: "mixed" }, { name: "inEdges", type: "directed", direction: "in" }, { name: "outEdges", type: "directed", direction: "out" }, { name: "inboundEdges", type: "mixed", direction: "in" }, { name: "outboundEdges", type: "mixed", direction: "out" }, { name: "directedEdges", type: "directed" }, { name: "undirectedEdges", type: "undirected" }]; + function nt(t2, e2, n3, r2) { + var i2 = false; + for (var o2 in e2) + if (o2 !== r2) { + var a2 = e2[o2]; + if (i2 = n3(a2.key, a2.attributes, a2.source.key, a2.target.key, a2.source.attributes, a2.target.attributes, a2.undirected), t2 && i2) + return a2.key; } } - function ct(t2, e3, n3) { - for (var r2 in t2) - r2 !== n3 && t2[r2].forEach(function(t3) { - return e3(t3.key, t3.attributes, t3.source.key, t3.target.key, t3.source.attributes, t3.target.attributes, t3.undirected); - }); + function rt(t2, e2, n3, r2) { + var i2, o2, a2, c2 = false; + for (var u2 in e2) + if (u2 !== r2) { + i2 = e2[u2]; + do { + if (o2 = i2.source, a2 = i2.target, c2 = n3(i2.key, i2.attributes, o2.key, a2.key, o2.attributes, a2.attributes, i2.undirected), t2 && c2) + return i2.key; + i2 = i2.next; + } while (void 0 !== i2); + } } - function dt(t2, e3, n3) { - for (var r2 in t2) - if (r2 !== n3) { - var i2 = t2[r2]; - if (e3(i2.key, i2.attributes, i2.source.key, i2.target.key, i2.source.attributes, i2.target.attributes, i2.undirected)) + function it(t2, e2) { + var n3, r2 = Object.keys(t2), i2 = r2.length, o2 = 0; + return new O(function() { + do { + if (n3) + n3 = n3.next; + else { + if (o2 >= i2) + return { done: true }; + var a2 = r2[o2++]; + if (a2 === e2) { + n3 = void 0; + continue; + } + n3 = t2[a2]; + } + } while (!n3); + return { done: false, value: { edge: n3.key, attributes: n3.attributes, source: n3.source.key, target: n3.target.key, sourceAttributes: n3.source.attributes, targetAttributes: n3.target.attributes, undirected: n3.undirected } }; + }); + } + function ot(t2, e2, n3, r2) { + var i2 = e2[n3]; + if (i2) { + var o2 = i2.source, a2 = i2.target; + return r2(i2.key, i2.attributes, o2.key, a2.key, o2.attributes, a2.attributes, i2.undirected) && t2 ? i2.key : void 0; + } + } + function at(t2, e2, n3, r2) { + var i2 = e2[n3]; + if (i2) { + var o2 = false; + do { + if (o2 = r2(i2.key, i2.attributes, i2.source.key, i2.target.key, i2.source.attributes, i2.target.attributes, i2.undirected), t2 && o2) return i2.key; - } - } - function st(t2, e3, n3) { - var r2, i2, o2, a3, u2; - for (var c4 in t2) - if (c4 !== n3) { - for (r2 = t2[c4].values(); true !== (i2 = r2.next()).done; ) - if (a3 = (o2 = i2.value).source, u2 = o2.target, e3(o2.key, o2.attributes, a3.key, u2.key, a3.attributes, u2.attributes, o2.undirected)) - return o2.key; - } - } - function ht(t2, e3) { - var n3 = Object.keys(t2), r2 = n3.length, i2 = null, o2 = 0; - return new O(function a3() { - var u2; - if (i2) { - var c4 = i2.next(); - if (c4.done) - return i2 = null, o2++, a3(); - u2 = c4.value; - } else { - if (o2 >= r2) - return { done: true }; - var d2 = n3[o2]; - if (d2 === e3) - return o2++, a3(); - if ((u2 = t2[d2]) instanceof Set) - return i2 = u2.values(), a3(); - o2++; - } - return { done: false, value: { edge: u2.key, attributes: u2.attributes, source: u2.source.key, target: u2.target.key, sourceAttributes: u2.source.attributes, targetAttributes: u2.target.attributes, undirected: u2.undirected } }; - }); - } - function ft(t2, e3, n3) { - var r2 = e3[n3]; - r2 && t2.push(r2.key); - } - function pt(t2, e3, n3) { - var r2 = e3[n3]; - r2 && r2.forEach(function(e4) { - return t2.push(e4.key); - }); - } - function lt(t2, e3, n3) { - var r2 = t2[e3]; - if (r2) { - var i2 = r2.source, o2 = r2.target; - n3(r2.key, r2.attributes, i2.key, o2.key, i2.attributes, o2.attributes, r2.undirected); + i2 = i2.next; + } while (void 0 !== i2); } } - function gt(t2, e3, n3) { - var r2 = t2[e3]; - r2 && r2.forEach(function(t3) { - return n3(t3.key, t3.attributes, t3.source.key, t3.target.key, t3.source.attributes, t3.target.attributes, t3.undirected); - }); + function ct(t2, e2) { + var n3 = t2[e2]; + return void 0 !== n3.next ? new O(function() { + if (!n3) + return { done: true }; + var t3 = { edge: n3.key, attributes: n3.attributes, source: n3.source.key, target: n3.target.key, sourceAttributes: n3.source.attributes, targetAttributes: n3.target.attributes, undirected: n3.undirected }; + return n3 = n3.next, { done: false, value: t3 }; + }) : O.of({ edge: n3.key, attributes: n3.attributes, source: n3.source.key, target: n3.target.key, sourceAttributes: n3.source.attributes, targetAttributes: n3.target.attributes, undirected: n3.undirected }); } - function yt(t2, e3, n3) { - var r2 = t2[e3]; - if (r2) { - var i2 = r2.source, o2 = r2.target; - return n3(r2.key, r2.attributes, i2.key, o2.key, i2.attributes, o2.attributes, r2.undirected) ? r2.key : void 0; - } - } - function vt(t2, e3, n3) { - var r2 = t2[e3]; - if (r2) { - for (var i2, o2, a3 = r2.values(); true !== (i2 = a3.next()).done; ) - if (n3((o2 = i2.value).key, o2.attributes, o2.source.key, o2.target.key, o2.source.attributes, o2.target.attributes, o2.undirected)) - return o2.key; - } - } - function bt(t2, e3) { - var n3 = t2[e3]; - if (n3 instanceof Set) { - var r2 = n3.values(); - return new O(function() { - var t3 = r2.next(); - if (t3.done) - return t3; - var e4 = t3.value; - return { done: false, value: { edge: e4.key, attributes: e4.attributes, source: e4.source.key, target: e4.target.key, sourceAttributes: e4.source.attributes, targetAttributes: e4.target.attributes, undirected: e4.undirected } }; - }); - } - return O.of([n3.key, n3.attributes, n3.source.key, n3.target.key, n3.source.attributes, n3.target.attributes]); - } - function wt(t2, e3) { + function ut(t2, e2) { if (0 === t2.size) return []; - if ("mixed" === e3 || e3 === t2.type) + if ("mixed" === e2 || e2 === t2.type) return "function" == typeof Array.from ? Array.from(t2._edges.keys()) : K(t2._edges.keys(), t2._edges.size); - for (var n3, r2, i2 = "undirected" === e3 ? t2.undirectedSize : t2.directedSize, o2 = new Array(i2), a3 = "undirected" === e3, u2 = t2._edges.values(), c4 = 0; true !== (n3 = u2.next()).done; ) - (r2 = n3.value).undirected === a3 && (o2[c4++] = r2.key); + for (var n3, r2, i2 = "undirected" === e2 ? t2.undirectedSize : t2.directedSize, o2 = new Array(i2), a2 = "undirected" === e2, c2 = t2._edges.values(), u2 = 0; true !== (n3 = c2.next()).done; ) + (r2 = n3.value).undirected === a2 && (o2[u2++] = r2.key); return o2; } - function mt(t2, e3, n3) { - if (0 !== t2.size) { - for (var r2, i2, o2 = "mixed" !== e3 && e3 !== t2.type, a3 = "undirected" === e3, u2 = t2._edges.values(); true !== (r2 = u2.next()).done; ) - if (i2 = r2.value, !o2 || i2.undirected === a3) { - var c4 = i2, d2 = c4.key, s3 = c4.attributes, h2 = c4.source, f2 = c4.target; - n3(d2, s3, h2.key, f2.key, h2.attributes, f2.attributes, i2.undirected); + function dt(t2, e2, n3, r2) { + if (0 !== e2.size) { + for (var i2, o2, a2 = "mixed" !== n3 && n3 !== e2.type, c2 = "undirected" === n3, u2 = false, d2 = e2._edges.values(); true !== (i2 = d2.next()).done; ) + if (o2 = i2.value, !a2 || o2.undirected === c2) { + var s3 = o2, h2 = s3.key, p2 = s3.attributes, f2 = s3.source, l3 = s3.target; + if (u2 = r2(h2, p2, f2.key, l3.key, f2.attributes, l3.attributes, o2.undirected), t2 && u2) + return h2; } } } - function _t(t2, e3, n3) { - if (0 !== t2.size) { - for (var r2, i2, o2 = "mixed" !== e3 && e3 !== t2.type, a3 = "undirected" === e3, u2 = t2._edges.values(); true !== (r2 = u2.next()).done; ) - if (i2 = r2.value, !o2 || i2.undirected === a3) { - var c4 = i2, d2 = c4.key, s3 = c4.attributes, h2 = c4.source, f2 = c4.target; - if (n3(d2, s3, h2.key, f2.key, h2.attributes, f2.attributes, i2.undirected)) - return d2; - } - } - } - function kt(t2, e3) { + function st(t2, e2) { if (0 === t2.size) return O.empty(); - var n3 = "mixed" !== e3 && e3 !== t2.type, r2 = "undirected" === e3, i2 = t2._edges.values(); + var n3 = "mixed" !== e2 && e2 !== t2.type, r2 = "undirected" === e2, i2 = t2._edges.values(); return new O(function() { - for (var t3, e4; ; ) { + for (var t3, e3; ; ) { if ((t3 = i2.next()).done) return t3; - if (e4 = t3.value, !n3 || e4.undirected === r2) + if (e3 = t3.value, !n3 || e3.undirected === r2) break; } - return { value: { edge: e4.key, attributes: e4.attributes, source: e4.source.key, target: e4.target.key, sourceAttributes: e4.source.attributes, targetAttributes: e4.target.attributes, undirected: e4.undirected }, done: false }; + return { value: { edge: e3.key, attributes: e3.attributes, source: e3.source.key, target: e3.target.key, sourceAttributes: e3.source.attributes, targetAttributes: e3.target.attributes, undirected: e3.undirected }, done: false }; }); } - function Gt(t2, e3, n3, r2) { - var i2 = [], o2 = t2 ? at : ot; - return "undirected" !== e3 && ("out" !== n3 && o2(i2, r2.in), "in" !== n3 && o2(i2, r2.out), !n3 && r2.directedSelfLoops > 0 && i2.splice(i2.lastIndexOf(r2.key), 1)), "directed" !== e3 && o2(i2, r2.undirected), i2; - } - function xt(t2, e3, n3, r2, i2) { - var o2 = t2 ? ct : ut; - "undirected" !== e3 && ("out" !== n3 && o2(r2.in, i2), "in" !== n3 && o2(r2.out, i2, n3 ? null : r2.key)), "directed" !== e3 && o2(r2.undirected, i2); - } - function Et(t2, e3, n3, r2, i2) { - var o2, a3 = t2 ? st : dt; - if ("undirected" !== e3) { - if ("out" !== n3 && (o2 = a3(r2.in, i2))) - return o2; - if ("in" !== n3 && (o2 = a3(r2.out, i2, n3 ? null : r2.key))) - return o2; + function ht(t2, e2, n3, r2, i2, o2) { + var a2, c2 = e2 ? rt : nt; + if ("undirected" !== n3) { + if ("out" !== r2 && (a2 = c2(t2, i2.in, o2), t2 && a2)) + return a2; + if ("in" !== r2 && (a2 = c2(t2, i2.out, o2, r2 ? void 0 : i2.key), t2 && a2)) + return a2; } - if ("directed" !== e3 && (o2 = a3(r2.undirected, i2))) - return o2; + if ("directed" !== n3 && (a2 = c2(t2, i2.undirected, o2), t2 && a2)) + return a2; } - function St(t2, e3, n3) { + function pt(t2, e2, n3, r2) { + var i2 = []; + return ht(false, t2, e2, n3, r2, function(t3) { + i2.push(t3); + }), i2; + } + function ft(t2, e2, n3) { var r2 = O.empty(); - return "undirected" !== t2 && ("out" !== e3 && void 0 !== n3.in && (r2 = rt(r2, ht(n3.in))), "in" !== e3 && void 0 !== n3.out && (r2 = rt(r2, ht(n3.out, e3 ? null : n3.key)))), "directed" !== t2 && void 0 !== n3.undirected && (r2 = rt(r2, ht(n3.undirected))), r2; + return "undirected" !== t2 && ("out" !== e2 && void 0 !== n3.in && (r2 = tt(r2, it(n3.in))), "in" !== e2 && void 0 !== n3.out && (r2 = tt(r2, it(n3.out, e2 ? void 0 : n3.key)))), "directed" !== t2 && void 0 !== n3.undirected && (r2 = tt(r2, it(n3.undirected))), r2; } - function At(t2, e3, n3, r2, i2) { - var o2 = e3 ? pt : ft, a3 = []; - return "undirected" !== t2 && (void 0 !== r2.in && "out" !== n3 && o2(a3, r2.in, i2), void 0 !== r2.out && "in" !== n3 && o2(a3, r2.out, i2), !n3 && r2.directedSelfLoops > 0 && a3.splice(a3.lastIndexOf(r2.key), 1)), "directed" !== t2 && void 0 !== r2.undirected && o2(a3, r2.undirected, i2), a3; - } - function Lt(t2, e3, n3, r2, i2, o2) { - var a3 = e3 ? gt : lt; - "undirected" !== t2 && (void 0 !== r2.in && "out" !== n3 && a3(r2.in, i2, o2), r2.key !== i2 && void 0 !== r2.out && "in" !== n3 && a3(r2.out, i2, o2)), "directed" !== t2 && void 0 !== r2.undirected && a3(r2.undirected, i2, o2); - } - function Dt(t2, e3, n3, r2, i2, o2) { - var a3, u2 = e3 ? vt : yt; - if ("undirected" !== t2) { - if (void 0 !== r2.in && "out" !== n3 && (a3 = u2(r2.in, i2, o2))) - return a3; - if (r2.key !== i2 && void 0 !== r2.out && "in" !== n3 && (a3 = u2(r2.out, i2, o2, n3 ? null : r2.key))) - return a3; + function lt(t2, e2, n3, r2, i2, o2, a2) { + var c2, u2 = n3 ? at : ot; + if ("undirected" !== e2) { + if (void 0 !== i2.in && "out" !== r2 && (c2 = u2(t2, i2.in, o2, a2), t2 && c2)) + return c2; + if (void 0 !== i2.out && "in" !== r2 && (r2 || i2.key !== o2) && (c2 = u2(t2, i2.out, o2, a2), t2 && c2)) + return c2; } - if ("directed" !== t2 && void 0 !== r2.undirected && (a3 = u2(r2.undirected, i2, o2))) - return a3; + if ("directed" !== e2 && void 0 !== i2.undirected && (c2 = u2(t2, i2.undirected, o2, a2), t2 && c2)) + return c2; } - function Nt(t2, e3, n3, r2) { + function gt(t2, e2, n3, r2, i2) { + var o2 = []; + return lt(false, t2, e2, n3, r2, i2, function(t3) { + o2.push(t3); + }), o2; + } + function yt(t2, e2, n3, r2) { var i2 = O.empty(); - return "undirected" !== t2 && (void 0 !== n3.in && "out" !== e3 && r2 in n3.in && (i2 = rt(i2, bt(n3.in, r2))), void 0 !== n3.out && "in" !== e3 && r2 in n3.out && (i2 = rt(i2, bt(n3.out, r2)))), "directed" !== t2 && void 0 !== n3.undirected && r2 in n3.undirected && (i2 = rt(i2, bt(n3.undirected, r2))), i2; + return "undirected" !== t2 && (void 0 !== n3.in && "out" !== e2 && r2 in n3.in && (i2 = tt(i2, ct(n3.in, r2))), void 0 !== n3.out && "in" !== e2 && r2 in n3.out && (e2 || n3.key !== r2) && (i2 = tt(i2, ct(n3.out, r2)))), "directed" !== t2 && void 0 !== n3.undirected && r2 in n3.undirected && (i2 = tt(i2, ct(n3.undirected, r2))), i2; } - var Ut = [{ name: "neighbors", type: "mixed" }, { name: "inNeighbors", type: "directed", direction: "in" }, { name: "outNeighbors", type: "directed", direction: "out" }, { name: "inboundNeighbors", type: "mixed", direction: "in" }, { name: "outboundNeighbors", type: "mixed", direction: "out" }, { name: "directedNeighbors", type: "directed" }, { name: "undirectedNeighbors", type: "undirected" }]; - function jt(t2, e3) { - if (void 0 !== e3) - for (var n3 in e3) - t2.add(n3); + var wt = [{ name: "neighbors", type: "mixed" }, { name: "inNeighbors", type: "directed", direction: "in" }, { name: "outNeighbors", type: "directed", direction: "out" }, { name: "inboundNeighbors", type: "mixed", direction: "in" }, { name: "outboundNeighbors", type: "mixed", direction: "out" }, { name: "directedNeighbors", type: "directed" }, { name: "undirectedNeighbors", type: "undirected" }]; + function vt() { + this.A = null, this.B = null; } - function Ot(t2, e3, n3) { - for (var r2 in e3) { - var i2 = e3[r2]; - i2 instanceof Set && (i2 = i2.values().next().value); - var o2 = i2.source, a3 = i2.target, u2 = o2 === t2 ? a3 : o2; - n3(u2.key, u2.attributes); - } - } - function Ct(t2, e3, n3, r2) { - for (var i2 in n3) { - var o2 = n3[i2]; - o2 instanceof Set && (o2 = o2.values().next().value); - var a3 = o2.source, u2 = o2.target, c4 = a3 === e3 ? u2 : a3; - t2.has(c4.key) || (t2.add(c4.key), r2(c4.key, c4.attributes)); - } - } - function zt(t2, e3, n3) { - for (var r2 in e3) { - var i2 = e3[r2]; - i2 instanceof Set && (i2 = i2.values().next().value); - var o2 = i2.source, a3 = i2.target, u2 = o2 === t2 ? a3 : o2; - if (n3(u2.key, u2.attributes)) - return u2.key; - } - } - function Mt(t2, e3, n3, r2) { - for (var i2 in n3) { - var o2 = n3[i2]; - o2 instanceof Set && (o2 = o2.values().next().value); - var a3 = o2.source, u2 = o2.target, c4 = a3 === e3 ? u2 : a3; - if (!t2.has(c4.key)) { - if (t2.add(c4.key), r2(c4.key, c4.attributes)) - return c4.key; + function bt(t2, e2, n3, r2, i2) { + for (var o2 in r2) { + var a2 = r2[o2], c2 = a2.source, u2 = a2.target, d2 = c2 === n3 ? u2 : c2; + if (!e2 || !e2.has(d2.key)) { + var s3 = i2(d2.key, d2.attributes); + if (t2 && s3) + return d2.key; } } } - function Pt(t2, e3) { - var n3 = Object.keys(e3), r2 = n3.length, i2 = 0; - return new O(function() { - if (i2 >= r2) - return { done: true }; - var o2 = e3[n3[i2++]]; - o2 instanceof Set && (o2 = o2.values().next().value); - var a3 = o2.source, u2 = o2.target, c4 = a3 === t2 ? u2 : a3; - return { done: false, value: { neighbor: c4.key, attributes: c4.attributes } }; - }); + function mt(t2, e2, n3, r2, i2) { + if ("mixed" !== e2) { + if ("undirected" === e2) + return bt(t2, null, r2, r2.undirected, i2); + if ("string" == typeof n3) + return bt(t2, null, r2, r2[n3], i2); + } + var o2, a2 = new vt(); + if ("undirected" !== e2) { + if ("out" !== n3) { + if (o2 = bt(t2, null, r2, r2.in, i2), t2 && o2) + return o2; + a2.wrap(r2.in); + } + if ("in" !== n3) { + if (o2 = bt(t2, a2, r2, r2.out, i2), t2 && o2) + return o2; + a2.wrap(r2.out); + } + } + if ("directed" !== e2 && (o2 = bt(t2, a2, r2, r2.undirected, i2), t2 && o2)) + return o2; } - function Tt(t2, e3, n3) { + function kt(t2, e2, n3) { var r2 = Object.keys(n3), i2 = r2.length, o2 = 0; - return new O(function a3() { - if (o2 >= i2) - return { done: true }; - var u2 = n3[r2[o2++]]; - u2 instanceof Set && (u2 = u2.values().next().value); - var c4 = u2.source, d2 = u2.target, s3 = c4 === e3 ? d2 : c4; - return t2.has(s3.key) ? a3() : (t2.add(s3.key), { done: false, value: { neighbor: s3.key, attributes: s3.attributes } }); + return new O(function() { + var a2 = null; + do { + if (o2 >= i2) + return t2 && t2.wrap(n3), { done: true }; + var c2 = n3[r2[o2++]], u2 = c2.source, d2 = c2.target; + a2 = u2 === e2 ? d2 : u2, t2 && t2.has(a2.key) && (a2 = null); + } while (null === a2); + return { done: false, value: { neighbor: a2.key, attributes: a2.attributes } }; }); } - function Rt(t2, e3) { - var n3 = e3.name, r2 = e3.type, i2 = e3.direction; + function _t(t2, e2) { + var n3 = e2.name, r2 = e2.type, i2 = e2.direction; t2.prototype[n3] = function(t3) { if ("mixed" !== r2 && "mixed" !== this.type && r2 !== this.type) return []; t3 = "" + t3; - var e4 = this._nodes.get(t3); - if (void 0 === e4) - throw new Y2("Graph.".concat(n3, ': could not find the "').concat(t3, '" node in the graph.')); - return function(t4, e6, n4) { + var e3 = this._nodes.get(t3); + if (void 0 === e3) + throw new F("Graph.".concat(n3, ': could not find the "').concat(t3, '" node in the graph.')); + return function(t4, e4, n4) { if ("mixed" !== t4) { if ("undirected" === t4) return Object.keys(n4.undirected); - if ("string" == typeof e6) - return Object.keys(n4[e6]); + if ("string" == typeof e4) + return Object.keys(n4[e4]); } - var r3 = /* @__PURE__ */ new Set(); - return "undirected" !== t4 && ("out" !== e6 && jt(r3, n4.in), "in" !== e6 && jt(r3, n4.out)), "directed" !== t4 && jt(r3, n4.undirected), K(r3.values(), r3.size); - }("mixed" === r2 ? this.type : r2, i2, e4); + var r3 = []; + return mt(false, t4, e4, n4, function(t5) { + r3.push(t5); + }), r3; + }("mixed" === r2 ? this.type : r2, i2, e3); }; } - function Wt(t2, e3) { - var n3 = e3.name, r2 = e3.type, i2 = e3.direction, o2 = "forEach" + n3[0].toUpperCase() + n3.slice(1, -1); - t2.prototype[o2] = function(t3, e4) { - if ("mixed" === r2 || "mixed" === this.type || r2 === this.type) { - t3 = "" + t3; - var n4 = this._nodes.get(t3); - if (void 0 === n4) - throw new Y2("Graph.".concat(o2, ': could not find the "').concat(t3, '" node in the graph.')); - !function(t4, e6, n5, r3) { - if ("mixed" !== t4) { - if ("undirected" === t4) - return Ot(n5, n5.undirected, r3); - if ("string" == typeof e6) - return Ot(n5, n5[e6], r3); - } - var i3 = /* @__PURE__ */ new Set(); - "undirected" !== t4 && ("out" !== e6 && Ct(i3, n5, n5.in, r3), "in" !== e6 && Ct(i3, n5, n5.out, r3)), "directed" !== t4 && Ct(i3, n5, n5.undirected, r3); - }("mixed" === r2 ? this.type : r2, i2, n4, e4); - } - }; - var a3 = "map" + n3[0].toUpperCase() + n3.slice(1); - t2.prototype[a3] = function(t3, e4) { - var n4 = []; - return this[o2](t3, function(t4, r3) { - n4.push(e4(t4, r3)); - }), n4; - }; - var u2 = "filter" + n3[0].toUpperCase() + n3.slice(1); - t2.prototype[u2] = function(t3, e4) { - var n4 = []; - return this[o2](t3, function(t4, r3) { - e4(t4, r3) && n4.push(t4); - }), n4; - }; - var c4 = "reduce" + n3[0].toUpperCase() + n3.slice(1); - t2.prototype[c4] = function(t3, e4, n4) { - if (arguments.length < 3) - throw new F("Graph.".concat(c4, ": missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array.")); - var r3 = n4; - return this[o2](t3, function(t4, n5) { - r3 = e4(r3, t4, n5); - }), r3; - }; - } - function Kt(t2, e3) { - var n3 = e3.name, r2 = e3.type, i2 = e3.direction, o2 = n3[0].toUpperCase() + n3.slice(1, -1), a3 = "find" + o2; - t2.prototype[a3] = function(t3, e4) { - if ("mixed" === r2 || "mixed" === this.type || r2 === this.type) { - t3 = "" + t3; - var n4 = this._nodes.get(t3); - if (void 0 === n4) - throw new Y2("Graph.".concat(a3, ': could not find the "').concat(t3, '" node in the graph.')); - return function(t4, e6, n5, r3) { - if ("mixed" !== t4) { - if ("undirected" === t4) - return zt(n5, n5.undirected, r3); - if ("string" == typeof e6) - return zt(n5, n5[e6], r3); - } - var i3, o3 = /* @__PURE__ */ new Set(); - if ("undirected" !== t4) { - if ("out" !== e6 && (i3 = Mt(o3, n5, n5.in, r3))) - return i3; - if ("in" !== e6 && (i3 = Mt(o3, n5, n5.out, r3))) - return i3; - } - if ("directed" !== t4 && (i3 = Mt(o3, n5, n5.undirected, r3))) - return i3; - }("mixed" === r2 ? this.type : r2, i2, n4, e4); - } - }; - var u2 = "some" + o2; - t2.prototype[u2] = function(t3, e4) { - return !!this[a3](t3, e4); - }; - var c4 = "every" + o2; - t2.prototype[c4] = function(t3, e4) { - return !this[a3](t3, function(t4, n4) { - return !e4(t4, n4); - }); - }; - } - function It(t2, e3) { - var n3 = e3.name, r2 = e3.type, i2 = e3.direction, o2 = n3.slice(0, -1) + "Entries"; + function Gt(t2, e2) { + var n3 = e2.name, r2 = e2.type, i2 = e2.direction, o2 = n3.slice(0, -1) + "Entries"; t2.prototype[o2] = function(t3) { if ("mixed" !== r2 && "mixed" !== this.type && r2 !== this.type) return O.empty(); t3 = "" + t3; - var e4 = this._nodes.get(t3); - if (void 0 === e4) - throw new Y2("Graph.".concat(o2, ': could not find the "').concat(t3, '" node in the graph.')); - return function(t4, e6, n4) { + var e3 = this._nodes.get(t3); + if (void 0 === e3) + throw new F("Graph.".concat(o2, ': could not find the "').concat(t3, '" node in the graph.')); + return function(t4, e4, n4) { if ("mixed" !== t4) { if ("undirected" === t4) - return Pt(n4, n4.undirected); - if ("string" == typeof e6) - return Pt(n4, n4[e6]); + return kt(null, n4, n4.undirected); + if ("string" == typeof e4) + return kt(null, n4, n4[e4]); } - var r3 = O.empty(), i3 = /* @__PURE__ */ new Set(); - return "undirected" !== t4 && ("out" !== e6 && (r3 = rt(r3, Tt(i3, n4, n4.in))), "in" !== e6 && (r3 = rt(r3, Tt(i3, n4, n4.out)))), "directed" !== t4 && (r3 = rt(r3, Tt(i3, n4, n4.undirected))), r3; - }("mixed" === r2 ? this.type : r2, i2, e4); + var r3 = O.empty(), i3 = new vt(); + return "undirected" !== t4 && ("out" !== e4 && (r3 = tt(r3, kt(i3, n4, n4.in))), "in" !== e4 && (r3 = tt(r3, kt(i3, n4, n4.out)))), "directed" !== t4 && (r3 = tt(r3, kt(i3, n4, n4.undirected))), r3; + }("mixed" === r2 ? this.type : r2, i2, e3); }; } - function Ft(t2, e3, n3, r2, i2) { - for (var o2, a3, u2, c4, d2, s3, h2, f2 = r2._nodes.values(), p2 = r2.type; true !== (o2 = f2.next()).done; ) { + function xt(t2, e2, n3, r2, i2) { + for (var o2, a2, c2, u2, d2, s3, h2, p2 = r2._nodes.values(), f2 = r2.type; true !== (o2 = p2.next()).done; ) { var l3 = false; - if (a3 = o2.value, "undirected" !== p2) { - for (u2 in c4 = a3.out) - if (s3 = (d2 = c4[u2]).target, l3 = true, h2 = i2(a3.key, s3.key, a3.attributes, s3.attributes, d2.key, d2.attributes, d2.undirected), t2 && h2) - return d2; - } - if ("directed" !== p2) { - for (u2 in c4 = a3.undirected) - if (!(e3 && a3.key > u2) && ((s3 = (d2 = c4[u2]).target).key !== u2 && (s3 = d2.source), l3 = true, h2 = i2(a3.key, s3.key, a3.attributes, s3.attributes, d2.key, d2.attributes, d2.undirected), t2 && h2)) - return d2; - } - if (n3 && !l3 && (h2 = i2(a3.key, null, a3.attributes, null, null, null, null), t2 && h2)) - return null; - } - } - function Yt(t2, e3, n3, r2, i2) { - for (var o2, a3, u2, c4, d2, s3, h2, f2, p2, l3 = r2._nodes.values(), g2 = r2.type; true !== (o2 = l3.next()).done; ) { - var y5 = false; - if (a3 = o2.value, "undirected" !== g2) { - for (u2 in s3 = a3.out) - for (c4 = s3[u2].values(); true !== (d2 = c4.next()).done; ) - if (f2 = (h2 = d2.value).target, y5 = true, p2 = i2(a3.key, f2.key, a3.attributes, f2.attributes, h2.key, h2.attributes, h2.undirected), t2 && p2) - return h2; - } - if ("directed" !== g2) { - for (u2 in s3 = a3.undirected) - if (!(e3 && a3.key > u2)) { - for (c4 = s3[u2].values(); true !== (d2 = c4.next()).done; ) - if ((f2 = (h2 = d2.value).target).key !== u2 && (f2 = h2.source), y5 = true, p2 = i2(a3.key, f2.key, a3.attributes, f2.attributes, h2.key, h2.attributes, h2.undirected), t2 && p2) - return h2; + if (a2 = o2.value, "undirected" !== f2) + for (c2 in u2 = a2.out) { + d2 = u2[c2]; + do { + if (s3 = d2.target, l3 = true, h2 = i2(a2.key, s3.key, a2.attributes, s3.attributes, d2.key, d2.attributes, d2.undirected), t2 && h2) + return d2; + d2 = d2.next; + } while (d2); + } + if ("directed" !== f2) { + for (c2 in u2 = a2.undirected) + if (!(e2 && a2.key > c2)) { + d2 = u2[c2]; + do { + if ((s3 = d2.target).key !== c2 && (s3 = d2.source), l3 = true, h2 = i2(a2.key, s3.key, a2.attributes, s3.attributes, d2.key, d2.attributes, d2.undirected), t2 && h2) + return d2; + d2 = d2.next; + } while (d2); } } - if (n3 && !y5 && (p2 = i2(a3.key, null, a3.attributes, null, null, null, null), t2 && p2)) + if (n3 && !l3 && (h2 = i2(a2.key, null, a2.attributes, null, null, null, null), t2 && h2)) return null; } } - function Bt(t2, e3) { - var n3 = { key: t2 }; - return f(e3.attributes) || (n3.attributes = c3({}, e3.attributes)), n3; + function Et(t2) { + if (!s2(t2)) + throw new B('Graph.import: invalid serialized node. A serialized node should be a plain object with at least a "key" property.'); + if (!("key" in t2)) + throw new B("Graph.import: serialized node is missing its key."); + if ("attributes" in t2 && (!s2(t2.attributes) || null === t2.attributes)) + throw new B("Graph.import: invalid attributes. Attributes should be a plain object, null or omitted."); } - function qt(t2, e3) { - var n3 = { key: t2, source: e3.source.key, target: e3.target.key }; - return f(e3.attributes) || (n3.attributes = c3({}, e3.attributes)), e3.undirected && (n3.undirected = true), n3; + function At(t2) { + if (!s2(t2)) + throw new B('Graph.import: invalid serialized edge. A serialized edge should be a plain object with at least a "source" & "target" property.'); + if (!("source" in t2)) + throw new B("Graph.import: serialized edge is missing its source."); + if (!("target" in t2)) + throw new B("Graph.import: serialized edge is missing its target."); + if ("attributes" in t2 && (!s2(t2.attributes) || null === t2.attributes)) + throw new B("Graph.import: invalid attributes. Attributes should be a plain object, null or omitted."); + if ("undirected" in t2 && "boolean" != typeof t2.undirected) + throw new B("Graph.import: invalid undirectedness information. Undirected should be boolean or omitted."); } - function Jt(t2) { - return h(t2) ? "key" in t2 ? !("attributes" in t2) || h(t2.attributes) && null !== t2.attributes ? null : "invalid-attributes" : "no-key" : "not-object"; + vt.prototype.wrap = function(t2) { + null === this.A ? this.A = t2 : null === this.B && (this.B = t2); + }, vt.prototype.has = function(t2) { + return null !== this.A && t2 in this.A || null !== this.B && t2 in this.B; + }; + var Lt, St = (Lt = 255 & Math.floor(256 * Math.random()), function() { + return Lt++; + }), Dt = /* @__PURE__ */ new Set(["directed", "undirected", "mixed"]), Ut = /* @__PURE__ */ new Set(["domain", "_events", "_eventsCount", "_maxListeners"]), Nt = { allowSelfLoops: true, multi: false, type: "mixed" }; + function Ot(t2, e2, n3) { + var r2 = new t2.NodeDataClass(e2, n3); + return t2._nodes.set(e2, r2), t2.emit("nodeAdded", { key: e2, attributes: n3 }), r2; } - function Vt(t2) { - return h(t2) ? "source" in t2 ? "target" in t2 ? !("attributes" in t2) || h(t2.attributes) && null !== t2.attributes ? "undirected" in t2 && "boolean" != typeof t2.undirected ? "invalid-undirected" : null : "invalid-attributes" : "no-target" : "no-source" : "not-object"; - } - var Ht, Qt = (Ht = 255 & Math.floor(256 * Math.random()), function() { - return Ht++; - }), Xt = /* @__PURE__ */ new Set(["directed", "undirected", "mixed"]), Zt = /* @__PURE__ */ new Set(["domain", "_events", "_eventsCount", "_maxListeners"]), $t = { allowSelfLoops: true, multi: false, type: "mixed" }; - function te(t2, e3, n3) { - var r2 = new t2.NodeDataClass(e3, n3); - return t2._nodes.set(e3, r2), t2.emit("nodeAdded", { key: e3, attributes: n3 }), r2; - } - function ee(t2, e3, n3, r2, i2, o2, a3, u2) { + function jt(t2, e2, n3, r2, i2, o2, a2, c2) { if (!r2 && "undirected" === t2.type) - throw new B2("Graph.".concat(e3, ": you cannot add a directed edge to an undirected graph. Use the #.addEdge or #.addUndirectedEdge instead.")); + throw new I("Graph.".concat(e2, ": you cannot add a directed edge to an undirected graph. Use the #.addEdge or #.addUndirectedEdge instead.")); if (r2 && "directed" === t2.type) - throw new B2("Graph.".concat(e3, ": you cannot add an undirected edge to a directed graph. Use the #.addEdge or #.addDirectedEdge instead.")); - if (u2 && !h(u2)) - throw new F("Graph.".concat(e3, ': invalid attributes. Expecting an object but got "').concat(u2, '"')); - if (o2 = "" + o2, a3 = "" + a3, u2 = u2 || {}, !t2.allowSelfLoops && o2 === a3) - throw new B2("Graph.".concat(e3, ': source & target are the same ("').concat(o2, `"), thus creating a loop explicitly forbidden by this graph 'allowSelfLoops' option set to false.`)); - var c4 = t2._nodes.get(o2), d2 = t2._nodes.get(a3); - if (!c4) - throw new Y2("Graph.".concat(e3, ': source node "').concat(o2, '" not found.')); + throw new I("Graph.".concat(e2, ": you cannot add an undirected edge to a directed graph. Use the #.addEdge or #.addDirectedEdge instead.")); + if (c2 && !s2(c2)) + throw new B("Graph.".concat(e2, ': invalid attributes. Expecting an object but got "').concat(c2, '"')); + if (o2 = "" + o2, a2 = "" + a2, c2 = c2 || {}, !t2.allowSelfLoops && o2 === a2) + throw new I("Graph.".concat(e2, ': source & target are the same ("').concat(o2, `"), thus creating a loop explicitly forbidden by this graph 'allowSelfLoops' option set to false.`)); + var u2 = t2._nodes.get(o2), d2 = t2._nodes.get(a2); + if (!u2) + throw new F("Graph.".concat(e2, ': source node "').concat(o2, '" not found.')); if (!d2) - throw new Y2("Graph.".concat(e3, ': target node "').concat(a3, '" not found.')); - var s3 = { key: null, undirected: r2, source: o2, target: a3, attributes: u2 }; + throw new F("Graph.".concat(e2, ': target node "').concat(a2, '" not found.')); + var h2 = { key: null, undirected: r2, source: o2, target: a2, attributes: c2 }; if (n3) i2 = t2._edgeKeyGenerator(); else if (i2 = "" + i2, t2._edges.has(i2)) - throw new B2("Graph.".concat(e3, ': the "').concat(i2, '" edge already exists in the graph.')); - if (!t2.multi && (r2 ? void 0 !== c4.undirected[a3] : void 0 !== c4.out[a3])) - throw new B2("Graph.".concat(e3, ': an edge linking "').concat(o2, '" to "').concat(a3, `" already exists. If you really want to add multiple edges linking those nodes, you should create a multi graph by using the 'multi' option.`)); - var f2 = new H(r2, i2, c4, d2, u2); - return t2._edges.set(i2, f2), o2 === a3 ? r2 ? (c4.undirectedSelfLoops++, t2._undirectedSelfLoopCount++) : (c4.directedSelfLoops++, t2._directedSelfLoopCount++) : r2 ? (c4.undirectedDegree++, d2.undirectedDegree++) : (c4.outDegree++, d2.inDegree++), Q(t2, r2, f2, o2, a3, c4, d2), r2 ? t2._undirectedSize++ : t2._directedSize++, s3.key = i2, t2.emit("edgeAdded", s3), i2; + throw new I("Graph.".concat(e2, ': the "').concat(i2, '" edge already exists in the graph.')); + if (!t2.multi && (r2 ? void 0 !== u2.undirected[a2] : void 0 !== u2.out[a2])) + throw new I("Graph.".concat(e2, ': an edge linking "').concat(o2, '" to "').concat(a2, `" already exists. If you really want to add multiple edges linking those nodes, you should create a multi graph by using the 'multi' option.`)); + var p2 = new V(r2, i2, u2, d2, c2); + t2._edges.set(i2, p2); + var f2 = o2 === a2; + return r2 ? (u2.undirectedDegree++, d2.undirectedDegree++, f2 && (u2.undirectedLoops++, t2._undirectedSelfLoopCount++)) : (u2.outDegree++, d2.inDegree++, f2 && (u2.directedLoops++, t2._directedSelfLoopCount++)), t2.multi ? p2.attachMulti() : p2.attach(), r2 ? t2._undirectedSize++ : t2._directedSize++, h2.key = i2, t2.emit("edgeAdded", h2), i2; } - function ne(t2, e3, n3, r2, i2, o2, a3, u2, d2) { + function Ct(t2, e2, n3, r2, i2, o2, a2, c2, d2) { if (!r2 && "undirected" === t2.type) - throw new B2("Graph.".concat(e3, ": you cannot merge/update a directed edge to an undirected graph. Use the #.mergeEdge/#.updateEdge or #.addUndirectedEdge instead.")); + throw new I("Graph.".concat(e2, ": you cannot merge/update a directed edge to an undirected graph. Use the #.mergeEdge/#.updateEdge or #.addUndirectedEdge instead.")); if (r2 && "directed" === t2.type) - throw new B2("Graph.".concat(e3, ": you cannot merge/update an undirected edge to a directed graph. Use the #.mergeEdge/#.updateEdge or #.addDirectedEdge instead.")); - if (u2) { + throw new I("Graph.".concat(e2, ": you cannot merge/update an undirected edge to a directed graph. Use the #.mergeEdge/#.updateEdge or #.addDirectedEdge instead.")); + if (c2) { if (d2) { - if ("function" != typeof u2) - throw new F("Graph.".concat(e3, ': invalid updater function. Expecting a function but got "').concat(u2, '"')); - } else if (!h(u2)) - throw new F("Graph.".concat(e3, ': invalid attributes. Expecting an object but got "').concat(u2, '"')); + if ("function" != typeof c2) + throw new B("Graph.".concat(e2, ': invalid updater function. Expecting a function but got "').concat(c2, '"')); + } else if (!s2(c2)) + throw new B("Graph.".concat(e2, ': invalid attributes. Expecting an object but got "').concat(c2, '"')); } - var s3; - if (o2 = "" + o2, a3 = "" + a3, d2 && (s3 = u2, u2 = void 0), !t2.allowSelfLoops && o2 === a3) - throw new B2("Graph.".concat(e3, ': source & target are the same ("').concat(o2, `"), thus creating a loop explicitly forbidden by this graph 'allowSelfLoops' option set to false.`)); - var f2, p2, l3 = t2._nodes.get(o2), g2 = t2._nodes.get(a3); - if (!n3 && (f2 = t2._edges.get(i2))) { - if (!(f2.source.key === o2 && f2.target.key === a3 || r2 && f2.source.key === a3 && f2.target.key === o2)) - throw new B2("Graph.".concat(e3, ': inconsistency detected when attempting to merge the "').concat(i2, '" edge with "').concat(o2, '" source & "').concat(a3, '" target vs. ("').concat(f2.source.key, '", "').concat(f2.target.key, '").')); - p2 = f2; + var h2; + if (o2 = "" + o2, a2 = "" + a2, d2 && (h2 = c2, c2 = void 0), !t2.allowSelfLoops && o2 === a2) + throw new I("Graph.".concat(e2, ': source & target are the same ("').concat(o2, `"), thus creating a loop explicitly forbidden by this graph 'allowSelfLoops' option set to false.`)); + var p2, f2, l3 = t2._nodes.get(o2), g2 = t2._nodes.get(a2); + if (!n3 && (p2 = t2._edges.get(i2))) { + if (!(p2.source.key === o2 && p2.target.key === a2 || r2 && p2.source.key === a2 && p2.target.key === o2)) + throw new I("Graph.".concat(e2, ': inconsistency detected when attempting to merge the "').concat(i2, '" edge with "').concat(o2, '" source & "').concat(a2, '" target vs. ("').concat(p2.source.key, '", "').concat(p2.target.key, '").')); + f2 = p2; } - if (p2 || t2.multi || !l3 || (p2 = r2 ? l3.undirected[a3] : l3.out[a3]), p2) { - var y5 = [p2.key, false, false, false]; - if (d2 ? !s3 : !u2) - return y5; + if (f2 || t2.multi || !l3 || (f2 = r2 ? l3.undirected[a2] : l3.out[a2]), f2) { + var y2 = [f2.key, false, false, false]; + if (d2 ? !h2 : !c2) + return y2; if (d2) { - var v2 = p2.attributes; - p2.attributes = s3(v2), t2.emit("edgeAttributesUpdated", { type: "replace", key: p2.key, attributes: p2.attributes }); + var w2 = f2.attributes; + f2.attributes = h2(w2), t2.emit("edgeAttributesUpdated", { type: "replace", key: f2.key, attributes: f2.attributes }); } else - c3(p2.attributes, u2), t2.emit("edgeAttributesUpdated", { type: "merge", key: p2.key, attributes: p2.attributes, data: u2 }); - return y5; + u(f2.attributes, c2), t2.emit("edgeAttributesUpdated", { type: "merge", key: f2.key, attributes: f2.attributes, data: c2 }); + return y2; } - u2 = u2 || {}, d2 && s3 && (u2 = s3(u2)); - var b2 = { key: null, undirected: r2, source: o2, target: a3, attributes: u2 }; + c2 = c2 || {}, d2 && h2 && (c2 = h2(c2)); + var v2 = { key: null, undirected: r2, source: o2, target: a2, attributes: c2 }; if (n3) i2 = t2._edgeKeyGenerator(); else if (i2 = "" + i2, t2._edges.has(i2)) - throw new B2("Graph.".concat(e3, ': the "').concat(i2, '" edge already exists in the graph.')); - var w2 = false, m3 = false; - return l3 || (l3 = te(t2, o2, {}), w2 = true, o2 === a3 && (g2 = l3, m3 = true)), g2 || (g2 = te(t2, a3, {}), m3 = true), f2 = new H(r2, i2, l3, g2, u2), t2._edges.set(i2, f2), o2 === a3 ? r2 ? (l3.undirectedSelfLoops++, t2._undirectedSelfLoopCount++) : (l3.directedSelfLoops++, t2._directedSelfLoopCount++) : r2 ? (l3.undirectedDegree++, g2.undirectedDegree++) : (l3.outDegree++, g2.inDegree++), Q(t2, r2, f2, o2, a3, l3, g2), r2 ? t2._undirectedSize++ : t2._directedSize++, b2.key = i2, t2.emit("edgeAdded", b2), [i2, true, w2, m3]; + throw new I("Graph.".concat(e2, ': the "').concat(i2, '" edge already exists in the graph.')); + var b2 = false, m2 = false; + l3 || (l3 = Ot(t2, o2, {}), b2 = true, o2 === a2 && (g2 = l3, m2 = true)), g2 || (g2 = Ot(t2, a2, {}), m2 = true), p2 = new V(r2, i2, l3, g2, c2), t2._edges.set(i2, p2); + var k2 = o2 === a2; + return r2 ? (l3.undirectedDegree++, g2.undirectedDegree++, k2 && (l3.undirectedLoops++, t2._undirectedSelfLoopCount++)) : (l3.outDegree++, g2.inDegree++, k2 && (l3.directedLoops++, t2._directedSelfLoopCount++)), t2.multi ? p2.attachMulti() : p2.attach(), r2 ? t2._undirectedSize++ : t2._directedSize++, v2.key = i2, t2.emit("edgeAdded", v2), [i2, true, b2, m2]; } - var re2 = function(n3) { + function Mt(t2, e2) { + t2._edges.delete(e2.key); + var n3 = e2.source, r2 = e2.target, i2 = e2.attributes, o2 = e2.undirected, a2 = n3 === r2; + o2 ? (n3.undirectedDegree--, r2.undirectedDegree--, a2 && (n3.undirectedLoops--, t2._undirectedSelfLoopCount--)) : (n3.outDegree--, r2.inDegree--, a2 && (n3.directedLoops--, t2._directedSelfLoopCount--)), t2.multi ? e2.detachMulti() : e2.detach(), o2 ? t2._undirectedSize-- : t2._directedSize--, t2.emit("edgeDropped", { key: e2.key, attributes: i2, source: n3.key, target: r2.key, undirected: o2 }); + } + var zt = function(n3) { function r2(t2) { - var e3; - if (e3 = n3.call(this) || this, "boolean" != typeof (t2 = c3({}, $t, t2)).multi) - throw new F(`Graph.constructor: invalid 'multi' option. Expecting a boolean but got "`.concat(t2.multi, '".')); - if (!Xt.has(t2.type)) - throw new F(`Graph.constructor: invalid 'type' option. Should be one of "mixed", "directed" or "undirected" but got "`.concat(t2.type, '".')); + var e2; + if (e2 = n3.call(this) || this, "boolean" != typeof (t2 = u({}, Nt, t2)).multi) + throw new B(`Graph.constructor: invalid 'multi' option. Expecting a boolean but got "`.concat(t2.multi, '".')); + if (!Dt.has(t2.type)) + throw new B(`Graph.constructor: invalid 'type' option. Should be one of "mixed", "directed" or "undirected" but got "`.concat(t2.type, '".')); if ("boolean" != typeof t2.allowSelfLoops) - throw new F(`Graph.constructor: invalid 'allowSelfLoops' option. Expecting a boolean but got "`.concat(t2.allowSelfLoops, '".')); - var r3 = "mixed" === t2.type ? q : "directed" === t2.type ? J : V; - p(u(e3), "NodeDataClass", r3); - var i3 = Qt(), o2 = 0; - return p(u(e3), "_attributes", {}), p(u(e3), "_nodes", /* @__PURE__ */ new Map()), p(u(e3), "_edges", /* @__PURE__ */ new Map()), p(u(e3), "_directedSize", 0), p(u(e3), "_undirectedSize", 0), p(u(e3), "_directedSelfLoopCount", 0), p(u(e3), "_undirectedSelfLoopCount", 0), p(u(e3), "_edgeKeyGenerator", function() { + throw new B(`Graph.constructor: invalid 'allowSelfLoops' option. Expecting a boolean but got "`.concat(t2.allowSelfLoops, '".')); + var r3 = "mixed" === t2.type ? Y : "directed" === t2.type ? q : J; + p(c(e2), "NodeDataClass", r3); + var i3 = "geid_" + St() + "_", o2 = 0; + return p(c(e2), "_attributes", {}), p(c(e2), "_nodes", /* @__PURE__ */ new Map()), p(c(e2), "_edges", /* @__PURE__ */ new Map()), p(c(e2), "_directedSize", 0), p(c(e2), "_undirectedSize", 0), p(c(e2), "_directedSelfLoopCount", 0), p(c(e2), "_undirectedSelfLoopCount", 0), p(c(e2), "_edgeKeyGenerator", function() { var t3; do { - t3 = "geid_" + i3 + "_" + o2++; - } while (e3._edges.has(t3)); + t3 = i3 + o2++; + } while (e2._edges.has(t3)); return t3; - }), p(u(e3), "_options", t2), Zt.forEach(function(t3) { - return p(u(e3), t3, e3[t3]); - }), l2(u(e3), "order", function() { - return e3._nodes.size; - }), l2(u(e3), "size", function() { - return e3._edges.size; - }), l2(u(e3), "directedSize", function() { - return e3._directedSize; - }), l2(u(e3), "undirectedSize", function() { - return e3._undirectedSize; - }), l2(u(e3), "selfLoopCount", function() { - return e3._directedSelfLoopCount + e3._undirectedSelfLoopCount; - }), l2(u(e3), "directedSelfLoopCount", function() { - return e3._directedSelfLoopCount; - }), l2(u(e3), "undirectedSelfLoopCount", function() { - return e3._undirectedSelfLoopCount; - }), l2(u(e3), "multi", e3._options.multi), l2(u(e3), "type", e3._options.type), l2(u(e3), "allowSelfLoops", e3._options.allowSelfLoops), l2(u(e3), "implementation", function() { + }), p(c(e2), "_options", t2), Ut.forEach(function(t3) { + return p(c(e2), t3, e2[t3]); + }), f(c(e2), "order", function() { + return e2._nodes.size; + }), f(c(e2), "size", function() { + return e2._edges.size; + }), f(c(e2), "directedSize", function() { + return e2._directedSize; + }), f(c(e2), "undirectedSize", function() { + return e2._undirectedSize; + }), f(c(e2), "selfLoopCount", function() { + return e2._directedSelfLoopCount + e2._undirectedSelfLoopCount; + }), f(c(e2), "directedSelfLoopCount", function() { + return e2._directedSelfLoopCount; + }), f(c(e2), "undirectedSelfLoopCount", function() { + return e2._undirectedSelfLoopCount; + }), f(c(e2), "multi", e2._options.multi), f(c(e2), "type", e2._options.type), f(c(e2), "allowSelfLoops", e2._options.allowSelfLoops), f(c(e2), "implementation", function() { return "graphology"; - }), e3; + }), e2; } e(r2, n3); var i2 = r2.prototype; @@ -4145,7 +8748,7 @@ var require_graphology_umd_min = __commonJS({ this._directedSize = 0, this._undirectedSize = 0, this._directedSelfLoopCount = 0, this._undirectedSelfLoopCount = 0; }, i2.hasNode = function(t2) { return this._nodes.has("" + t2); - }, i2.hasDirectedEdge = function(t2, e3) { + }, i2.hasDirectedEdge = function(t2, e2) { if ("undirected" === this.type) return false; if (1 === arguments.length) { @@ -4153,15 +8756,12 @@ var require_graphology_umd_min = __commonJS({ return !!r3 && !r3.undirected; } if (2 === arguments.length) { - t2 = "" + t2, e3 = "" + e3; + t2 = "" + t2, e2 = "" + e2; var i3 = this._nodes.get(t2); - if (!i3) - return false; - var o2 = i3.out[e3]; - return !!o2 && (!this.multi || !!o2.size); + return !!i3 && i3.out.hasOwnProperty(e2); } - throw new F("Graph.hasDirectedEdge: invalid arity (".concat(arguments.length, ", instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.")); - }, i2.hasUndirectedEdge = function(t2, e3) { + throw new B("Graph.hasDirectedEdge: invalid arity (".concat(arguments.length, ", instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.")); + }, i2.hasUndirectedEdge = function(t2, e2) { if ("directed" === this.type) return false; if (1 === arguments.length) { @@ -4169,528 +8769,540 @@ var require_graphology_umd_min = __commonJS({ return !!r3 && r3.undirected; } if (2 === arguments.length) { - t2 = "" + t2, e3 = "" + e3; + t2 = "" + t2, e2 = "" + e2; var i3 = this._nodes.get(t2); - if (!i3) - return false; - var o2 = i3.undirected[e3]; - return !!o2 && (!this.multi || !!o2.size); + return !!i3 && i3.undirected.hasOwnProperty(e2); } - throw new F("Graph.hasDirectedEdge: invalid arity (".concat(arguments.length, ", instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.")); - }, i2.hasEdge = function(t2, e3) { + throw new B("Graph.hasDirectedEdge: invalid arity (".concat(arguments.length, ", instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.")); + }, i2.hasEdge = function(t2, e2) { if (1 === arguments.length) { var n4 = "" + t2; return this._edges.has(n4); } if (2 === arguments.length) { - t2 = "" + t2, e3 = "" + e3; + t2 = "" + t2, e2 = "" + e2; var r3 = this._nodes.get(t2); - if (!r3) - return false; - var i3 = void 0 !== r3.out && r3.out[e3]; - return i3 || (i3 = void 0 !== r3.undirected && r3.undirected[e3]), !!i3 && (!this.multi || !!i3.size); + return !!r3 && (void 0 !== r3.out && r3.out.hasOwnProperty(e2) || void 0 !== r3.undirected && r3.undirected.hasOwnProperty(e2)); } - throw new F("Graph.hasEdge: invalid arity (".concat(arguments.length, ", instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.")); - }, i2.directedEdge = function(t2, e3) { + throw new B("Graph.hasEdge: invalid arity (".concat(arguments.length, ", instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target.")); + }, i2.directedEdge = function(t2, e2) { if ("undirected" !== this.type) { - if (t2 = "" + t2, e3 = "" + e3, this.multi) - throw new B2("Graph.directedEdge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.directedEdges instead."); + if (t2 = "" + t2, e2 = "" + e2, this.multi) + throw new I("Graph.directedEdge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.directedEdges instead."); var n4 = this._nodes.get(t2); if (!n4) - throw new Y2('Graph.directedEdge: could not find the "'.concat(t2, '" source node in the graph.')); - if (!this._nodes.has(e3)) - throw new Y2('Graph.directedEdge: could not find the "'.concat(e3, '" target node in the graph.')); - var r3 = n4.out && n4.out[e3] || void 0; + throw new F('Graph.directedEdge: could not find the "'.concat(t2, '" source node in the graph.')); + if (!this._nodes.has(e2)) + throw new F('Graph.directedEdge: could not find the "'.concat(e2, '" target node in the graph.')); + var r3 = n4.out && n4.out[e2] || void 0; return r3 ? r3.key : void 0; } - }, i2.undirectedEdge = function(t2, e3) { + }, i2.undirectedEdge = function(t2, e2) { if ("directed" !== this.type) { - if (t2 = "" + t2, e3 = "" + e3, this.multi) - throw new B2("Graph.undirectedEdge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.undirectedEdges instead."); + if (t2 = "" + t2, e2 = "" + e2, this.multi) + throw new I("Graph.undirectedEdge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.undirectedEdges instead."); var n4 = this._nodes.get(t2); if (!n4) - throw new Y2('Graph.undirectedEdge: could not find the "'.concat(t2, '" source node in the graph.')); - if (!this._nodes.has(e3)) - throw new Y2('Graph.undirectedEdge: could not find the "'.concat(e3, '" target node in the graph.')); - var r3 = n4.undirected && n4.undirected[e3] || void 0; + throw new F('Graph.undirectedEdge: could not find the "'.concat(t2, '" source node in the graph.')); + if (!this._nodes.has(e2)) + throw new F('Graph.undirectedEdge: could not find the "'.concat(e2, '" target node in the graph.')); + var r3 = n4.undirected && n4.undirected[e2] || void 0; return r3 ? r3.key : void 0; } - }, i2.edge = function(t2, e3) { + }, i2.edge = function(t2, e2) { if (this.multi) - throw new B2("Graph.edge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.edges instead."); - t2 = "" + t2, e3 = "" + e3; + throw new I("Graph.edge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.edges instead."); + t2 = "" + t2, e2 = "" + e2; var n4 = this._nodes.get(t2); if (!n4) - throw new Y2('Graph.edge: could not find the "'.concat(t2, '" source node in the graph.')); - if (!this._nodes.has(e3)) - throw new Y2('Graph.edge: could not find the "'.concat(e3, '" target node in the graph.')); - var r3 = n4.out && n4.out[e3] || n4.undirected && n4.undirected[e3] || void 0; + throw new F('Graph.edge: could not find the "'.concat(t2, '" source node in the graph.')); + if (!this._nodes.has(e2)) + throw new F('Graph.edge: could not find the "'.concat(e2, '" target node in the graph.')); + var r3 = n4.out && n4.out[e2] || n4.undirected && n4.undirected[e2] || void 0; if (r3) return r3.key; - }, i2.areDirectedNeighbors = function(t2, e3) { - t2 = "" + t2, e3 = "" + e3; + }, i2.areDirectedNeighbors = function(t2, e2) { + t2 = "" + t2, e2 = "" + e2; var n4 = this._nodes.get(t2); if (!n4) - throw new Y2('Graph.areDirectedNeighbors: could not find the "'.concat(t2, '" node in the graph.')); - return "undirected" !== this.type && (e3 in n4.in || e3 in n4.out); - }, i2.areOutNeighbors = function(t2, e3) { - t2 = "" + t2, e3 = "" + e3; + throw new F('Graph.areDirectedNeighbors: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" !== this.type && (e2 in n4.in || e2 in n4.out); + }, i2.areOutNeighbors = function(t2, e2) { + t2 = "" + t2, e2 = "" + e2; var n4 = this._nodes.get(t2); if (!n4) - throw new Y2('Graph.areOutNeighbors: could not find the "'.concat(t2, '" node in the graph.')); - return "undirected" !== this.type && e3 in n4.out; - }, i2.areInNeighbors = function(t2, e3) { - t2 = "" + t2, e3 = "" + e3; + throw new F('Graph.areOutNeighbors: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" !== this.type && e2 in n4.out; + }, i2.areInNeighbors = function(t2, e2) { + t2 = "" + t2, e2 = "" + e2; var n4 = this._nodes.get(t2); if (!n4) - throw new Y2('Graph.areInNeighbors: could not find the "'.concat(t2, '" node in the graph.')); - return "undirected" !== this.type && e3 in n4.in; - }, i2.areUndirectedNeighbors = function(t2, e3) { - t2 = "" + t2, e3 = "" + e3; + throw new F('Graph.areInNeighbors: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" !== this.type && e2 in n4.in; + }, i2.areUndirectedNeighbors = function(t2, e2) { + t2 = "" + t2, e2 = "" + e2; var n4 = this._nodes.get(t2); if (!n4) - throw new Y2('Graph.areUndirectedNeighbors: could not find the "'.concat(t2, '" node in the graph.')); - return "directed" !== this.type && e3 in n4.undirected; - }, i2.areNeighbors = function(t2, e3) { - t2 = "" + t2, e3 = "" + e3; + throw new F('Graph.areUndirectedNeighbors: could not find the "'.concat(t2, '" node in the graph.')); + return "directed" !== this.type && e2 in n4.undirected; + }, i2.areNeighbors = function(t2, e2) { + t2 = "" + t2, e2 = "" + e2; var n4 = this._nodes.get(t2); if (!n4) - throw new Y2('Graph.areNeighbors: could not find the "'.concat(t2, '" node in the graph.')); - return "undirected" !== this.type && (e3 in n4.in || e3 in n4.out) || "directed" !== this.type && e3 in n4.undirected; - }, i2.areInboundNeighbors = function(t2, e3) { - t2 = "" + t2, e3 = "" + e3; + throw new F('Graph.areNeighbors: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" !== this.type && (e2 in n4.in || e2 in n4.out) || "directed" !== this.type && e2 in n4.undirected; + }, i2.areInboundNeighbors = function(t2, e2) { + t2 = "" + t2, e2 = "" + e2; var n4 = this._nodes.get(t2); if (!n4) - throw new Y2('Graph.areInboundNeighbors: could not find the "'.concat(t2, '" node in the graph.')); - return "undirected" !== this.type && e3 in n4.in || "directed" !== this.type && e3 in n4.undirected; - }, i2.areOutboundNeighbors = function(t2, e3) { - t2 = "" + t2, e3 = "" + e3; + throw new F('Graph.areInboundNeighbors: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" !== this.type && e2 in n4.in || "directed" !== this.type && e2 in n4.undirected; + }, i2.areOutboundNeighbors = function(t2, e2) { + t2 = "" + t2, e2 = "" + e2; var n4 = this._nodes.get(t2); if (!n4) - throw new Y2('Graph.areOutboundNeighbors: could not find the "'.concat(t2, '" node in the graph.')); - return "undirected" !== this.type && e3 in n4.out || "directed" !== this.type && e3 in n4.undirected; + throw new F('Graph.areOutboundNeighbors: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" !== this.type && e2 in n4.out || "directed" !== this.type && e2 in n4.undirected; }, i2.inDegree = function(t2) { t2 = "" + t2; - var e3 = this._nodes.get(t2); - if (!e3) - throw new Y2('Graph.inDegree: could not find the "'.concat(t2, '" node in the graph.')); - return "undirected" === this.type ? 0 : e3.inDegree + e3.directedSelfLoops; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.inDegree: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" === this.type ? 0 : e2.inDegree; }, i2.outDegree = function(t2) { t2 = "" + t2; - var e3 = this._nodes.get(t2); - if (!e3) - throw new Y2('Graph.outDegree: could not find the "'.concat(t2, '" node in the graph.')); - return "undirected" === this.type ? 0 : e3.outDegree + e3.directedSelfLoops; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.outDegree: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" === this.type ? 0 : e2.outDegree; }, i2.directedDegree = function(t2) { t2 = "" + t2; - var e3 = this._nodes.get(t2); - if (!e3) - throw new Y2('Graph.directedDegree: could not find the "'.concat(t2, '" node in the graph.')); - if ("undirected" === this.type) - return 0; - var n4 = e3.directedSelfLoops; - return e3.inDegree + n4 + (e3.outDegree + n4); + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.directedDegree: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" === this.type ? 0 : e2.inDegree + e2.outDegree; }, i2.undirectedDegree = function(t2) { t2 = "" + t2; - var e3 = this._nodes.get(t2); - if (!e3) - throw new Y2('Graph.undirectedDegree: could not find the "'.concat(t2, '" node in the graph.')); - if ("directed" === this.type) - return 0; - var n4 = e3.undirectedSelfLoops; - return e3.undirectedDegree + 2 * n4; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.undirectedDegree: could not find the "'.concat(t2, '" node in the graph.')); + return "directed" === this.type ? 0 : e2.undirectedDegree; + }, i2.inboundDegree = function(t2) { + t2 = "" + t2; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.inboundDegree: could not find the "'.concat(t2, '" node in the graph.')); + var n4 = 0; + return "directed" !== this.type && (n4 += e2.undirectedDegree), "undirected" !== this.type && (n4 += e2.inDegree), n4; + }, i2.outboundDegree = function(t2) { + t2 = "" + t2; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.outboundDegree: could not find the "'.concat(t2, '" node in the graph.')); + var n4 = 0; + return "directed" !== this.type && (n4 += e2.undirectedDegree), "undirected" !== this.type && (n4 += e2.outDegree), n4; }, i2.degree = function(t2) { t2 = "" + t2; - var e3 = this._nodes.get(t2); - if (!e3) - throw new Y2('Graph.degree: could not find the "'.concat(t2, '" node in the graph.')); + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.degree: could not find the "'.concat(t2, '" node in the graph.')); var n4 = 0; - return "directed" !== this.type && (n4 += e3.undirectedDegree + 2 * e3.undirectedSelfLoops), "undirected" !== this.type && (n4 += e3.inDegree + e3.outDegree + 2 * e3.directedSelfLoops), n4; + return "directed" !== this.type && (n4 += e2.undirectedDegree), "undirected" !== this.type && (n4 += e2.inDegree + e2.outDegree), n4; }, i2.inDegreeWithoutSelfLoops = function(t2) { t2 = "" + t2; - var e3 = this._nodes.get(t2); - if (!e3) - throw new Y2('Graph.inDegreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); - return "undirected" === this.type ? 0 : e3.inDegree; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.inDegreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" === this.type ? 0 : e2.inDegree - e2.directedLoops; }, i2.outDegreeWithoutSelfLoops = function(t2) { t2 = "" + t2; - var e3 = this._nodes.get(t2); - if (!e3) - throw new Y2('Graph.outDegreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); - return "undirected" === this.type ? 0 : e3.outDegree; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.outDegreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" === this.type ? 0 : e2.outDegree - e2.directedLoops; }, i2.directedDegreeWithoutSelfLoops = function(t2) { t2 = "" + t2; - var e3 = this._nodes.get(t2); - if (!e3) - throw new Y2('Graph.directedDegreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); - return "undirected" === this.type ? 0 : e3.inDegree + e3.outDegree; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.directedDegreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); + return "undirected" === this.type ? 0 : e2.inDegree + e2.outDegree - 2 * e2.directedLoops; }, i2.undirectedDegreeWithoutSelfLoops = function(t2) { t2 = "" + t2; - var e3 = this._nodes.get(t2); - if (!e3) - throw new Y2('Graph.undirectedDegreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); - return "directed" === this.type ? 0 : e3.undirectedDegree; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.undirectedDegreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); + return "directed" === this.type ? 0 : e2.undirectedDegree - 2 * e2.undirectedLoops; + }, i2.inboundDegreeWithoutSelfLoops = function(t2) { + t2 = "" + t2; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.inboundDegreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); + var n4 = 0, r3 = 0; + return "directed" !== this.type && (n4 += e2.undirectedDegree, r3 += 2 * e2.undirectedLoops), "undirected" !== this.type && (n4 += e2.inDegree, r3 += e2.directedLoops), n4 - r3; + }, i2.outboundDegreeWithoutSelfLoops = function(t2) { + t2 = "" + t2; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.outboundDegreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); + var n4 = 0, r3 = 0; + return "directed" !== this.type && (n4 += e2.undirectedDegree, r3 += 2 * e2.undirectedLoops), "undirected" !== this.type && (n4 += e2.outDegree, r3 += e2.directedLoops), n4 - r3; }, i2.degreeWithoutSelfLoops = function(t2) { t2 = "" + t2; - var e3 = this._nodes.get(t2); - if (!e3) - throw new Y2('Graph.degreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); - var n4 = 0; - return "directed" !== this.type && (n4 += e3.undirectedDegree), "undirected" !== this.type && (n4 += e3.inDegree + e3.outDegree), n4; + var e2 = this._nodes.get(t2); + if (!e2) + throw new F('Graph.degreeWithoutSelfLoops: could not find the "'.concat(t2, '" node in the graph.')); + var n4 = 0, r3 = 0; + return "directed" !== this.type && (n4 += e2.undirectedDegree, r3 += 2 * e2.undirectedLoops), "undirected" !== this.type && (n4 += e2.inDegree + e2.outDegree, r3 += 2 * e2.directedLoops), n4 - r3; }, i2.source = function(t2) { t2 = "" + t2; - var e3 = this._edges.get(t2); - if (!e3) - throw new Y2('Graph.source: could not find the "'.concat(t2, '" edge in the graph.')); - return e3.source.key; + var e2 = this._edges.get(t2); + if (!e2) + throw new F('Graph.source: could not find the "'.concat(t2, '" edge in the graph.')); + return e2.source.key; }, i2.target = function(t2) { t2 = "" + t2; - var e3 = this._edges.get(t2); - if (!e3) - throw new Y2('Graph.target: could not find the "'.concat(t2, '" edge in the graph.')); - return e3.target.key; + var e2 = this._edges.get(t2); + if (!e2) + throw new F('Graph.target: could not find the "'.concat(t2, '" edge in the graph.')); + return e2.target.key; }, i2.extremities = function(t2) { t2 = "" + t2; - var e3 = this._edges.get(t2); - if (!e3) - throw new Y2('Graph.extremities: could not find the "'.concat(t2, '" edge in the graph.')); - return [e3.source.key, e3.target.key]; - }, i2.opposite = function(t2, e3) { - t2 = "" + t2, e3 = "" + e3; - var n4 = this._edges.get(e3); + var e2 = this._edges.get(t2); + if (!e2) + throw new F('Graph.extremities: could not find the "'.concat(t2, '" edge in the graph.')); + return [e2.source.key, e2.target.key]; + }, i2.opposite = function(t2, e2) { + t2 = "" + t2, e2 = "" + e2; + var n4 = this._edges.get(e2); if (!n4) - throw new Y2('Graph.opposite: could not find the "'.concat(e3, '" edge in the graph.')); + throw new F('Graph.opposite: could not find the "'.concat(e2, '" edge in the graph.')); var r3 = n4.source.key, i3 = n4.target.key; if (t2 === r3) return i3; if (t2 === i3) return r3; - throw new Y2('Graph.opposite: the "'.concat(t2, '" node is not attached to the "').concat(e3, '" edge (').concat(r3, ", ").concat(i3, ").")); - }, i2.hasExtremity = function(t2, e3) { - t2 = "" + t2, e3 = "" + e3; + throw new F('Graph.opposite: the "'.concat(t2, '" node is not attached to the "').concat(e2, '" edge (').concat(r3, ", ").concat(i3, ").")); + }, i2.hasExtremity = function(t2, e2) { + t2 = "" + t2, e2 = "" + e2; var n4 = this._edges.get(t2); if (!n4) - throw new Y2('Graph.hasExtremity: could not find the "'.concat(t2, '" edge in the graph.')); - return n4.source.key === e3 || n4.target.key === e3; + throw new F('Graph.hasExtremity: could not find the "'.concat(t2, '" edge in the graph.')); + return n4.source.key === e2 || n4.target.key === e2; }, i2.isUndirected = function(t2) { t2 = "" + t2; - var e3 = this._edges.get(t2); - if (!e3) - throw new Y2('Graph.isUndirected: could not find the "'.concat(t2, '" edge in the graph.')); - return e3.undirected; + var e2 = this._edges.get(t2); + if (!e2) + throw new F('Graph.isUndirected: could not find the "'.concat(t2, '" edge in the graph.')); + return e2.undirected; }, i2.isDirected = function(t2) { t2 = "" + t2; - var e3 = this._edges.get(t2); - if (!e3) - throw new Y2('Graph.isDirected: could not find the "'.concat(t2, '" edge in the graph.')); - return !e3.undirected; + var e2 = this._edges.get(t2); + if (!e2) + throw new F('Graph.isDirected: could not find the "'.concat(t2, '" edge in the graph.')); + return !e2.undirected; }, i2.isSelfLoop = function(t2) { t2 = "" + t2; - var e3 = this._edges.get(t2); - if (!e3) - throw new Y2('Graph.isSelfLoop: could not find the "'.concat(t2, '" edge in the graph.')); - return e3.source === e3.target; - }, i2.addNode = function(t2, e3) { - var n4 = function(t3, e4, n5) { - if (n5 && !h(n5)) - throw new F('Graph.addNode: invalid attributes. Expecting an object but got "'.concat(n5, '"')); - if (e4 = "" + e4, n5 = n5 || {}, t3._nodes.has(e4)) - throw new B2('Graph.addNode: the "'.concat(e4, '" node already exist in the graph.')); - var r3 = new t3.NodeDataClass(e4, n5); - return t3._nodes.set(e4, r3), t3.emit("nodeAdded", { key: e4, attributes: n5 }), r3; - }(this, t2, e3); + var e2 = this._edges.get(t2); + if (!e2) + throw new F('Graph.isSelfLoop: could not find the "'.concat(t2, '" edge in the graph.')); + return e2.source === e2.target; + }, i2.addNode = function(t2, e2) { + var n4 = function(t3, e3, n5) { + if (n5 && !s2(n5)) + throw new B('Graph.addNode: invalid attributes. Expecting an object but got "'.concat(n5, '"')); + if (e3 = "" + e3, n5 = n5 || {}, t3._nodes.has(e3)) + throw new I('Graph.addNode: the "'.concat(e3, '" node already exist in the graph.')); + var r3 = new t3.NodeDataClass(e3, n5); + return t3._nodes.set(e3, r3), t3.emit("nodeAdded", { key: e3, attributes: n5 }), r3; + }(this, t2, e2); return n4.key; - }, i2.mergeNode = function(t2, e3) { - if (e3 && !h(e3)) - throw new F('Graph.mergeNode: invalid attributes. Expecting an object but got "'.concat(e3, '"')); - t2 = "" + t2, e3 = e3 || {}; + }, i2.mergeNode = function(t2, e2) { + if (e2 && !s2(e2)) + throw new B('Graph.mergeNode: invalid attributes. Expecting an object but got "'.concat(e2, '"')); + t2 = "" + t2, e2 = e2 || {}; var n4 = this._nodes.get(t2); - return n4 ? (e3 && (c3(n4.attributes, e3), this.emit("nodeAttributesUpdated", { type: "merge", key: t2, attributes: n4.attributes, data: e3 })), [t2, false]) : (n4 = new this.NodeDataClass(t2, e3), this._nodes.set(t2, n4), this.emit("nodeAdded", { key: t2, attributes: e3 }), [t2, true]); - }, i2.updateNode = function(t2, e3) { - if (e3 && "function" != typeof e3) - throw new F('Graph.updateNode: invalid updater function. Expecting a function but got "'.concat(e3, '"')); + return n4 ? (e2 && (u(n4.attributes, e2), this.emit("nodeAttributesUpdated", { type: "merge", key: t2, attributes: n4.attributes, data: e2 })), [t2, false]) : (n4 = new this.NodeDataClass(t2, e2), this._nodes.set(t2, n4), this.emit("nodeAdded", { key: t2, attributes: e2 }), [t2, true]); + }, i2.updateNode = function(t2, e2) { + if (e2 && "function" != typeof e2) + throw new B('Graph.updateNode: invalid updater function. Expecting a function but got "'.concat(e2, '"')); t2 = "" + t2; var n4 = this._nodes.get(t2); if (n4) { - if (e3) { + if (e2) { var r3 = n4.attributes; - n4.attributes = e3(r3), this.emit("nodeAttributesUpdated", { type: "replace", key: t2, attributes: n4.attributes }); + n4.attributes = e2(r3), this.emit("nodeAttributesUpdated", { type: "replace", key: t2, attributes: n4.attributes }); } return [t2, false]; } - var i3 = e3 ? e3({}) : {}; + var i3 = e2 ? e2({}) : {}; return n4 = new this.NodeDataClass(t2, i3), this._nodes.set(t2, n4), this.emit("nodeAdded", { key: t2, attributes: i3 }), [t2, true]; }, i2.dropNode = function(t2) { - var e3 = this; t2 = "" + t2; - var n4 = this._nodes.get(t2); + var e2, n4 = this._nodes.get(t2); if (!n4) - throw new Y2('Graph.dropNode: could not find the "'.concat(t2, '" node in the graph.')); - this.forEachEdge(t2, function(t3) { - e3.dropEdge(t3); - }), this._nodes.delete(t2), this.emit("nodeDropped", { key: t2, attributes: n4.attributes }); + throw new F('Graph.dropNode: could not find the "'.concat(t2, '" node in the graph.')); + if ("undirected" !== this.type) { + for (var r3 in n4.out) { + e2 = n4.out[r3]; + do { + Mt(this, e2), e2 = e2.next; + } while (e2); + } + for (var i3 in n4.in) { + e2 = n4.in[i3]; + do { + Mt(this, e2), e2 = e2.next; + } while (e2); + } + } + if ("directed" !== this.type) + for (var o2 in n4.undirected) { + e2 = n4.undirected[o2]; + do { + Mt(this, e2), e2 = e2.next; + } while (e2); + } + this._nodes.delete(t2), this.emit("nodeDropped", { key: t2, attributes: n4.attributes }); }, i2.dropEdge = function(t2) { - var e3; + var e2; if (arguments.length > 1) { var n4 = "" + arguments[0], r3 = "" + arguments[1]; - if (!(e3 = d(this, n4, r3, this.type))) - throw new Y2('Graph.dropEdge: could not find the "'.concat(n4, '" -> "').concat(r3, '" edge in the graph.')); - } else if (t2 = "" + t2, !(e3 = this._edges.get(t2))) - throw new Y2('Graph.dropEdge: could not find the "'.concat(t2, '" edge in the graph.')); - this._edges.delete(e3.key); - var i3 = e3, o2 = i3.source, a3 = i3.target, u2 = i3.attributes, c4 = e3.undirected; - return o2 === a3 ? c4 ? (o2.undirectedSelfLoops--, this._undirectedSelfLoopCount--) : (o2.directedSelfLoops--, this._directedSelfLoopCount--) : c4 ? (o2.undirectedDegree--, a3.undirectedDegree--) : (o2.outDegree--, a3.inDegree--), X2(this, c4, e3), c4 ? this._undirectedSize-- : this._directedSize--, this.emit("edgeDropped", { key: t2, attributes: u2, source: o2.key, target: a3.key, undirected: c4 }), this; + if (!(e2 = d(this, n4, r3, this.type))) + throw new F('Graph.dropEdge: could not find the "'.concat(n4, '" -> "').concat(r3, '" edge in the graph.')); + } else if (t2 = "" + t2, !(e2 = this._edges.get(t2))) + throw new F('Graph.dropEdge: could not find the "'.concat(t2, '" edge in the graph.')); + return Mt(this, e2), this; + }, i2.dropDirectedEdge = function(t2, e2) { + if (arguments.length < 2) + throw new I("Graph.dropDirectedEdge: it does not make sense to try and drop a directed edge by key. What if the edge with this key is undirected? Use #.dropEdge for this purpose instead."); + if (this.multi) + throw new I("Graph.dropDirectedEdge: cannot use a {source,target} combo when dropping an edge in a MultiGraph since we cannot infer the one you want to delete as there could be multiple ones."); + var n4 = d(this, t2 = "" + t2, e2 = "" + e2, "directed"); + if (!n4) + throw new F('Graph.dropDirectedEdge: could not find a "'.concat(t2, '" -> "').concat(e2, '" edge in the graph.')); + return Mt(this, n4), this; + }, i2.dropUndirectedEdge = function(t2, e2) { + if (arguments.length < 2) + throw new I("Graph.dropUndirectedEdge: it does not make sense to drop a directed edge by key. What if the edge with this key is undirected? Use #.dropEdge for this purpose instead."); + if (this.multi) + throw new I("Graph.dropUndirectedEdge: cannot use a {source,target} combo when dropping an edge in a MultiGraph since we cannot infer the one you want to delete as there could be multiple ones."); + var n4 = d(this, t2, e2, "undirected"); + if (!n4) + throw new F('Graph.dropUndirectedEdge: could not find a "'.concat(t2, '" -> "').concat(e2, '" edge in the graph.')); + return Mt(this, n4), this; }, i2.clear = function() { this._edges.clear(), this._nodes.clear(), this._resetInstanceCounters(), this.emit("cleared"); }, i2.clearEdges = function() { - !function(t2) { - for (var e3, n4 = t2._nodes.values(); true !== (e3 = n4.next()).done; ) - e3.value.clear(); - }(this), this._edges.clear(), this._resetInstanceCounters(), this.emit("edgesCleared"); + for (var t2, e2 = this._nodes.values(); true !== (t2 = e2.next()).done; ) + t2.value.clear(); + this._edges.clear(), this._resetInstanceCounters(), this.emit("edgesCleared"); }, i2.getAttribute = function(t2) { return this._attributes[t2]; }, i2.getAttributes = function() { return this._attributes; }, i2.hasAttribute = function(t2) { return this._attributes.hasOwnProperty(t2); - }, i2.setAttribute = function(t2, e3) { - return this._attributes[t2] = e3, this.emit("attributesUpdated", { type: "set", attributes: this._attributes, name: t2 }), this; - }, i2.updateAttribute = function(t2, e3) { - if ("function" != typeof e3) - throw new F("Graph.updateAttribute: updater should be a function."); + }, i2.setAttribute = function(t2, e2) { + return this._attributes[t2] = e2, this.emit("attributesUpdated", { type: "set", attributes: this._attributes, name: t2 }), this; + }, i2.updateAttribute = function(t2, e2) { + if ("function" != typeof e2) + throw new B("Graph.updateAttribute: updater should be a function."); var n4 = this._attributes[t2]; - return this._attributes[t2] = e3(n4), this.emit("attributesUpdated", { type: "set", attributes: this._attributes, name: t2 }), this; + return this._attributes[t2] = e2(n4), this.emit("attributesUpdated", { type: "set", attributes: this._attributes, name: t2 }), this; }, i2.removeAttribute = function(t2) { return delete this._attributes[t2], this.emit("attributesUpdated", { type: "remove", attributes: this._attributes, name: t2 }), this; }, i2.replaceAttributes = function(t2) { - if (!h(t2)) - throw new F("Graph.replaceAttributes: provided attributes are not a plain object."); + if (!s2(t2)) + throw new B("Graph.replaceAttributes: provided attributes are not a plain object."); return this._attributes = t2, this.emit("attributesUpdated", { type: "replace", attributes: this._attributes }), this; }, i2.mergeAttributes = function(t2) { - if (!h(t2)) - throw new F("Graph.mergeAttributes: provided attributes are not a plain object."); - return c3(this._attributes, t2), this.emit("attributesUpdated", { type: "merge", attributes: this._attributes, data: t2 }), this; + if (!s2(t2)) + throw new B("Graph.mergeAttributes: provided attributes are not a plain object."); + return u(this._attributes, t2), this.emit("attributesUpdated", { type: "merge", attributes: this._attributes, data: t2 }), this; }, i2.updateAttributes = function(t2) { if ("function" != typeof t2) - throw new F("Graph.updateAttributes: provided updater is not a function."); + throw new B("Graph.updateAttributes: provided updater is not a function."); return this._attributes = t2(this._attributes), this.emit("attributesUpdated", { type: "update", attributes: this._attributes }), this; - }, i2.updateEachNodeAttributes = function(t2, e3) { + }, i2.updateEachNodeAttributes = function(t2, e2) { if ("function" != typeof t2) - throw new F("Graph.updateEachNodeAttributes: expecting an updater function."); - if (e3 && !g(e3)) - throw new F("Graph.updateEachNodeAttributes: invalid hints. Expecting an object having the following shape: {attributes?: [string]}"); + throw new B("Graph.updateEachNodeAttributes: expecting an updater function."); + if (e2 && !l2(e2)) + throw new B("Graph.updateEachNodeAttributes: invalid hints. Expecting an object having the following shape: {attributes?: [string]}"); for (var n4, r3, i3 = this._nodes.values(); true !== (n4 = i3.next()).done; ) (r3 = n4.value).attributes = t2(r3.key, r3.attributes); - this.emit("eachNodeAttributesUpdated", { hints: e3 || null }); - }, i2.updateEachEdgeAttributes = function(t2, e3) { + this.emit("eachNodeAttributesUpdated", { hints: e2 || null }); + }, i2.updateEachEdgeAttributes = function(t2, e2) { if ("function" != typeof t2) - throw new F("Graph.updateEachEdgeAttributes: expecting an updater function."); - if (e3 && !g(e3)) - throw new F("Graph.updateEachEdgeAttributes: invalid hints. Expecting an object having the following shape: {attributes?: [string]}"); - for (var n4, r3, i3, o2, a3 = this._edges.values(); true !== (n4 = a3.next()).done; ) + throw new B("Graph.updateEachEdgeAttributes: expecting an updater function."); + if (e2 && !l2(e2)) + throw new B("Graph.updateEachEdgeAttributes: invalid hints. Expecting an object having the following shape: {attributes?: [string]}"); + for (var n4, r3, i3, o2, a2 = this._edges.values(); true !== (n4 = a2.next()).done; ) i3 = (r3 = n4.value).source, o2 = r3.target, r3.attributes = t2(r3.key, r3.attributes, i3.key, o2.key, i3.attributes, o2.attributes, r3.undirected); - this.emit("eachEdgeAttributesUpdated", { hints: e3 || null }); + this.emit("eachEdgeAttributesUpdated", { hints: e2 || null }); }, i2.forEachAdjacencyEntry = function(t2) { if ("function" != typeof t2) - throw new F("Graph.forEachAdjacencyEntry: expecting a callback."); - this.multi ? Yt(false, false, false, this, t2) : Ft(false, false, false, this, t2); + throw new B("Graph.forEachAdjacencyEntry: expecting a callback."); + xt(false, false, false, this, t2); }, i2.forEachAdjacencyEntryWithOrphans = function(t2) { if ("function" != typeof t2) - throw new F("Graph.forEachAdjacencyEntryWithOrphans: expecting a callback."); - this.multi ? Yt(false, false, true, this, t2) : Ft(false, false, true, this, t2); + throw new B("Graph.forEachAdjacencyEntryWithOrphans: expecting a callback."); + xt(false, false, true, this, t2); }, i2.forEachAssymetricAdjacencyEntry = function(t2) { if ("function" != typeof t2) - throw new F("Graph.forEachAssymetricAdjacencyEntry: expecting a callback."); - this.multi ? Yt(false, true, false, this, t2) : Ft(false, true, false, this, t2); + throw new B("Graph.forEachAssymetricAdjacencyEntry: expecting a callback."); + xt(false, true, false, this, t2); }, i2.forEachAssymetricAdjacencyEntryWithOrphans = function(t2) { if ("function" != typeof t2) - throw new F("Graph.forEachAssymetricAdjacencyEntryWithOrphans: expecting a callback."); - this.multi ? Yt(false, true, true, this, t2) : Ft(false, true, true, this, t2); + throw new B("Graph.forEachAssymetricAdjacencyEntryWithOrphans: expecting a callback."); + xt(false, true, true, this, t2); }, i2.nodes = function() { return "function" == typeof Array.from ? Array.from(this._nodes.keys()) : K(this._nodes.keys(), this._nodes.size); }, i2.forEachNode = function(t2) { if ("function" != typeof t2) - throw new F("Graph.forEachNode: expecting a callback."); - for (var e3, n4, r3 = this._nodes.values(); true !== (e3 = r3.next()).done; ) - t2((n4 = e3.value).key, n4.attributes); + throw new B("Graph.forEachNode: expecting a callback."); + for (var e2, n4, r3 = this._nodes.values(); true !== (e2 = r3.next()).done; ) + t2((n4 = e2.value).key, n4.attributes); }, i2.findNode = function(t2) { if ("function" != typeof t2) - throw new F("Graph.findNode: expecting a callback."); - for (var e3, n4, r3 = this._nodes.values(); true !== (e3 = r3.next()).done; ) - if (t2((n4 = e3.value).key, n4.attributes)) + throw new B("Graph.findNode: expecting a callback."); + for (var e2, n4, r3 = this._nodes.values(); true !== (e2 = r3.next()).done; ) + if (t2((n4 = e2.value).key, n4.attributes)) return n4.key; }, i2.mapNodes = function(t2) { if ("function" != typeof t2) - throw new F("Graph.mapNode: expecting a callback."); - for (var e3, n4, r3 = this._nodes.values(), i3 = new Array(this.order), o2 = 0; true !== (e3 = r3.next()).done; ) - n4 = e3.value, i3[o2++] = t2(n4.key, n4.attributes); + throw new B("Graph.mapNode: expecting a callback."); + for (var e2, n4, r3 = this._nodes.values(), i3 = new Array(this.order), o2 = 0; true !== (e2 = r3.next()).done; ) + n4 = e2.value, i3[o2++] = t2(n4.key, n4.attributes); return i3; }, i2.someNode = function(t2) { if ("function" != typeof t2) - throw new F("Graph.someNode: expecting a callback."); - for (var e3, n4, r3 = this._nodes.values(); true !== (e3 = r3.next()).done; ) - if (t2((n4 = e3.value).key, n4.attributes)) + throw new B("Graph.someNode: expecting a callback."); + for (var e2, n4, r3 = this._nodes.values(); true !== (e2 = r3.next()).done; ) + if (t2((n4 = e2.value).key, n4.attributes)) return true; return false; }, i2.everyNode = function(t2) { if ("function" != typeof t2) - throw new F("Graph.everyNode: expecting a callback."); - for (var e3, n4, r3 = this._nodes.values(); true !== (e3 = r3.next()).done; ) - if (!t2((n4 = e3.value).key, n4.attributes)) + throw new B("Graph.everyNode: expecting a callback."); + for (var e2, n4, r3 = this._nodes.values(); true !== (e2 = r3.next()).done; ) + if (!t2((n4 = e2.value).key, n4.attributes)) return false; return true; }, i2.filterNodes = function(t2) { if ("function" != typeof t2) - throw new F("Graph.filterNodes: expecting a callback."); - for (var e3, n4, r3 = this._nodes.values(), i3 = []; true !== (e3 = r3.next()).done; ) - t2((n4 = e3.value).key, n4.attributes) && i3.push(n4.key); + throw new B("Graph.filterNodes: expecting a callback."); + for (var e2, n4, r3 = this._nodes.values(), i3 = []; true !== (e2 = r3.next()).done; ) + t2((n4 = e2.value).key, n4.attributes) && i3.push(n4.key); return i3; - }, i2.reduceNodes = function(t2, e3) { + }, i2.reduceNodes = function(t2, e2) { if ("function" != typeof t2) - throw new F("Graph.reduceNodes: expecting a callback."); + throw new B("Graph.reduceNodes: expecting a callback."); if (arguments.length < 2) - throw new F("Graph.reduceNodes: missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array."); - for (var n4, r3, i3 = e3, o2 = this._nodes.values(); true !== (n4 = o2.next()).done; ) + throw new B("Graph.reduceNodes: missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array."); + for (var n4, r3, i3 = e2, o2 = this._nodes.values(); true !== (n4 = o2.next()).done; ) i3 = t2(i3, (r3 = n4.value).key, r3.attributes); return i3; }, i2.nodeEntries = function() { var t2 = this._nodes.values(); return new O(function() { - var e3 = t2.next(); - if (e3.done) - return e3; - var n4 = e3.value; + var e2 = t2.next(); + if (e2.done) + return e2; + var n4 = e2.value; return { value: { node: n4.key, attributes: n4.attributes }, done: false }; }); - }, i2.exportNode = function(t2) { - t2 = "" + t2; - var e3 = this._nodes.get(t2); - if (!e3) - throw new Y2('Graph.exportNode: could not find the "'.concat(t2, '" node in the graph.')); - return Bt(t2, e3); - }, i2.exportEdge = function(t2) { - t2 = "" + t2; - var e3 = this._edges.get(t2); - if (!e3) - throw new Y2('Graph.exportEdge: could not find the "'.concat(t2, '" edge in the graph.')); - return qt(t2, e3); }, i2.export = function() { - var t2 = new Array(this._nodes.size), e3 = 0; - this._nodes.forEach(function(n5, r3) { - t2[e3++] = Bt(r3, n5); + var t2 = this, e2 = new Array(this._nodes.size), n4 = 0; + this._nodes.forEach(function(t3, r4) { + e2[n4++] = function(t4, e3) { + var n5 = { key: t4 }; + return h(e3.attributes) || (n5.attributes = u({}, e3.attributes)), n5; + }(r4, t3); }); - var n4 = new Array(this._edges.size); - return e3 = 0, this._edges.forEach(function(t3, r3) { - n4[e3++] = qt(r3, t3); - }), { attributes: this.getAttributes(), nodes: t2, edges: n4, options: { type: this.type, multi: this.multi, allowSelfLoops: this.allowSelfLoops } }; - }, i2.importNode = function(t2) { - var e3 = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n4 = Jt(t2); - if (n4) { - if ("not-object" === n4) - throw new F('Graph.importNode: invalid serialized node. A serialized node should be a plain object with at least a "key" property.'); - if ("no-key" === n4) - throw new F("Graph.importNode: no key provided."); - if ("invalid-attributes" === n4) - throw new F("Graph.importNode: invalid attributes. Attributes should be a plain object, null or omitted."); - } - var r3 = t2.key, i3 = t2.attributes, o2 = void 0 === i3 ? {} : i3; - return e3 ? this.mergeNode(r3, o2) : this.addNode(r3, o2), this; - }, i2.importEdge = function(t2) { - var e3 = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n4 = Vt(t2); - if (n4) { - if ("not-object" === n4) - throw new F('Graph.importEdge: invalid serialized edge. A serialized edge should be a plain object with at least a "source" & "target" property.'); - if ("no-source" === n4) - throw new F("Graph.importEdge: missing souce."); - if ("no-target" === n4) - throw new F("Graph.importEdge: missing target."); - if ("invalid-attributes" === n4) - throw new F("Graph.importEdge: invalid attributes. Attributes should be a plain object, null or omitted."); - if ("invalid-undirected" === n4) - throw new F("Graph.importEdge: invalid undirected. Undirected should be boolean or omitted."); - } - var r3 = t2.source, i3 = t2.target, o2 = t2.attributes, a3 = void 0 === o2 ? {} : o2, u2 = t2.undirected, c4 = void 0 !== u2 && u2; - return "key" in t2 ? (e3 ? c4 ? this.mergeUndirectedEdgeWithKey : this.mergeDirectedEdgeWithKey : c4 ? this.addUndirectedEdgeWithKey : this.addDirectedEdgeWithKey).call(this, t2.key, r3, i3, a3) : (e3 ? c4 ? this.mergeUndirectedEdge : this.mergeDirectedEdge : c4 ? this.addUndirectedEdge : this.addDirectedEdge).call(this, r3, i3, a3), this; + var r3 = new Array(this._edges.size); + return n4 = 0, this._edges.forEach(function(e3, i3) { + r3[n4++] = function(t3, e4, n5) { + var r4 = { key: e4, source: n5.source.key, target: n5.target.key }; + return h(n5.attributes) || (r4.attributes = u({}, n5.attributes)), "mixed" === t3 && n5.undirected && (r4.undirected = true), r4; + }(t2.type, i3, e3); + }), { options: { type: this.type, multi: this.multi, allowSelfLoops: this.allowSelfLoops }, attributes: this.getAttributes(), nodes: e2, edges: r3 }; }, i2.import = function(t2) { - var e3, n4, r3, i3 = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; - if (s2(t2)) - return this.import(t2.export(), i3), this; - if (!h(t2)) - throw new F("Graph.import: invalid argument. Expecting a serialized graph or, alternatively, a Graph instance."); + var e2, n4, i3, o2, a2, c2 = this, u2 = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; + if (t2 instanceof r2) + return t2.forEachNode(function(t3, e3) { + u2 ? c2.mergeNode(t3, e3) : c2.addNode(t3, e3); + }), t2.forEachEdge(function(t3, e3, n5, r3, i4, o3, a3) { + u2 ? a3 ? c2.mergeUndirectedEdgeWithKey(t3, n5, r3, e3) : c2.mergeDirectedEdgeWithKey(t3, n5, r3, e3) : a3 ? c2.addUndirectedEdgeWithKey(t3, n5, r3, e3) : c2.addDirectedEdgeWithKey(t3, n5, r3, e3); + }), this; + if (!s2(t2)) + throw new B("Graph.import: invalid argument. Expecting a serialized graph or, alternatively, a Graph instance."); if (t2.attributes) { - if (!h(t2.attributes)) - throw new F("Graph.import: invalid attributes. Expecting a plain object."); - i3 ? this.mergeAttributes(t2.attributes) : this.replaceAttributes(t2.attributes); + if (!s2(t2.attributes)) + throw new B("Graph.import: invalid attributes. Expecting a plain object."); + u2 ? this.mergeAttributes(t2.attributes) : this.replaceAttributes(t2.attributes); } if (t2.nodes) { - if (r3 = t2.nodes, !Array.isArray(r3)) - throw new F("Graph.import: invalid nodes. Expecting an array."); - for (e3 = 0, n4 = r3.length; e3 < n4; e3++) - this.importNode(r3[e3], i3); + if (i3 = t2.nodes, !Array.isArray(i3)) + throw new B("Graph.import: invalid nodes. Expecting an array."); + for (e2 = 0, n4 = i3.length; e2 < n4; e2++) { + Et(o2 = i3[e2]); + var d2 = o2, h2 = d2.key, p2 = d2.attributes; + u2 ? this.mergeNode(h2, p2) : this.addNode(h2, p2); + } } if (t2.edges) { - if (r3 = t2.edges, !Array.isArray(r3)) - throw new F("Graph.import: invalid edges. Expecting an array."); - for (e3 = 0, n4 = r3.length; e3 < n4; e3++) - this.importEdge(r3[e3], i3); + var f2 = false; + if ("undirected" === this.type && (f2 = true), i3 = t2.edges, !Array.isArray(i3)) + throw new B("Graph.import: invalid edges. Expecting an array."); + for (e2 = 0, n4 = i3.length; e2 < n4; e2++) { + At(a2 = i3[e2]); + var l3 = a2, g2 = l3.source, y2 = l3.target, w2 = l3.attributes, v2 = l3.undirected, b2 = void 0 === v2 ? f2 : v2; + "key" in a2 ? (u2 ? b2 ? this.mergeUndirectedEdgeWithKey : this.mergeDirectedEdgeWithKey : b2 ? this.addUndirectedEdgeWithKey : this.addDirectedEdgeWithKey).call(this, a2.key, g2, y2, w2) : (u2 ? b2 ? this.mergeUndirectedEdge : this.mergeDirectedEdge : b2 ? this.addUndirectedEdge : this.addDirectedEdge).call(this, g2, y2, w2); + } } return this; }, i2.nullCopy = function(t2) { - var e3 = new r2(c3({}, this._options, t2)); - return e3.replaceAttributes(c3({}, this.getAttributes())), e3; + var e2 = new r2(u({}, this._options, t2)); + return e2.replaceAttributes(u({}, this.getAttributes())), e2; }, i2.emptyCopy = function(t2) { - var e3 = this.nullCopy(t2); + var e2 = this.nullCopy(t2); return this._nodes.forEach(function(t3, n4) { - var r3 = c3({}, t3.attributes); - t3 = new e3.NodeDataClass(n4, r3), e3._nodes.set(n4, t3); - }), e3; - }, i2.copy = function() { - for (var t2, e3, n4 = this.emptyCopy(), r3 = this._edges.values(); true !== (t2 = r3.next()).done; ) - ee(n4, "copy", false, (e3 = t2.value).undirected, e3.key, e3.source.key, e3.target.key, c3({}, e3.attributes)); - return n4; - }, i2.upgradeToMixed = function() { - return "mixed" === this.type || (this._nodes.forEach(function(t2) { - return t2.upgradeToMixed(); - }), this._options.type = "mixed", l2(this, "type", this._options.type), p(this, "NodeDataClass", q)), this; - }, i2.upgradeToMulti = function() { - return this.multi || (this._options.multi = true, l2(this, "multi", true), (t2 = this)._nodes.forEach(function(e3, n4) { - if (e3.out) - for (var r3 in e3.out) { - var i3 = /* @__PURE__ */ new Set(); - i3.add(e3.out[r3]), e3.out[r3] = i3, t2._nodes.get(r3).in[n4] = i3; - } - if (e3.undirected) { - for (var o2 in e3.undirected) - if (!(o2 > n4)) { - var a3 = /* @__PURE__ */ new Set(); - a3.add(e3.undirected[o2]), e3.undirected[o2] = a3, t2._nodes.get(o2).undirected[n4] = a3; - } - } - })), this; - var t2; + var r3 = u({}, t3.attributes); + t3 = new e2.NodeDataClass(n4, r3), e2._nodes.set(n4, t3); + }), e2; + }, i2.copy = function(t2) { + if ("string" == typeof (t2 = t2 || {}).type && t2.type !== this.type && "mixed" !== t2.type) + throw new I('Graph.copy: cannot create an incompatible copy from "'.concat(this.type, '" type to "').concat(t2.type, '" because this would mean losing information about the current graph.')); + if ("boolean" == typeof t2.multi && t2.multi !== this.multi && true !== t2.multi) + throw new I("Graph.copy: cannot create an incompatible copy by downgrading a multi graph to a simple one because this would mean losing information about the current graph."); + if ("boolean" == typeof t2.allowSelfLoops && t2.allowSelfLoops !== this.allowSelfLoops && true !== t2.allowSelfLoops) + throw new I("Graph.copy: cannot create an incompatible copy from a graph allowing self loops to one that does not because this would mean losing information about the current graph."); + for (var e2, n4, r3 = this.emptyCopy(t2), i3 = this._edges.values(); true !== (e2 = i3.next()).done; ) + jt(r3, "copy", false, (n4 = e2.value).undirected, n4.key, n4.source.key, n4.target.key, u({}, n4.attributes)); + return r3; }, i2.toJSON = function() { return this.export(); }, i2.toString = function() { return "[object Graph]"; }, i2.inspect = function() { - var e3 = this, n4 = {}; - this._nodes.forEach(function(t2, e4) { - n4[e4] = t2.attributes; + var e2 = this, n4 = {}; + this._nodes.forEach(function(t2, e3) { + n4[e3] = t2.attributes; }); var r3 = {}, i3 = {}; this._edges.forEach(function(t2, n5) { - var o3, a4 = t2.undirected ? "--" : "->", u2 = "", c4 = t2.source.key, d2 = t2.target.key; - t2.undirected && c4 > d2 && (o3 = c4, c4 = d2, d2 = o3); - var s3 = "(".concat(c4, ")").concat(a4, "(").concat(d2, ")"); - n5.startsWith("geid_") ? e3.multi && (void 0 === i3[s3] ? i3[s3] = 0 : i3[s3]++, u2 += "".concat(i3[s3], ". ")) : u2 += "[".concat(n5, "]: "), r3[u2 += s3] = t2.attributes; + var o3, a3 = t2.undirected ? "--" : "->", c2 = "", u2 = t2.source.key, d2 = t2.target.key; + t2.undirected && u2 > d2 && (o3 = u2, u2 = d2, d2 = o3); + var s3 = "(".concat(u2, ")").concat(a3, "(").concat(d2, ")"); + n5.startsWith("geid_") ? e2.multi && (void 0 === i3[s3] ? i3[s3] = 0 : i3[s3]++, c2 += "".concat(i3[s3], ". ")) : c2 += "[".concat(n5, "]: "), r3[c2 += s3] = t2.attributes; }); var o2 = {}; - for (var a3 in this) - this.hasOwnProperty(a3) && !Zt.has(a3) && "function" != typeof this[a3] && "symbol" !== t(a3) && (o2[a3] = this[a3]); + for (var a2 in this) + this.hasOwnProperty(a2) && !Ut.has(a2) && "function" != typeof this[a2] && "symbol" !== t(a2) && (o2[a2] = this[a2]); return o2.attributes = this._attributes, o2.nodes = n4, o2.edges = r3, p(o2, "constructor", this.constructor), o2; }, r2; - }(v.exports.EventEmitter); - "undefined" != typeof Symbol && (re2.prototype[Symbol.for("nodejs.util.inspect.custom")] = re2.prototype.inspect), [{ name: function(t2) { + }(y.exports.EventEmitter); + "undefined" != typeof Symbol && (zt.prototype[Symbol.for("nodejs.util.inspect.custom")] = zt.prototype.inspect), [{ name: function(t2) { return "".concat(t2, "Edge"); }, generateKey: true }, { name: function(t2) { return "".concat(t2, "DirectedEdge"); @@ -4703,8213 +9315,5915 @@ var require_graphology_umd_min = __commonJS({ }, type: "directed" }, { name: function(t2) { return "".concat(t2, "UndirectedEdgeWithKey"); }, type: "undirected" }].forEach(function(t2) { - ["add", "merge", "update"].forEach(function(e3) { - var n3 = t2.name(e3), r2 = "add" === e3 ? ee : ne; - t2.generateKey ? re2.prototype[n3] = function(i2, o2, a3) { - return r2(this, n3, true, "undirected" === (t2.type || this.type), null, i2, o2, a3, "update" === e3); - } : re2.prototype[n3] = function(i2, o2, a3, u2) { - return r2(this, n3, false, "undirected" === (t2.type || this.type), i2, o2, a3, u2, "update" === e3); + ["add", "merge", "update"].forEach(function(e2) { + var n3 = t2.name(e2), r2 = "add" === e2 ? jt : Ct; + t2.generateKey ? zt.prototype[n3] = function(i2, o2, a2) { + return r2(this, n3, true, "undirected" === (t2.type || this.type), null, i2, o2, a2, "update" === e2); + } : zt.prototype[n3] = function(i2, o2, a2, c2) { + return r2(this, n3, false, "undirected" === (t2.type || this.type), i2, o2, a2, c2, "update" === e2); }; }); }), function(t2) { - $.forEach(function(e3) { - var n3 = e3.name, r2 = e3.attacher; + Q.forEach(function(e2) { + var n3 = e2.name, r2 = e2.attacher; r2(t2, n3("Node"), 0), r2(t2, n3("Source"), 1), r2(t2, n3("Target"), 2), r2(t2, n3("Opposite"), 3); }); - }(re2), function(t2) { - tt.forEach(function(e3) { - var n3 = e3.name, r2 = e3.attacher; + }(zt), function(t2) { + X.forEach(function(e2) { + var n3 = e2.name, r2 = e2.attacher; r2(t2, n3("Edge"), "mixed"), r2(t2, n3("DirectedEdge"), "directed"), r2(t2, n3("UndirectedEdge"), "undirected"); }); - }(re2), function(t2) { - it.forEach(function(e3) { - !function(t3, e4) { - var n3 = e4.name, r2 = e4.type, i2 = e4.direction; - t3.prototype[n3] = function(t4, e6) { + }(zt), function(t2) { + et.forEach(function(e2) { + !function(t3, e3) { + var n3 = e3.name, r2 = e3.type, i2 = e3.direction; + t3.prototype[n3] = function(t4, e4) { if ("mixed" !== r2 && "mixed" !== this.type && r2 !== this.type) return []; if (!arguments.length) - return wt(this, r2); + return ut(this, r2); if (1 === arguments.length) { t4 = "" + t4; var o2 = this._nodes.get(t4); if (void 0 === o2) - throw new Y2("Graph.".concat(n3, ': could not find the "').concat(t4, '" node in the graph.')); - return Gt(this.multi, "mixed" === r2 ? this.type : r2, i2, o2); + throw new F("Graph.".concat(n3, ': could not find the "').concat(t4, '" node in the graph.')); + return pt(this.multi, "mixed" === r2 ? this.type : r2, i2, o2); } if (2 === arguments.length) { - t4 = "" + t4, e6 = "" + e6; - var a3 = this._nodes.get(t4); - if (!a3) - throw new Y2("Graph.".concat(n3, ': could not find the "').concat(t4, '" source node in the graph.')); - if (!this._nodes.has(e6)) - throw new Y2("Graph.".concat(n3, ': could not find the "').concat(e6, '" target node in the graph.')); - return At(r2, this.multi, i2, a3, e6); + t4 = "" + t4, e4 = "" + e4; + var a2 = this._nodes.get(t4); + if (!a2) + throw new F("Graph.".concat(n3, ': could not find the "').concat(t4, '" source node in the graph.')); + if (!this._nodes.has(e4)) + throw new F("Graph.".concat(n3, ': could not find the "').concat(e4, '" target node in the graph.')); + return gt(r2, this.multi, i2, a2, e4); } - throw new F("Graph.".concat(n3, ": too many arguments (expecting 0, 1 or 2 and got ").concat(arguments.length, ").")); + throw new B("Graph.".concat(n3, ": too many arguments (expecting 0, 1 or 2 and got ").concat(arguments.length, ").")); }; - }(t2, e3), function(t3, e4) { - var n3 = e4.name, r2 = e4.type, i2 = e4.direction, o2 = "forEach" + n3[0].toUpperCase() + n3.slice(1, -1); - t3.prototype[o2] = function(t4, e6, n4) { + }(t2, e2), function(t3, e3) { + var n3 = e3.name, r2 = e3.type, i2 = e3.direction, o2 = "forEach" + n3[0].toUpperCase() + n3.slice(1, -1); + t3.prototype[o2] = function(t4, e4, n4) { if ("mixed" === r2 || "mixed" === this.type || r2 === this.type) { if (1 === arguments.length) - return mt(this, r2, n4 = t4); + return dt(false, this, r2, n4 = t4); if (2 === arguments.length) { - t4 = "" + t4, n4 = e6; - var a4 = this._nodes.get(t4); - if (void 0 === a4) - throw new Y2("Graph.".concat(o2, ': could not find the "').concat(t4, '" node in the graph.')); - return xt(this.multi, "mixed" === r2 ? this.type : r2, i2, a4, n4); + t4 = "" + t4, n4 = e4; + var a3 = this._nodes.get(t4); + if (void 0 === a3) + throw new F("Graph.".concat(o2, ': could not find the "').concat(t4, '" node in the graph.')); + return ht(false, this.multi, "mixed" === r2 ? this.type : r2, i2, a3, n4); } if (3 === arguments.length) { - t4 = "" + t4, e6 = "" + e6; - var u3 = this._nodes.get(t4); - if (!u3) - throw new Y2("Graph.".concat(o2, ': could not find the "').concat(t4, '" source node in the graph.')); - if (!this._nodes.has(e6)) - throw new Y2("Graph.".concat(o2, ': could not find the "').concat(e6, '" target node in the graph.')); - return Lt(r2, this.multi, i2, u3, e6, n4); + t4 = "" + t4, e4 = "" + e4; + var c3 = this._nodes.get(t4); + if (!c3) + throw new F("Graph.".concat(o2, ': could not find the "').concat(t4, '" source node in the graph.')); + if (!this._nodes.has(e4)) + throw new F("Graph.".concat(o2, ': could not find the "').concat(e4, '" target node in the graph.')); + return lt(false, r2, this.multi, i2, c3, e4, n4); } - throw new F("Graph.".concat(o2, ": too many arguments (expecting 1, 2 or 3 and got ").concat(arguments.length, ").")); + throw new B("Graph.".concat(o2, ": too many arguments (expecting 1, 2 or 3 and got ").concat(arguments.length, ").")); } }; - var a3 = "map" + n3[0].toUpperCase() + n3.slice(1); - t3.prototype[a3] = function() { - var t4, e6 = Array.prototype.slice.call(arguments), n4 = e6.pop(); - if (0 === e6.length) { + var a2 = "map" + n3[0].toUpperCase() + n3.slice(1); + t3.prototype[a2] = function() { + var t4, e4 = Array.prototype.slice.call(arguments), n4 = e4.pop(); + if (0 === e4.length) { var i3 = 0; "directed" !== r2 && (i3 += this.undirectedSize), "undirected" !== r2 && (i3 += this.directedSize), t4 = new Array(i3); - var a4 = 0; - e6.push(function(e7, r3, i4, o3, u3, c5, d2) { - t4[a4++] = n4(e7, r3, i4, o3, u3, c5, d2); + var a3 = 0; + e4.push(function(e5, r3, i4, o3, c3, u3, d2) { + t4[a3++] = n4(e5, r3, i4, o3, c3, u3, d2); }); } else - t4 = [], e6.push(function(e7, r3, i4, o3, a5, u3, c5) { - t4.push(n4(e7, r3, i4, o3, a5, u3, c5)); + t4 = [], e4.push(function(e5, r3, i4, o3, a4, c3, u3) { + t4.push(n4(e5, r3, i4, o3, a4, c3, u3)); }); - return this[o2].apply(this, e6), t4; + return this[o2].apply(this, e4), t4; }; - var u2 = "filter" + n3[0].toUpperCase() + n3.slice(1); - t3.prototype[u2] = function() { - var t4 = Array.prototype.slice.call(arguments), e6 = t4.pop(), n4 = []; - return t4.push(function(t5, r3, i3, o3, a4, u3, c5) { - e6(t5, r3, i3, o3, a4, u3, c5) && n4.push(t5); + var c2 = "filter" + n3[0].toUpperCase() + n3.slice(1); + t3.prototype[c2] = function() { + var t4 = Array.prototype.slice.call(arguments), e4 = t4.pop(), n4 = []; + return t4.push(function(t5, r3, i3, o3, a3, c3, u3) { + e4(t5, r3, i3, o3, a3, c3, u3) && n4.push(t5); }), this[o2].apply(this, t4), n4; }; - var c4 = "reduce" + n3[0].toUpperCase() + n3.slice(1); - t3.prototype[c4] = function() { - var t4, e6, n4 = Array.prototype.slice.call(arguments); + var u2 = "reduce" + n3[0].toUpperCase() + n3.slice(1); + t3.prototype[u2] = function() { + var t4, e4, n4 = Array.prototype.slice.call(arguments); if (n4.length < 2 || n4.length > 4) - throw new F("Graph.".concat(c4, ": invalid number of arguments (expecting 2, 3 or 4 and got ").concat(n4.length, ").")); + throw new B("Graph.".concat(u2, ": invalid number of arguments (expecting 2, 3 or 4 and got ").concat(n4.length, ").")); if ("function" == typeof n4[n4.length - 1] && "function" != typeof n4[n4.length - 2]) - throw new F("Graph.".concat(c4, ": missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array.")); - 2 === n4.length ? (t4 = n4[0], e6 = n4[1], n4 = []) : 3 === n4.length ? (t4 = n4[1], e6 = n4[2], n4 = [n4[0]]) : 4 === n4.length && (t4 = n4[2], e6 = n4[3], n4 = [n4[0], n4[1]]); - var r3 = e6; - return n4.push(function(e7, n5, i3, o3, a4, u3, c5) { - r3 = t4(r3, e7, n5, i3, o3, a4, u3, c5); + throw new B("Graph.".concat(u2, ": missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array.")); + 2 === n4.length ? (t4 = n4[0], e4 = n4[1], n4 = []) : 3 === n4.length ? (t4 = n4[1], e4 = n4[2], n4 = [n4[0]]) : 4 === n4.length && (t4 = n4[2], e4 = n4[3], n4 = [n4[0], n4[1]]); + var r3 = e4; + return n4.push(function(e5, n5, i3, o3, a3, c3, u3) { + r3 = t4(r3, e5, n5, i3, o3, a3, c3, u3); }), this[o2].apply(this, n4), r3; }; - }(t2, e3), function(t3, e4) { - var n3 = e4.name, r2 = e4.type, i2 = e4.direction, o2 = "find" + n3[0].toUpperCase() + n3.slice(1, -1); - t3.prototype[o2] = function(t4, e6, n4) { + }(t2, e2), function(t3, e3) { + var n3 = e3.name, r2 = e3.type, i2 = e3.direction, o2 = "find" + n3[0].toUpperCase() + n3.slice(1, -1); + t3.prototype[o2] = function(t4, e4, n4) { if ("mixed" !== r2 && "mixed" !== this.type && r2 !== this.type) return false; if (1 === arguments.length) - return _t(this, r2, n4 = t4); + return dt(true, this, r2, n4 = t4); if (2 === arguments.length) { - t4 = "" + t4, n4 = e6; - var a4 = this._nodes.get(t4); - if (void 0 === a4) - throw new Y2("Graph.".concat(o2, ': could not find the "').concat(t4, '" node in the graph.')); - return Et(this.multi, "mixed" === r2 ? this.type : r2, i2, a4, n4); + t4 = "" + t4, n4 = e4; + var a3 = this._nodes.get(t4); + if (void 0 === a3) + throw new F("Graph.".concat(o2, ': could not find the "').concat(t4, '" node in the graph.')); + return ht(true, this.multi, "mixed" === r2 ? this.type : r2, i2, a3, n4); } if (3 === arguments.length) { - t4 = "" + t4, e6 = "" + e6; - var u3 = this._nodes.get(t4); - if (!u3) - throw new Y2("Graph.".concat(o2, ': could not find the "').concat(t4, '" source node in the graph.')); - if (!this._nodes.has(e6)) - throw new Y2("Graph.".concat(o2, ': could not find the "').concat(e6, '" target node in the graph.')); - return Dt(r2, this.multi, i2, u3, e6, n4); + t4 = "" + t4, e4 = "" + e4; + var c3 = this._nodes.get(t4); + if (!c3) + throw new F("Graph.".concat(o2, ': could not find the "').concat(t4, '" source node in the graph.')); + if (!this._nodes.has(e4)) + throw new F("Graph.".concat(o2, ': could not find the "').concat(e4, '" target node in the graph.')); + return lt(true, r2, this.multi, i2, c3, e4, n4); } - throw new F("Graph.".concat(o2, ": too many arguments (expecting 1, 2 or 3 and got ").concat(arguments.length, ").")); + throw new B("Graph.".concat(o2, ": too many arguments (expecting 1, 2 or 3 and got ").concat(arguments.length, ").")); }; - var a3 = "some" + n3[0].toUpperCase() + n3.slice(1, -1); - t3.prototype[a3] = function() { - var t4 = Array.prototype.slice.call(arguments), e6 = t4.pop(); - return t4.push(function(t5, n4, r3, i3, o3, a4, u3) { - return e6(t5, n4, r3, i3, o3, a4, u3); + var a2 = "some" + n3[0].toUpperCase() + n3.slice(1, -1); + t3.prototype[a2] = function() { + var t4 = Array.prototype.slice.call(arguments), e4 = t4.pop(); + return t4.push(function(t5, n4, r3, i3, o3, a3, c3) { + return e4(t5, n4, r3, i3, o3, a3, c3); }), !!this[o2].apply(this, t4); }; - var u2 = "every" + n3[0].toUpperCase() + n3.slice(1, -1); - t3.prototype[u2] = function() { - var t4 = Array.prototype.slice.call(arguments), e6 = t4.pop(); - return t4.push(function(t5, n4, r3, i3, o3, a4, u3) { - return !e6(t5, n4, r3, i3, o3, a4, u3); + var c2 = "every" + n3[0].toUpperCase() + n3.slice(1, -1); + t3.prototype[c2] = function() { + var t4 = Array.prototype.slice.call(arguments), e4 = t4.pop(); + return t4.push(function(t5, n4, r3, i3, o3, a3, c3) { + return !e4(t5, n4, r3, i3, o3, a3, c3); }), !this[o2].apply(this, t4); }; - }(t2, e3), function(t3, e4) { - var n3 = e4.name, r2 = e4.type, i2 = e4.direction, o2 = n3.slice(0, -1) + "Entries"; - t3.prototype[o2] = function(t4, e6) { + }(t2, e2), function(t3, e3) { + var n3 = e3.name, r2 = e3.type, i2 = e3.direction, o2 = n3.slice(0, -1) + "Entries"; + t3.prototype[o2] = function(t4, e4) { if ("mixed" !== r2 && "mixed" !== this.type && r2 !== this.type) return O.empty(); if (!arguments.length) - return kt(this, r2); + return st(this, r2); if (1 === arguments.length) { t4 = "" + t4; var n4 = this._nodes.get(t4); if (!n4) - throw new Y2("Graph.".concat(o2, ': could not find the "').concat(t4, '" node in the graph.')); - return St(r2, i2, n4); + throw new F("Graph.".concat(o2, ': could not find the "').concat(t4, '" node in the graph.')); + return ft(r2, i2, n4); } if (2 === arguments.length) { - t4 = "" + t4, e6 = "" + e6; - var a3 = this._nodes.get(t4); - if (!a3) - throw new Y2("Graph.".concat(o2, ': could not find the "').concat(t4, '" source node in the graph.')); - if (!this._nodes.has(e6)) - throw new Y2("Graph.".concat(o2, ': could not find the "').concat(e6, '" target node in the graph.')); - return Nt(r2, i2, a3, e6); + t4 = "" + t4, e4 = "" + e4; + var a2 = this._nodes.get(t4); + if (!a2) + throw new F("Graph.".concat(o2, ': could not find the "').concat(t4, '" source node in the graph.')); + if (!this._nodes.has(e4)) + throw new F("Graph.".concat(o2, ': could not find the "').concat(e4, '" target node in the graph.')); + return yt(r2, i2, a2, e4); } - throw new F("Graph.".concat(o2, ": too many arguments (expecting 0, 1 or 2 and got ").concat(arguments.length, ").")); + throw new B("Graph.".concat(o2, ": too many arguments (expecting 0, 1 or 2 and got ").concat(arguments.length, ").")); }; - }(t2, e3); + }(t2, e2); }); - }(re2), function(t2) { - Ut.forEach(function(e3) { - Rt(t2, e3), Wt(t2, e3), Kt(t2, e3), It(t2, e3); + }(zt), function(t2) { + wt.forEach(function(e2) { + _t(t2, e2), function(t3, e3) { + var n3 = e3.name, r2 = e3.type, i2 = e3.direction, o2 = "forEach" + n3[0].toUpperCase() + n3.slice(1, -1); + t3.prototype[o2] = function(t4, e4) { + if ("mixed" === r2 || "mixed" === this.type || r2 === this.type) { + t4 = "" + t4; + var n4 = this._nodes.get(t4); + if (void 0 === n4) + throw new F("Graph.".concat(o2, ': could not find the "').concat(t4, '" node in the graph.')); + mt(false, "mixed" === r2 ? this.type : r2, i2, n4, e4); + } + }; + var a2 = "map" + n3[0].toUpperCase() + n3.slice(1); + t3.prototype[a2] = function(t4, e4) { + var n4 = []; + return this[o2](t4, function(t5, r3) { + n4.push(e4(t5, r3)); + }), n4; + }; + var c2 = "filter" + n3[0].toUpperCase() + n3.slice(1); + t3.prototype[c2] = function(t4, e4) { + var n4 = []; + return this[o2](t4, function(t5, r3) { + e4(t5, r3) && n4.push(t5); + }), n4; + }; + var u2 = "reduce" + n3[0].toUpperCase() + n3.slice(1); + t3.prototype[u2] = function(t4, e4, n4) { + if (arguments.length < 3) + throw new B("Graph.".concat(u2, ": missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array.")); + var r3 = n4; + return this[o2](t4, function(t5, n5) { + r3 = e4(r3, t5, n5); + }), r3; + }; + }(t2, e2), function(t3, e3) { + var n3 = e3.name, r2 = e3.type, i2 = e3.direction, o2 = n3[0].toUpperCase() + n3.slice(1, -1), a2 = "find" + o2; + t3.prototype[a2] = function(t4, e4) { + if ("mixed" === r2 || "mixed" === this.type || r2 === this.type) { + t4 = "" + t4; + var n4 = this._nodes.get(t4); + if (void 0 === n4) + throw new F("Graph.".concat(a2, ': could not find the "').concat(t4, '" node in the graph.')); + return mt(true, "mixed" === r2 ? this.type : r2, i2, n4, e4); + } + }; + var c2 = "some" + o2; + t3.prototype[c2] = function(t4, e4) { + return !!this[a2](t4, e4); + }; + var u2 = "every" + o2; + t3.prototype[u2] = function(t4, e4) { + return !this[a2](t4, function(t5, n4) { + return !e4(t5, n4); + }); + }; + }(t2, e2), Gt(t2, e2); }); - }(re2); - var ie = function(t2) { - function n3(e3) { - var n4 = c3({ type: "directed" }, e3); + }(zt); + var Wt = function(t2) { + function n3(e2) { + var n4 = u({ type: "directed" }, e2); if ("multi" in n4 && false !== n4.multi) - throw new F("DirectedGraph.from: inconsistent indication that the graph should be multi in given options!"); + throw new B("DirectedGraph.from: inconsistent indication that the graph should be multi in given options!"); if ("directed" !== n4.type) - throw new F('DirectedGraph.from: inconsistent "' + n4.type + '" type in given options!'); + throw new B('DirectedGraph.from: inconsistent "' + n4.type + '" type in given options!'); return t2.call(this, n4) || this; } return e(n3, t2), n3; - }(re2), oe = function(t2) { - function n3(e3) { - var n4 = c3({ type: "undirected" }, e3); + }(zt), Pt = function(t2) { + function n3(e2) { + var n4 = u({ type: "undirected" }, e2); if ("multi" in n4 && false !== n4.multi) - throw new F("UndirectedGraph.from: inconsistent indication that the graph should be multi in given options!"); + throw new B("UndirectedGraph.from: inconsistent indication that the graph should be multi in given options!"); if ("undirected" !== n4.type) - throw new F('UndirectedGraph.from: inconsistent "' + n4.type + '" type in given options!'); + throw new B('UndirectedGraph.from: inconsistent "' + n4.type + '" type in given options!'); return t2.call(this, n4) || this; } return e(n3, t2), n3; - }(re2), ae = function(t2) { - function n3(e3) { - var n4 = c3({ multi: true }, e3); + }(zt), Rt = function(t2) { + function n3(e2) { + var n4 = u({ multi: true }, e2); if ("multi" in n4 && true !== n4.multi) - throw new F("MultiGraph.from: inconsistent indication that the graph should be simple in given options!"); + throw new B("MultiGraph.from: inconsistent indication that the graph should be simple in given options!"); return t2.call(this, n4) || this; } return e(n3, t2), n3; - }(re2), ue = function(t2) { - function n3(e3) { - var n4 = c3({ type: "directed", multi: true }, e3); + }(zt), Kt = function(t2) { + function n3(e2) { + var n4 = u({ type: "directed", multi: true }, e2); if ("multi" in n4 && true !== n4.multi) - throw new F("MultiDirectedGraph.from: inconsistent indication that the graph should be simple in given options!"); + throw new B("MultiDirectedGraph.from: inconsistent indication that the graph should be simple in given options!"); if ("directed" !== n4.type) - throw new F('MultiDirectedGraph.from: inconsistent "' + n4.type + '" type in given options!'); + throw new B('MultiDirectedGraph.from: inconsistent "' + n4.type + '" type in given options!'); return t2.call(this, n4) || this; } return e(n3, t2), n3; - }(re2), ce = function(t2) { - function n3(e3) { - var n4 = c3({ type: "undirected", multi: true }, e3); + }(zt), Tt = function(t2) { + function n3(e2) { + var n4 = u({ type: "undirected", multi: true }, e2); if ("multi" in n4 && true !== n4.multi) - throw new F("MultiUndirectedGraph.from: inconsistent indication that the graph should be simple in given options!"); + throw new B("MultiUndirectedGraph.from: inconsistent indication that the graph should be simple in given options!"); if ("undirected" !== n4.type) - throw new F('MultiUndirectedGraph.from: inconsistent "' + n4.type + '" type in given options!'); + throw new B('MultiUndirectedGraph.from: inconsistent "' + n4.type + '" type in given options!'); return t2.call(this, n4) || this; } return e(n3, t2), n3; - }(re2); - function de(t2) { - t2.from = function(e3, n3) { - var r2 = c3({}, e3.options, n3), i2 = new t2(r2); - return i2.import(e3), i2; + }(zt); + function Bt(t2) { + t2.from = function(e2, n3) { + var r2 = u({}, e2.options, n3), i2 = new t2(r2); + return i2.import(e2), i2; }; } - return de(re2), de(ie), de(oe), de(ae), de(ue), de(ce), re2.Graph = re2, re2.DirectedGraph = ie, re2.UndirectedGraph = oe, re2.MultiGraph = ae, re2.MultiDirectedGraph = ue, re2.MultiUndirectedGraph = ce, re2.InvalidArgumentsGraphError = F, re2.NotFoundGraphError = Y2, re2.UsageGraphError = B2, re2; + return Bt(zt), Bt(Wt), Bt(Pt), Bt(Rt), Bt(Kt), Bt(Tt), zt.Graph = zt, zt.DirectedGraph = Wt, zt.UndirectedGraph = Pt, zt.MultiGraph = Rt, zt.MultiDirectedGraph = Kt, zt.MultiUndirectedGraph = Tt, zt.InvalidArgumentsGraphError = B, zt.NotFoundGraphError = F, zt.UsageGraphError = I, zt; }); } }); -// node_modules/graphology-utils/is-graph.js -var require_is_graph = __commonJS({ - "node_modules/graphology-utils/is-graph.js"(exports, module2) { - module2.exports = function isGraph(value) { - return value !== null && typeof value === "object" && typeof value.addUndirectedEdgeWithKey === "function" && typeof value.dropNode === "function" && typeof value.multi === "boolean"; - }; - } -}); - -// node_modules/obliterator/support.js -var require_support = __commonJS({ - "node_modules/obliterator/support.js"(exports) { - exports.ARRAY_BUFFER_SUPPORT = typeof ArrayBuffer !== "undefined"; - exports.SYMBOL_SUPPORT = typeof Symbol !== "undefined"; - } -}); - -// node_modules/obliterator/foreach.js -var require_foreach = __commonJS({ - "node_modules/obliterator/foreach.js"(exports, module2) { - var support = require_support(); - var ARRAY_BUFFER_SUPPORT = support.ARRAY_BUFFER_SUPPORT; - var SYMBOL_SUPPORT = support.SYMBOL_SUPPORT; - module2.exports = function forEach(iterable, callback) { - var iterator, k, i, l2, s2; - if (!iterable) - throw new Error("obliterator/forEach: invalid iterable."); - if (typeof callback !== "function") - throw new Error("obliterator/forEach: expecting a callback."); - if (Array.isArray(iterable) || ARRAY_BUFFER_SUPPORT && ArrayBuffer.isView(iterable) || typeof iterable === "string" || iterable.toString() === "[object Arguments]") { - for (i = 0, l2 = iterable.length; i < l2; i++) - callback(iterable[i], i); - return; - } - if (typeof iterable.forEach === "function") { - iterable.forEach(callback); - return; - } - if (SYMBOL_SUPPORT && Symbol.iterator in iterable && typeof iterable.next !== "function") { - iterable = iterable[Symbol.iterator](); - } - if (typeof iterable.next === "function") { - iterator = iterable; - i = 0; - while (s2 = iterator.next(), s2.done !== true) { - callback(s2.value, i); - i++; - } - return; - } - for (k in iterable) { - if (iterable.hasOwnProperty(k)) { - callback(iterable[k], k); - } - } - return; - }; - } -}); - -// node_modules/mnemonist/utils/typed-arrays.js -var require_typed_arrays = __commonJS({ - "node_modules/mnemonist/utils/typed-arrays.js"(exports) { - var MAX_8BIT_INTEGER = Math.pow(2, 8) - 1; - var MAX_16BIT_INTEGER = Math.pow(2, 16) - 1; - var MAX_32BIT_INTEGER = Math.pow(2, 32) - 1; - var MAX_SIGNED_8BIT_INTEGER = Math.pow(2, 7) - 1; - var MAX_SIGNED_16BIT_INTEGER = Math.pow(2, 15) - 1; - var MAX_SIGNED_32BIT_INTEGER = Math.pow(2, 31) - 1; - exports.getPointerArray = function(size) { - var maxIndex = size - 1; - if (maxIndex <= MAX_8BIT_INTEGER) - return Uint8Array; - if (maxIndex <= MAX_16BIT_INTEGER) - return Uint16Array; - if (maxIndex <= MAX_32BIT_INTEGER) - return Uint32Array; - throw new Error("mnemonist: Pointer Array of size > 4294967295 is not supported."); - }; - exports.getSignedPointerArray = function(size) { - var maxIndex = size - 1; - if (maxIndex <= MAX_SIGNED_8BIT_INTEGER) - return Int8Array; - if (maxIndex <= MAX_SIGNED_16BIT_INTEGER) - return Int16Array; - if (maxIndex <= MAX_SIGNED_32BIT_INTEGER) - return Int32Array; - return Float64Array; - }; - exports.getNumberType = function(value) { - if (value === (value | 0)) { - if (Math.sign(value) === -1) { - if (value <= 127 && value >= -128) - return Int8Array; - if (value <= 32767 && value >= -32768) - return Int16Array; - return Int32Array; - } else { - if (value <= 255) - return Uint8Array; - if (value <= 65535) - return Uint16Array; - return Uint32Array; - } - } - return Float64Array; - }; - var TYPE_PRIORITY = { - Uint8Array: 1, - Int8Array: 2, - Uint16Array: 3, - Int16Array: 4, - Uint32Array: 5, - Int32Array: 6, - Float32Array: 7, - Float64Array: 8 - }; - exports.getMinimalRepresentation = function(array, getter) { - var maxType = null, maxPriority = 0, p, t, v, i, l2; - for (i = 0, l2 = array.length; i < l2; i++) { - v = getter ? getter(array[i]) : array[i]; - t = exports.getNumberType(v); - p = TYPE_PRIORITY[t.name]; - if (p > maxPriority) { - maxPriority = p; - maxType = t; - } - } - return maxType; - }; - exports.isTypedArray = function(value) { - return typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView(value); - }; - exports.concat = function() { - var length = 0, i, o, l2; - for (i = 0, l2 = arguments.length; i < l2; i++) - length += arguments[i].length; - var array = new arguments[0].constructor(length); - for (i = 0, o = 0; i < l2; i++) { - array.set(arguments[i], o); - o += arguments[i].length; - } - return array; - }; - exports.indices = function(length) { - var PointerArray = exports.getPointerArray(length); - var array = new PointerArray(length); - for (var i = 0; i < length; i++) - array[i] = i; - return array; - }; - } -}); - -// node_modules/mnemonist/utils/iterables.js -var require_iterables = __commonJS({ - "node_modules/mnemonist/utils/iterables.js"(exports) { - var forEach = require_foreach(); - var typed = require_typed_arrays(); - function isArrayLike(target) { - return Array.isArray(target) || typed.isTypedArray(target); - } - function guessLength(target) { - if (typeof target.length === "number") - return target.length; - if (typeof target.size === "number") - return target.size; - return; - } - function toArray(target) { - var l2 = guessLength(target); - var array = typeof l2 === "number" ? new Array(l2) : []; - var i = 0; - forEach(target, function(value) { - array[i++] = value; - }); - return array; - } - function toArrayWithIndices(target) { - var l2 = guessLength(target); - var IndexArray = typeof l2 === "number" ? typed.getPointerArray(l2) : Array; - var array = typeof l2 === "number" ? new Array(l2) : []; - var indices = typeof l2 === "number" ? new IndexArray(l2) : []; - var i = 0; - forEach(target, function(value) { - array[i] = value; - indices[i] = i++; - }); - return [array, indices]; - } - exports.isArrayLike = isArrayLike; - exports.guessLength = guessLength; - exports.toArray = toArray; - exports.toArrayWithIndices = toArrayWithIndices; - } -}); - -// node_modules/obliterator/iterator.js -var require_iterator = __commonJS({ - "node_modules/obliterator/iterator.js"(exports, module2) { - function Iterator(next) { - if (typeof next !== "function") - throw new Error("obliterator/iterator: expecting a function!"); - this.next = next; - } - if (typeof Symbol !== "undefined") - Iterator.prototype[Symbol.iterator] = function() { - return this; - }; - Iterator.of = function() { - var args = arguments, l2 = args.length, i = 0; - return new Iterator(function() { - if (i >= l2) - return { done: true }; - return { done: false, value: args[i++] }; - }); - }; - Iterator.empty = function() { - var iterator = new Iterator(function() { - return { done: true }; - }); - return iterator; - }; - Iterator.fromSequence = function(sequence) { - var i = 0, l2 = sequence.length; - return new Iterator(function() { - if (i >= l2) - return { done: true }; - return { done: false, value: sequence[i++] }; - }); - }; - Iterator.is = function(value) { - if (value instanceof Iterator) - return true; - return typeof value === "object" && value !== null && typeof value.next === "function"; - }; - module2.exports = Iterator; - } -}); - -// node_modules/mnemonist/fixed-deque.js -var require_fixed_deque = __commonJS({ - "node_modules/mnemonist/fixed-deque.js"(exports, module2) { - var iterables = require_iterables(); - var Iterator = require_iterator(); - function FixedDeque(ArrayClass, capacity) { - if (arguments.length < 2) - throw new Error("mnemonist/fixed-deque: expecting an Array class and a capacity."); - if (typeof capacity !== "number" || capacity <= 0) - throw new Error("mnemonist/fixed-deque: `capacity` should be a positive number."); - this.ArrayClass = ArrayClass; - this.capacity = capacity; - this.items = new ArrayClass(this.capacity); - this.clear(); - } - FixedDeque.prototype.clear = function() { - this.start = 0; - this.size = 0; - }; - FixedDeque.prototype.push = function(item) { - if (this.size === this.capacity) - throw new Error("mnemonist/fixed-deque.push: deque capacity (" + this.capacity + ") exceeded!"); - var index2 = (this.start + this.size) % this.capacity; - this.items[index2] = item; - return ++this.size; - }; - FixedDeque.prototype.unshift = function(item) { - if (this.size === this.capacity) - throw new Error("mnemonist/fixed-deque.unshift: deque capacity (" + this.capacity + ") exceeded!"); - var index2 = this.start - 1; - if (this.start === 0) - index2 = this.capacity - 1; - this.items[index2] = item; - this.start = index2; - return ++this.size; - }; - FixedDeque.prototype.pop = function() { - if (this.size === 0) - return; - const index2 = (this.start + this.size - 1) % this.capacity; - this.size--; - return this.items[index2]; - }; - FixedDeque.prototype.shift = function() { - if (this.size === 0) - return; - var index2 = this.start; - this.size--; - this.start++; - if (this.start === this.capacity) - this.start = 0; - return this.items[index2]; - }; - FixedDeque.prototype.peekFirst = function() { - if (this.size === 0) - return; - return this.items[this.start]; - }; - FixedDeque.prototype.peekLast = function() { - if (this.size === 0) - return; - var index2 = this.start + this.size - 1; - if (index2 > this.capacity) - index2 -= this.capacity; - return this.items[index2]; - }; - FixedDeque.prototype.get = function(index2) { - if (this.size === 0) - return; - index2 = this.start + index2; - if (index2 > this.capacity) - index2 -= this.capacity; - return this.items[index2]; - }; - FixedDeque.prototype.forEach = function(callback, scope) { - scope = arguments.length > 1 ? scope : this; - var c3 = this.capacity, l2 = this.size, i = this.start, j = 0; - while (j < l2) { - callback.call(scope, this.items[i], j, this); - i++; - j++; - if (i === c3) - i = 0; - } - }; - FixedDeque.prototype.toArray = function() { - var offset2 = this.start + this.size; - if (offset2 < this.capacity) - return this.items.slice(this.start, offset2); - var array = new this.ArrayClass(this.size), c3 = this.capacity, l2 = this.size, i = this.start, j = 0; - while (j < l2) { - array[j] = this.items[i]; - i++; - j++; - if (i === c3) - i = 0; - } - return array; - }; - FixedDeque.prototype.values = function() { - var items = this.items, c3 = this.capacity, l2 = this.size, i = this.start, j = 0; - return new Iterator(function() { - if (j >= l2) - return { - done: true - }; - var value = items[i]; - i++; - j++; - if (i === c3) - i = 0; - return { - value, - done: false - }; - }); - }; - FixedDeque.prototype.entries = function() { - var items = this.items, c3 = this.capacity, l2 = this.size, i = this.start, j = 0; - return new Iterator(function() { - if (j >= l2) - return { - done: true - }; - var value = items[i]; - i++; - if (i === c3) - i = 0; - return { - value: [j++, value], - done: false - }; - }); - }; - if (typeof Symbol !== "undefined") - FixedDeque.prototype[Symbol.iterator] = FixedDeque.prototype.values; - FixedDeque.prototype.inspect = function() { - var array = this.toArray(); - array.type = this.ArrayClass.name; - array.capacity = this.capacity; - Object.defineProperty(array, "constructor", { - value: FixedDeque, - enumerable: false - }); - return array; - }; - if (typeof Symbol !== "undefined") - FixedDeque.prototype[Symbol.for("nodejs.util.inspect.custom")] = FixedDeque.prototype.inspect; - FixedDeque.from = function(iterable, ArrayClass, capacity) { - if (arguments.length < 3) { - capacity = iterables.guessLength(iterable); - if (typeof capacity !== "number") - throw new Error("mnemonist/fixed-deque.from: could not guess iterable length. Please provide desired capacity as last argument."); - } - var deque = new FixedDeque(ArrayClass, capacity); - if (iterables.isArrayLike(iterable)) { - var i, l2; - for (i = 0, l2 = iterable.length; i < l2; i++) - deque.items[i] = iterable[i]; - deque.size = l2; - return deque; - } - iterables.forEach(iterable, function(value) { - deque.push(value); - }); - return deque; - }; - module2.exports = FixedDeque; - } -}); - -// node_modules/graphology-traversal/utils.js -var require_utils = __commonJS({ - "node_modules/graphology-traversal/utils.js"(exports) { - function TraversalRecord(node, attr2, depth) { - this.node = node; - this.attributes = attr2; - this.depth = depth; - } - exports.TraversalRecord = TraversalRecord; - } -}); - -// node_modules/graphology-traversal/bfs.js -var require_bfs = __commonJS({ - "node_modules/graphology-traversal/bfs.js"(exports) { - var isGraph = require_is_graph(); - var FixedDeque = require_fixed_deque(); - var TraversalRecord = require_utils().TraversalRecord; - function bfs(graph, callback) { - if (!isGraph(graph)) - throw new Error("graphology-traversal/bfs: expecting a graphology instance."); - if (typeof callback !== "function") - throw new Error("graphology-traversal/bfs: given callback is not a function."); - if (graph.order === 0) - return; - var seen = /* @__PURE__ */ new Set(); - var queue = new FixedDeque(Array, graph.order); - var record, depth; - function neighborCallback(neighbor, attr2) { - if (seen.has(neighbor)) - return; - seen.add(neighbor); - queue.push(new TraversalRecord(neighbor, attr2, depth + 1)); - } - graph.forEachNode(function(node, attr2) { - if (seen.has(node)) - return; - seen.add(node); - queue.push(new TraversalRecord(node, attr2, 0)); - while (queue.size !== 0) { - record = queue.shift(); - depth = record.depth; - callback(record.node, record.attributes, depth); - graph.forEachOutboundNeighbor(record.node, neighborCallback); - } - }); - } - function bfsFromNode(graph, node, callback) { - if (!isGraph(graph)) - throw new Error("graphology-traversal/dfs: expecting a graphology instance."); - if (typeof callback !== "function") - throw new Error("graphology-traversal/dfs: given callback is not a function."); - if (graph.order === 0) - return; - node = "" + node; - var seen = /* @__PURE__ */ new Set(); - var queue = new FixedDeque(Array, graph.order); - var depth, record; - function neighborCallback(neighbor, attr2) { - if (seen.has(neighbor)) - return; - seen.add(neighbor); - queue.push(new TraversalRecord(neighbor, attr2, depth + 1)); - } - seen.add(node); - queue.push(new TraversalRecord(node, graph.getNodeAttributes(node), 0)); - while (queue.size !== 0) { - record = queue.shift(); - depth = record.depth; - callback(record.node, record.attributes, depth); - graph.forEachOutboundNeighbor(record.node, neighborCallback); - } - } - exports.bfs = bfs; - exports.bfsFromNode = bfsFromNode; - } -}); - -// node_modules/graphology-traversal/dfs.js -var require_dfs = __commonJS({ - "node_modules/graphology-traversal/dfs.js"(exports) { - var isGraph = require_is_graph(); - var TraversalRecord = require_utils().TraversalRecord; - function dfs(graph, callback) { - if (!isGraph(graph)) - throw new Error("graphology-traversal/dfs: expecting a graphology instance."); - if (typeof callback !== "function") - throw new Error("graphology-traversal/dfs: given callback is not a function."); - if (graph.order === 0) - return; - var seen = /* @__PURE__ */ new Set(); - var stack = []; - var depth, record; - function neighborCallback(neighbor, attr2) { - if (seen.has(neighbor)) - return; - seen.add(neighbor); - stack.push(new TraversalRecord(neighbor, attr2, depth + 1)); - } - graph.forEachNode(function(node, attr2) { - if (seen.has(node)) - return; - seen.add(node); - stack.push(new TraversalRecord(node, attr2, 0)); - while (stack.length !== 0) { - record = stack.pop(); - depth = record.depth; - callback(record.node, record.attributes, depth); - graph.forEachOutboundNeighbor(record.node, neighborCallback); - } - }); - } - function dfsFromNode2(graph, node, callback) { - if (!isGraph(graph)) - throw new Error("graphology-traversal/dfs: expecting a graphology instance."); - if (typeof callback !== "function") - throw new Error("graphology-traversal/dfs: given callback is not a function."); - if (graph.order === 0) - return; - node = "" + node; - var seen = /* @__PURE__ */ new Set(); - var stack = []; - var depth, record; - function neighborCallback(neighbor, attr2) { - if (seen.has(neighbor)) - return; - seen.add(neighbor); - stack.push(new TraversalRecord(neighbor, attr2, depth + 1)); - } - seen.add(node); - stack.push(new TraversalRecord(node, graph.getNodeAttributes(node), 0)); - while (stack.length !== 0) { - record = stack.pop(); - depth = record.depth; - callback(record.node, record.attributes, depth); - graph.forEachOutboundNeighbor(record.node, neighborCallback); - } - } - exports.dfs = dfs; - exports.dfsFromNode = dfsFromNode2; - } -}); - -// node_modules/graphology-traversal/index.js -var require_graphology_traversal = __commonJS({ - "node_modules/graphology-traversal/index.js"(exports) { - var bfsModule = require_bfs(); - var dfsModule = require_dfs(); - var k; - for (k in bfsModule) - exports[k] = bfsModule[k]; - for (k in dfsModule) - exports[k] = dfsModule[k]; - } -}); - -// node_modules/lodash/lodash.js -var require_lodash = __commonJS({ - "node_modules/lodash/lodash.js"(exports, module2) { - (function() { - var undefined2; - var VERSION = "4.17.21"; - var LARGE_ARRAY_SIZE = 200; - var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`"; - var HASH_UNDEFINED = "__lodash_hash_undefined__"; - var MAX_MEMOIZE_SIZE = 500; - var PLACEHOLDER = "__lodash_placeholder__"; - var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4; - var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; - var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512; - var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "..."; - var HOT_COUNT = 800, HOT_SPAN = 16; - var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3; - var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0; - var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - var wrapFlags = [ - ["ary", WRAP_ARY_FLAG], - ["bind", WRAP_BIND_FLAG], - ["bindKey", WRAP_BIND_KEY_FLAG], - ["curry", WRAP_CURRY_FLAG], - ["curryRight", WRAP_CURRY_RIGHT_FLAG], - ["flip", WRAP_FLIP_FLAG], - ["partial", WRAP_PARTIAL_FLAG], - ["partialRight", WRAP_PARTIAL_RIGHT_FLAG], - ["rearg", WRAP_REARG_FLAG] - ]; - var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]"; - var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]"; - var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g; - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source); - var reTrimStart = /^\s+/; - var reWhitespace = /\s/; - var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /; - var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; - var reEscapeChar = /\\(\\)?/g; - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - var reFlags = /\w*$/; - var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - var reIsBinary = /^0b[01]+$/i; - var reIsHostCtor = /^\[object .+?Constructor\]$/; - var reIsOctal = /^0o[0-7]+$/i; - var reIsUint = /^(?:0|[1-9]\d*)$/; - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - var reNoMatch = /($^)/; - var reUnescapedString = /['\n\r\u2028\u2029\\]/g; - var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d"; - var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")"; - var reApos = RegExp(rsApos, "g"); - var reComboMark = RegExp(rsCombo, "g"); - var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"); - var reUnicodeWord = RegExp([ - rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")", - rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")", - rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower, - rsUpper + "+" + rsOptContrUpper, - rsOrdUpper, - rsOrdLower, - rsDigits, - rsEmoji - ].join("|"), "g"); - var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]"); - var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - var contextProps = [ - "Array", - "Buffer", - "DataView", - "Date", - "Error", - "Float32Array", - "Float64Array", - "Function", - "Int8Array", - "Int16Array", - "Int32Array", - "Map", - "Math", - "Object", - "Promise", - "RegExp", - "Set", - "String", - "Symbol", - "TypeError", - "Uint8Array", - "Uint8ClampedArray", - "Uint16Array", - "Uint32Array", - "WeakMap", - "_", - "clearTimeout", - "isFinite", - "parseInt", - "setTimeout" - ]; - var templateCounter = -1; - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; - var cloneableTags = {}; - cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; - cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false; - var deburredLetters = { - // Latin-1 Supplement block. - "\xC0": "A", - "\xC1": "A", - "\xC2": "A", - "\xC3": "A", - "\xC4": "A", - "\xC5": "A", - "\xE0": "a", - "\xE1": "a", - "\xE2": "a", - "\xE3": "a", - "\xE4": "a", - "\xE5": "a", - "\xC7": "C", - "\xE7": "c", - "\xD0": "D", - "\xF0": "d", - "\xC8": "E", - "\xC9": "E", - "\xCA": "E", - "\xCB": "E", - "\xE8": "e", - "\xE9": "e", - "\xEA": "e", - "\xEB": "e", - "\xCC": "I", - "\xCD": "I", - "\xCE": "I", - "\xCF": "I", - "\xEC": "i", - "\xED": "i", - "\xEE": "i", - "\xEF": "i", - "\xD1": "N", - "\xF1": "n", - "\xD2": "O", - "\xD3": "O", - "\xD4": "O", - "\xD5": "O", - "\xD6": "O", - "\xD8": "O", - "\xF2": "o", - "\xF3": "o", - "\xF4": "o", - "\xF5": "o", - "\xF6": "o", - "\xF8": "o", - "\xD9": "U", - "\xDA": "U", - "\xDB": "U", - "\xDC": "U", - "\xF9": "u", - "\xFA": "u", - "\xFB": "u", - "\xFC": "u", - "\xDD": "Y", - "\xFD": "y", - "\xFF": "y", - "\xC6": "Ae", - "\xE6": "ae", - "\xDE": "Th", - "\xFE": "th", - "\xDF": "ss", - // Latin Extended-A block. - "\u0100": "A", - "\u0102": "A", - "\u0104": "A", - "\u0101": "a", - "\u0103": "a", - "\u0105": "a", - "\u0106": "C", - "\u0108": "C", - "\u010A": "C", - "\u010C": "C", - "\u0107": "c", - "\u0109": "c", - "\u010B": "c", - "\u010D": "c", - "\u010E": "D", - "\u0110": "D", - "\u010F": "d", - "\u0111": "d", - "\u0112": "E", - "\u0114": "E", - "\u0116": "E", - "\u0118": "E", - "\u011A": "E", - "\u0113": "e", - "\u0115": "e", - "\u0117": "e", - "\u0119": "e", - "\u011B": "e", - "\u011C": "G", - "\u011E": "G", - "\u0120": "G", - "\u0122": "G", - "\u011D": "g", - "\u011F": "g", - "\u0121": "g", - "\u0123": "g", - "\u0124": "H", - "\u0126": "H", - "\u0125": "h", - "\u0127": "h", - "\u0128": "I", - "\u012A": "I", - "\u012C": "I", - "\u012E": "I", - "\u0130": "I", - "\u0129": "i", - "\u012B": "i", - "\u012D": "i", - "\u012F": "i", - "\u0131": "i", - "\u0134": "J", - "\u0135": "j", - "\u0136": "K", - "\u0137": "k", - "\u0138": "k", - "\u0139": "L", - "\u013B": "L", - "\u013D": "L", - "\u013F": "L", - "\u0141": "L", - "\u013A": "l", - "\u013C": "l", - "\u013E": "l", - "\u0140": "l", - "\u0142": "l", - "\u0143": "N", - "\u0145": "N", - "\u0147": "N", - "\u014A": "N", - "\u0144": "n", - "\u0146": "n", - "\u0148": "n", - "\u014B": "n", - "\u014C": "O", - "\u014E": "O", - "\u0150": "O", - "\u014D": "o", - "\u014F": "o", - "\u0151": "o", - "\u0154": "R", - "\u0156": "R", - "\u0158": "R", - "\u0155": "r", - "\u0157": "r", - "\u0159": "r", - "\u015A": "S", - "\u015C": "S", - "\u015E": "S", - "\u0160": "S", - "\u015B": "s", - "\u015D": "s", - "\u015F": "s", - "\u0161": "s", - "\u0162": "T", - "\u0164": "T", - "\u0166": "T", - "\u0163": "t", - "\u0165": "t", - "\u0167": "t", - "\u0168": "U", - "\u016A": "U", - "\u016C": "U", - "\u016E": "U", - "\u0170": "U", - "\u0172": "U", - "\u0169": "u", - "\u016B": "u", - "\u016D": "u", - "\u016F": "u", - "\u0171": "u", - "\u0173": "u", - "\u0174": "W", - "\u0175": "w", - "\u0176": "Y", - "\u0177": "y", - "\u0178": "Y", - "\u0179": "Z", - "\u017B": "Z", - "\u017D": "Z", - "\u017A": "z", - "\u017C": "z", - "\u017E": "z", - "\u0132": "IJ", - "\u0133": "ij", - "\u0152": "Oe", - "\u0153": "oe", - "\u0149": "'n", - "\u017F": "s" - }; - var htmlEscapes = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'" - }; - var htmlUnescapes = { - "&": "&", - "<": "<", - ">": ">", - """: '"', - "'": "'" - }; - var stringEscapes = { - "\\": "\\", - "'": "'", - "\n": "n", - "\r": "r", - "\u2028": "u2028", - "\u2029": "u2029" - }; - var freeParseFloat = parseFloat, freeParseInt = parseInt; - var freeGlobal = typeof global == "object" && global && global.Object === Object && global; - var freeSelf = typeof self == "object" && self && self.Object === Object && self; - var root2 = freeGlobal || freeSelf || Function("return this")(); - var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; - var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2; - var moduleExports = freeModule && freeModule.exports === freeExports; - var freeProcess = moduleExports && freeGlobal.process; - var nodeUtil = function() { - try { - var types = freeModule && freeModule.require && freeModule.require("util").types; - if (types) { - return types; - } - return freeProcess && freeProcess.binding && freeProcess.binding("util"); - } catch (e) { - } - }(); - var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - function apply(func, thisArg, args) { - switch (args.length) { - case 0: - return func.call(thisArg); - case 1: - return func.call(thisArg, args[0]); - case 2: - return func.call(thisArg, args[0], args[1]); - case 3: - return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); - } - function arrayAggregator(array, setter, iteratee, accumulator) { - var index2 = -1, length = array == null ? 0 : array.length; - while (++index2 < length) { - var value = array[index2]; - setter(accumulator, value, iteratee(value), array); - } - return accumulator; - } - function arrayEach(array, iteratee) { - var index2 = -1, length = array == null ? 0 : array.length; - while (++index2 < length) { - if (iteratee(array[index2], index2, array) === false) { - break; - } - } - return array; - } - function arrayEachRight(array, iteratee) { - var length = array == null ? 0 : array.length; - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } - } - return array; - } - function arrayEvery(array, predicate) { - var index2 = -1, length = array == null ? 0 : array.length; - while (++index2 < length) { - if (!predicate(array[index2], index2, array)) { - return false; - } - } - return true; - } - function arrayFilter(array, predicate) { - var index2 = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; - while (++index2 < length) { - var value = array[index2]; - if (predicate(value, index2, array)) { - result[resIndex++] = value; - } - } - return result; - } - function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; - } - function arrayIncludesWith(array, value, comparator) { - var index2 = -1, length = array == null ? 0 : array.length; - while (++index2 < length) { - if (comparator(value, array[index2])) { - return true; - } - } - return false; - } - function arrayMap(array, iteratee) { - var index2 = -1, length = array == null ? 0 : array.length, result = Array(length); - while (++index2 < length) { - result[index2] = iteratee(array[index2], index2, array); - } - return result; - } - function arrayPush(array, values) { - var index2 = -1, length = values.length, offset2 = array.length; - while (++index2 < length) { - array[offset2 + index2] = values[index2]; - } - return array; - } - function arrayReduce(array, iteratee, accumulator, initAccum) { - var index2 = -1, length = array == null ? 0 : array.length; - if (initAccum && length) { - accumulator = array[++index2]; - } - while (++index2 < length) { - accumulator = iteratee(accumulator, array[index2], index2, array); - } - return accumulator; - } - function arrayReduceRight(array, iteratee, accumulator, initAccum) { - var length = array == null ? 0 : array.length; - if (initAccum && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; - } - function arraySome(array, predicate) { - var index2 = -1, length = array == null ? 0 : array.length; - while (++index2 < length) { - if (predicate(array[index2], index2, array)) { - return true; - } - } - return false; - } - var asciiSize = baseProperty("length"); - function asciiToArray(string) { - return string.split(""); - } - function asciiWords(string) { - return string.match(reAsciiWord) || []; - } - function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection2) { - if (predicate(value, key, collection2)) { - result = key; - return false; - } - }); - return result; - } - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, index2 = fromIndex + (fromRight ? 1 : -1); - while (fromRight ? index2-- : ++index2 < length) { - if (predicate(array[index2], index2, array)) { - return index2; - } - } - return -1; - } - function baseIndexOf(array, value, fromIndex) { - return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex); - } - function baseIndexOfWith(array, value, fromIndex, comparator) { - var index2 = fromIndex - 1, length = array.length; - while (++index2 < length) { - if (comparator(array[index2], value)) { - return index2; - } - } - return -1; - } - function baseIsNaN(value) { - return value !== value; - } - function baseMean(array, iteratee) { - var length = array == null ? 0 : array.length; - return length ? baseSum(array, iteratee) / length : NAN; - } - function baseProperty(key) { - return function(object) { - return object == null ? undefined2 : object[key]; - }; - } - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined2 : object[key]; - }; - } - function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index2, collection2) { - accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index2, collection2); - }); - return accumulator; - } - function baseSortBy(array, comparer) { - var length = array.length; - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; - } - function baseSum(array, iteratee) { - var result, index2 = -1, length = array.length; - while (++index2 < length) { - var current = iteratee(array[index2]); - if (current !== undefined2) { - result = result === undefined2 ? current : result + current; - } - } - return result; - } - function baseTimes(n2, iteratee) { - var index2 = -1, result = Array(n2); - while (++index2 < n2) { - result[index2] = iteratee(index2); - } - return result; - } - function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); - } - function baseTrim(string) { - return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string; - } - function baseUnary(func) { - return function(value) { - return func(value); - }; - } - function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); - } - function cacheHas(cache, key) { - return cache.has(key); - } - function charsStartIndex(strSymbols, chrSymbols) { - var index2 = -1, length = strSymbols.length; - while (++index2 < length && baseIndexOf(chrSymbols, strSymbols[index2], 0) > -1) { - } - return index2; - } - function charsEndIndex(strSymbols, chrSymbols) { - var index2 = strSymbols.length; - while (index2-- && baseIndexOf(chrSymbols, strSymbols[index2], 0) > -1) { - } - return index2; - } - function countHolders(array, placeholder) { - var length = array.length, result = 0; - while (length--) { - if (array[length] === placeholder) { - ++result; - } - } - return result; - } - var deburrLetter = basePropertyOf(deburredLetters); - var escapeHtmlChar = basePropertyOf(htmlEscapes); - function escapeStringChar(chr) { - return "\\" + stringEscapes[chr]; - } - function getValue(object, key) { - return object == null ? undefined2 : object[key]; - } - function hasUnicode(string) { - return reHasUnicode.test(string); - } - function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); - } - function iteratorToArray(iterator) { - var data, result = []; - while (!(data = iterator.next()).done) { - result.push(data.value); - } - return result; - } - function mapToArray(map2) { - var index2 = -1, result = Array(map2.size); - map2.forEach(function(value, key) { - result[++index2] = [key, value]; - }); - return result; - } - function overArg(func, transform2) { - return function(arg) { - return func(transform2(arg)); - }; - } - function replaceHolders(array, placeholder) { - var index2 = -1, length = array.length, resIndex = 0, result = []; - while (++index2 < length) { - var value = array[index2]; - if (value === placeholder || value === PLACEHOLDER) { - array[index2] = PLACEHOLDER; - result[resIndex++] = index2; - } - } - return result; - } - function setToArray(set3) { - var index2 = -1, result = Array(set3.size); - set3.forEach(function(value) { - result[++index2] = value; - }); - return result; - } - function setToPairs(set3) { - var index2 = -1, result = Array(set3.size); - set3.forEach(function(value) { - result[++index2] = [value, value]; - }); - return result; - } - function strictIndexOf(array, value, fromIndex) { - var index2 = fromIndex - 1, length = array.length; - while (++index2 < length) { - if (array[index2] === value) { - return index2; - } - } - return -1; - } - function strictLastIndexOf(array, value, fromIndex) { - var index2 = fromIndex + 1; - while (index2--) { - if (array[index2] === value) { - return index2; - } - } - return index2; - } - function stringSize(string) { - return hasUnicode(string) ? unicodeSize(string) : asciiSize(string); - } - function stringToArray(string) { - return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string); - } - function trimmedEndIndex(string) { - var index2 = string.length; - while (index2-- && reWhitespace.test(string.charAt(index2))) { - } - return index2; - } - var unescapeHtmlChar = basePropertyOf(htmlUnescapes); - function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - ++result; - } - return result; - } - function unicodeToArray(string) { - return string.match(reUnicode) || []; - } - function unicodeWords(string) { - return string.match(reUnicodeWord) || []; - } - var runInContext = function runInContext2(context) { - context = context == null ? root2 : _.defaults(root2.Object(), context, _.pick(root2, contextProps)); - var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError; - var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype; - var coreJsData = context["__core-js_shared__"]; - var funcToString = funcProto.toString; - var hasOwnProperty2 = objectProto.hasOwnProperty; - var idCounter = 0; - var maskSrcKey = function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); - return uid ? "Symbol(src)_1." + uid : ""; - }(); - var nativeObjectToString = objectProto.toString; - var objectCtorString = funcToString.call(Object2); - var oldDash = root2._; - var reIsNative = RegExp2( - "^" + funcToString.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" - ); - var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2; - var defineProperty = function() { - try { - var func = getNative(Object2, "defineProperty"); - func({}, "", {}); - return func; - } catch (e) { - } - }(); - var ctxClearTimeout = context.clearTimeout !== root2.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root2.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root2.setTimeout && context.setTimeout; - var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse; - var DataView2 = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create"); - var metaMap = WeakMap2 && new WeakMap2(); - var realNames = {}; - var dataViewCtorString = toSource(DataView2), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2); - var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2; - function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; - } - if (hasOwnProperty2.call(value, "__wrapped__")) { - return wrapperClone(value); - } - } - return new LodashWrapper(value); - } - var baseCreate = function() { - function object() { - } - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result2 = new object(); - object.prototype = undefined2; - return result2; - }; - }(); - function baseLodash() { - } - function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = undefined2; - } - lodash.templateSettings = { - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - "escape": reEscape, - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - "evaluate": reEvaluate, - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - "interpolate": reInterpolate, - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type {string} - */ - "variable": "", - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type {Object} - */ - "imports": { - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type {Function} - */ - "_": lodash - } - }; - lodash.prototype = baseLodash.prototype; - lodash.prototype.constructor = lodash; - LodashWrapper.prototype = baseCreate(baseLodash.prototype); - LodashWrapper.prototype.constructor = LodashWrapper; - function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; - } - function lazyClone() { - var result2 = new LazyWrapper(this.__wrapped__); - result2.__actions__ = copyArray(this.__actions__); - result2.__dir__ = this.__dir__; - result2.__filtered__ = this.__filtered__; - result2.__iteratees__ = copyArray(this.__iteratees__); - result2.__takeCount__ = this.__takeCount__; - result2.__views__ = copyArray(this.__views__); - return result2; - } - function lazyReverse() { - if (this.__filtered__) { - var result2 = new LazyWrapper(this); - result2.__dir__ = -1; - result2.__filtered__ = true; - } else { - result2 = this.clone(); - result2.__dir__ *= -1; - } - return result2; - } - function lazyValue() { - var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start2 = view.start, end = view.end, length = end - start2, index2 = isRight ? end : start2 - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__); - if (!isArr || !isRight && arrLength == length && takeCount == length) { - return baseWrapperValue(array, this.__actions__); - } - var result2 = []; - outer: - while (length-- && resIndex < takeCount) { - index2 += dir; - var iterIndex = -1, value = array[index2]; - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], iteratee2 = data.iteratee, type2 = data.type, computed = iteratee2(value); - if (type2 == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type2 == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result2[resIndex++] = value; - } - return result2; - } - LazyWrapper.prototype = baseCreate(baseLodash.prototype); - LazyWrapper.prototype.constructor = LazyWrapper; - function Hash(entries) { - var index2 = -1, length = entries == null ? 0 : entries.length; - this.clear(); - while (++index2 < length) { - var entry = entries[index2]; - this.set(entry[0], entry[1]); - } - } - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; - } - function hashDelete(key) { - var result2 = this.has(key) && delete this.__data__[key]; - this.size -= result2 ? 1 : 0; - return result2; - } - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result2 = data[key]; - return result2 === HASH_UNDEFINED ? undefined2 : result2; - } - return hasOwnProperty2.call(data, key) ? data[key] : undefined2; - } - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== undefined2 : hasOwnProperty2.call(data, key); - } - function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = nativeCreate && value === undefined2 ? HASH_UNDEFINED : value; - return this; - } - Hash.prototype.clear = hashClear; - Hash.prototype["delete"] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - function ListCache(entries) { - var index2 = -1, length = entries == null ? 0 : entries.length; - this.clear(); - while (++index2 < length) { - var entry = entries[index2]; - this.set(entry[0], entry[1]); - } - } - function listCacheClear() { - this.__data__ = []; - this.size = 0; - } - function listCacheDelete(key) { - var data = this.__data__, index2 = assocIndexOf(data, key); - if (index2 < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index2 == lastIndex) { - data.pop(); - } else { - splice.call(data, index2, 1); - } - --this.size; - return true; - } - function listCacheGet(key) { - var data = this.__data__, index2 = assocIndexOf(data, key); - return index2 < 0 ? undefined2 : data[index2][1]; - } - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - function listCacheSet(key, value) { - var data = this.__data__, index2 = assocIndexOf(data, key); - if (index2 < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index2][1] = value; - } - return this; - } - ListCache.prototype.clear = listCacheClear; - ListCache.prototype["delete"] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - function MapCache(entries) { - var index2 = -1, length = entries == null ? 0 : entries.length; - this.clear(); - while (++index2 < length) { - var entry = entries[index2]; - this.set(entry[0], entry[1]); - } - } - function mapCacheClear() { - this.size = 0; - this.__data__ = { - "hash": new Hash(), - "map": new (Map2 || ListCache)(), - "string": new Hash() - }; - } - function mapCacheDelete(key) { - var result2 = getMapData(this, key)["delete"](key); - this.size -= result2 ? 1 : 0; - return result2; - } - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - function mapCacheSet(key, value) { - var data = getMapData(this, key), size2 = data.size; - data.set(key, value); - this.size += data.size == size2 ? 0 : 1; - return this; - } - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype["delete"] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - function SetCache(values2) { - var index2 = -1, length = values2 == null ? 0 : values2.length; - this.__data__ = new MapCache(); - while (++index2 < length) { - this.add(values2[index2]); - } - } - function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; - } - function setCacheHas(value) { - return this.__data__.has(value); - } - SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; - SetCache.prototype.has = setCacheHas; - function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; - } - function stackClear() { - this.__data__ = new ListCache(); - this.size = 0; - } - function stackDelete(key) { - var data = this.__data__, result2 = data["delete"](key); - this.size = data.size; - return result2; - } - function stackGet(key) { - return this.__data__.get(key); - } - function stackHas(key) { - return this.__data__.has(key); - } - function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; - } - Stack.prototype.clear = stackClear; - Stack.prototype["delete"] = stackDelete; - Stack.prototype.get = stackGet; - Stack.prototype.has = stackHas; - Stack.prototype.set = stackSet; - function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length; - for (var key in value) { - if ((inherited || hasOwnProperty2.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode. - (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers. - isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays. - isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties. - isIndex(key, length)))) { - result2.push(key); - } - } - return result2; - } - function arraySample(array) { - var length = array.length; - return length ? array[baseRandom(0, length - 1)] : undefined2; - } - function arraySampleSize(array, n2) { - return shuffleSelf(copyArray(array), baseClamp(n2, 0, array.length)); - } - function arrayShuffle(array) { - return shuffleSelf(copyArray(array)); - } - function assignMergeValue(object, key, value) { - if (value !== undefined2 && !eq(object[key], value) || value === undefined2 && !(key in object)) { - baseAssignValue(object, key, value); - } - } - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty2.call(object, key) && eq(objValue, value)) || value === undefined2 && !(key in object)) { - baseAssignValue(object, key, value); - } - } - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - function baseAggregator(collection, setter, iteratee2, accumulator) { - baseEach(collection, function(value, key, collection2) { - setter(accumulator, value, iteratee2(value), collection2); - }); - return accumulator; - } - function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); - } - function baseAssignIn(object, source) { - return object && copyObject(source, keysIn(source), object); - } - function baseAssignValue(object, key, value) { - if (key == "__proto__" && defineProperty) { - defineProperty(object, key, { - "configurable": true, - "enumerable": true, - "value": value, - "writable": true - }); - } else { - object[key] = value; - } - } - function baseAt(object, paths) { - var index2 = -1, length = paths.length, result2 = Array2(length), skip = object == null; - while (++index2 < length) { - result2[index2] = skip ? undefined2 : get3(object, paths[index2]); - } - return result2; - } - function baseClamp(number3, lower2, upper) { - if (number3 === number3) { - if (upper !== undefined2) { - number3 = number3 <= upper ? number3 : upper; - } - if (lower2 !== undefined2) { - number3 = number3 >= lower2 ? number3 : lower2; - } - } - return number3; - } - function baseClone(value, bitmask, customizer, key, object, stack) { - var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG; - if (customizer) { - result2 = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result2 !== undefined2) { - return result2; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result2 = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result2); - } - } else { - var tag = getTag(value), isFunc = tag == funcTag || tag == genTag; - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || isFunc && !object) { - result2 = isFlat || isFunc ? {} : initCloneObject(value); - if (!isDeep) { - return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result2 = initCloneByTag(value, tag, isDeep); - } - } - stack || (stack = new Stack()); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result2); - if (isSet(value)) { - value.forEach(function(subValue) { - result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - } else if (isMap(value)) { - value.forEach(function(subValue, key2) { - result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); - }); - } - var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys; - var props = isArr ? undefined2 : keysFunc(value); - arrayEach(props || value, function(subValue, key2) { - if (props) { - key2 = subValue; - subValue = value[key2]; - } - assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); - }); - return result2; - } - function baseConforms(source) { - var props = keys(source); - return function(object) { - return baseConformsTo(object, source, props); - }; - } - function baseConformsTo(object, source, props) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object2(object); - while (length--) { - var key = props[length], predicate = source[key], value = object[key]; - if (value === undefined2 && !(key in object) || !predicate(value)) { - return false; - } - } - return true; - } - function baseDelay(func, wait2, args) { - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - return setTimeout2(function() { - func.apply(undefined2, args); - }, wait2); - } - function baseDifference(array, values2, iteratee2, comparator) { - var index2 = -1, includes2 = arrayIncludes, isCommon = true, length = array.length, result2 = [], valuesLength = values2.length; - if (!length) { - return result2; - } - if (iteratee2) { - values2 = arrayMap(values2, baseUnary(iteratee2)); - } - if (comparator) { - includes2 = arrayIncludesWith; - isCommon = false; - } else if (values2.length >= LARGE_ARRAY_SIZE) { - includes2 = cacheHas; - isCommon = false; - values2 = new SetCache(values2); - } - outer: - while (++index2 < length) { - var value = array[index2], computed = iteratee2 == null ? value : iteratee2(value); - value = comparator || value !== 0 ? value : 0; - if (isCommon && computed === computed) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values2[valuesIndex] === computed) { - continue outer; - } - } - result2.push(value); - } else if (!includes2(values2, computed, comparator)) { - result2.push(value); - } - } - return result2; - } - var baseEach = createBaseEach(baseForOwn); - var baseEachRight = createBaseEach(baseForOwnRight, true); - function baseEvery(collection, predicate) { - var result2 = true; - baseEach(collection, function(value, index2, collection2) { - result2 = !!predicate(value, index2, collection2); - return result2; - }); - return result2; - } - function baseExtremum(array, iteratee2, comparator) { - var index2 = -1, length = array.length; - while (++index2 < length) { - var value = array[index2], current = iteratee2(value); - if (current != null && (computed === undefined2 ? current === current && !isSymbol(current) : comparator(current, computed))) { - var computed = current, result2 = value; - } - } - return result2; - } - function baseFill(array, value, start2, end) { - var length = array.length; - start2 = toInteger(start2); - if (start2 < 0) { - start2 = -start2 > length ? 0 : length + start2; - } - end = end === undefined2 || end > length ? length : toInteger(end); - if (end < 0) { - end += length; - } - end = start2 > end ? 0 : toLength(end); - while (start2 < end) { - array[start2++] = value; - } - return array; - } - function baseFilter(collection, predicate) { - var result2 = []; - baseEach(collection, function(value, index2, collection2) { - if (predicate(value, index2, collection2)) { - result2.push(value); - } - }); - return result2; - } - function baseFlatten(array, depth, predicate, isStrict, result2) { - var index2 = -1, length = array.length; - predicate || (predicate = isFlattenable); - result2 || (result2 = []); - while (++index2 < length) { - var value = array[index2]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - baseFlatten(value, depth - 1, predicate, isStrict, result2); - } else { - arrayPush(result2, value); - } - } else if (!isStrict) { - result2[result2.length] = value; - } - } - return result2; - } - var baseFor = createBaseFor(); - var baseForRight = createBaseFor(true); - function baseForOwn(object, iteratee2) { - return object && baseFor(object, iteratee2, keys); - } - function baseForOwnRight(object, iteratee2) { - return object && baseForRight(object, iteratee2, keys); - } - function baseFunctions(object, props) { - return arrayFilter(props, function(key) { - return isFunction(object[key]); - }); - } - function baseGet(object, path2) { - path2 = castPath(path2, object); - var index2 = 0, length = path2.length; - while (object != null && index2 < length) { - object = object[toKey(path2[index2++])]; - } - return index2 && index2 == length ? object : undefined2; - } - function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result2 = keysFunc(object); - return isArray(object) ? result2 : arrayPush(result2, symbolsFunc(object)); - } - function baseGetTag(value) { - if (value == null) { - return value === undefined2 ? undefinedTag : nullTag; - } - return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString(value); - } - function baseGt(value, other) { - return value > other; - } - function baseHas(object, key) { - return object != null && hasOwnProperty2.call(object, key); - } - function baseHasIn(object, key) { - return object != null && key in Object2(object); - } - function baseInRange(number3, start2, end) { - return number3 >= nativeMin(start2, end) && number3 < nativeMax(start2, end); - } - function baseIntersection(arrays, iteratee2, comparator) { - var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = []; - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee2) { - array = arrayMap(array, baseUnary(iteratee2)); - } - maxLength = nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined2; - } - array = arrays[0]; - var index2 = -1, seen = caches[0]; - outer: - while (++index2 < length && result2.length < maxLength) { - var value = array[index2], computed = iteratee2 ? iteratee2(value) : value; - value = comparator || value !== 0 ? value : 0; - if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache ? cacheHas(cache, computed) : includes2(arrays[othIndex], computed, comparator))) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result2.push(value); - } - } - return result2; - } - function baseInverter(object, setter, iteratee2, accumulator) { - baseForOwn(object, function(value, key, object2) { - setter(accumulator, iteratee2(value), key, object2); - }); - return accumulator; - } - function baseInvoke(object, path2, args) { - path2 = castPath(path2, object); - object = parent(object, path2); - var func = object == null ? object : object[toKey(last(path2))]; - return func == null ? undefined2 : apply(func, object, args); - } - function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; - } - function baseIsArrayBuffer(value) { - return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; - } - function baseIsDate(value) { - return isObjectLike(value) && baseGetTag(value) == dateTag; - } - function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); - } - function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other); - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; - var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag; - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack()); - return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty2.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty2.call(other, "__wrapped__"); - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other; - stack || (stack = new Stack()); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack()); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); - } - function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; - } - function baseIsMatch(object, source, matchData, customizer) { - var index2 = matchData.length, length = index2, noCustomizer = !customizer; - if (object == null) { - return !length; - } - object = Object2(object); - while (index2--) { - var data = matchData[index2]; - if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) { - return false; - } - } - while (++index2 < length) { - data = matchData[index2]; - var key = data[0], objValue = object[key], srcValue = data[1]; - if (noCustomizer && data[2]) { - if (objValue === undefined2 && !(key in object)) { - return false; - } - } else { - var stack = new Stack(); - if (customizer) { - var result2 = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result2 === undefined2 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) { - return false; - } - } - } - return true; - } - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - function baseIsRegExp(value) { - return isObjectLike(value) && baseGetTag(value) == regexpTag; - } - function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; - } - function baseIsTypedArray(value) { - return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; - } - function baseIteratee(value) { - if (typeof value == "function") { - return value; - } - if (value == null) { - return identity4; - } - if (typeof value == "object") { - return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value); - } - return property(value); - } - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result2 = []; - for (var key in Object2(object)) { - if (hasOwnProperty2.call(object, key) && key != "constructor") { - result2.push(key); - } - } - return result2; - } - function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), result2 = []; - for (var key in object) { - if (!(key == "constructor" && (isProto || !hasOwnProperty2.call(object, key)))) { - result2.push(key); - } - } - return result2; - } - function baseLt(value, other) { - return value < other; - } - function baseMap(collection, iteratee2) { - var index2 = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : []; - baseEach(collection, function(value, key, collection2) { - result2[++index2] = iteratee2(value, key, collection2); - }); - return result2; - } - function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; - } - function baseMatchesProperty(path2, srcValue) { - if (isKey(path2) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path2), srcValue); - } - return function(object) { - var objValue = get3(object, path2); - return objValue === undefined2 && objValue === srcValue ? hasIn(object, path2) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; - } - function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack()); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } else { - var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined2; - if (newValue === undefined2) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); - } - function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue); - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined2; - var isCommon = newValue === undefined2; - if (isCommon) { - var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue); - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } else { - newValue = []; - } - } else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } else { - isCommon = false; - } - } - if (isCommon) { - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack["delete"](srcValue); - } - assignMergeValue(object, key, newValue); - } - function baseNth(array, n2) { - var length = array.length; - if (!length) { - return; - } - n2 += n2 < 0 ? length : 0; - return isIndex(n2, length) ? array[n2] : undefined2; - } - function baseOrderBy(collection, iteratees, orders) { - if (iteratees.length) { - iteratees = arrayMap(iteratees, function(iteratee2) { - if (isArray(iteratee2)) { - return function(value) { - return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2); - }; - } - return iteratee2; - }); - } else { - iteratees = [identity4]; - } - var index2 = -1; - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - var result2 = baseMap(collection, function(value, key, collection2) { - var criteria = arrayMap(iteratees, function(iteratee2) { - return iteratee2(value); - }); - return { "criteria": criteria, "index": ++index2, "value": value }; - }); - return baseSortBy(result2, function(object, other) { - return compareMultiple(object, other, orders); - }); - } - function basePick(object, paths) { - return basePickBy(object, paths, function(value, path2) { - return hasIn(object, path2); - }); - } - function basePickBy(object, paths, predicate) { - var index2 = -1, length = paths.length, result2 = {}; - while (++index2 < length) { - var path2 = paths[index2], value = baseGet(object, path2); - if (predicate(value, path2)) { - baseSet(result2, castPath(path2, object), value); - } - } - return result2; - } - function basePropertyDeep(path2) { - return function(object) { - return baseGet(object, path2); - }; - } - function basePullAll(array, values2, iteratee2, comparator) { - var indexOf2 = comparator ? baseIndexOfWith : baseIndexOf, index2 = -1, length = values2.length, seen = array; - if (array === values2) { - values2 = copyArray(values2); - } - if (iteratee2) { - seen = arrayMap(array, baseUnary(iteratee2)); - } - while (++index2 < length) { - var fromIndex = 0, value = values2[index2], computed = iteratee2 ? iteratee2(value) : value; - while ((fromIndex = indexOf2(seen, computed, fromIndex, comparator)) > -1) { - if (seen !== array) { - splice.call(seen, fromIndex, 1); - } - splice.call(array, fromIndex, 1); - } - } - return array; - } - function basePullAt(array, indexes) { - var length = array ? indexes.length : 0, lastIndex = length - 1; - while (length--) { - var index2 = indexes[length]; - if (length == lastIndex || index2 !== previous) { - var previous = index2; - if (isIndex(index2)) { - splice.call(array, index2, 1); - } else { - baseUnset(array, index2); - } - } - } - return array; - } - function baseRandom(lower2, upper) { - return lower2 + nativeFloor(nativeRandom() * (upper - lower2 + 1)); - } - function baseRange(start2, end, step, fromRight) { - var index2 = -1, length = nativeMax(nativeCeil((end - start2) / (step || 1)), 0), result2 = Array2(length); - while (length--) { - result2[fromRight ? length : ++index2] = start2; - start2 += step; - } - return result2; - } - function baseRepeat(string, n2) { - var result2 = ""; - if (!string || n2 < 1 || n2 > MAX_SAFE_INTEGER) { - return result2; - } - do { - if (n2 % 2) { - result2 += string; - } - n2 = nativeFloor(n2 / 2); - if (n2) { - string += string; - } - } while (n2); - return result2; - } - function baseRest(func, start2) { - return setToString(overRest(func, start2, identity4), func + ""); - } - function baseSample(collection) { - return arraySample(values(collection)); - } - function baseSampleSize(collection, n2) { - var array = values(collection); - return shuffleSelf(array, baseClamp(n2, 0, array.length)); - } - function baseSet(object, path2, value, customizer) { - if (!isObject(object)) { - return object; - } - path2 = castPath(path2, object); - var index2 = -1, length = path2.length, lastIndex = length - 1, nested = object; - while (nested != null && ++index2 < length) { - var key = toKey(path2[index2]), newValue = value; - if (key === "__proto__" || key === "constructor" || key === "prototype") { - return object; - } - if (index2 != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined2; - if (newValue === undefined2) { - newValue = isObject(objValue) ? objValue : isIndex(path2[index2 + 1]) ? [] : {}; - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; - } - var baseSetData = !metaMap ? identity4 : function(func, data) { - metaMap.set(func, data); - return func; - }; - var baseSetToString = !defineProperty ? identity4 : function(func, string) { - return defineProperty(func, "toString", { - "configurable": true, - "enumerable": false, - "value": constant(string), - "writable": true - }); - }; - function baseShuffle(collection) { - return shuffleSelf(values(collection)); - } - function baseSlice(array, start2, end) { - var index2 = -1, length = array.length; - if (start2 < 0) { - start2 = -start2 > length ? 0 : length + start2; - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start2 > end ? 0 : end - start2 >>> 0; - start2 >>>= 0; - var result2 = Array2(length); - while (++index2 < length) { - result2[index2] = array[index2 + start2]; - } - return result2; - } - function baseSome(collection, predicate) { - var result2; - baseEach(collection, function(value, index2, collection2) { - result2 = predicate(value, index2, collection2); - return !result2; - }); - return !!result2; - } - function baseSortedIndex(array, value, retHighest) { - var low = 0, high = array == null ? low : array.length; - if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = low + high >>> 1, computed = array[mid]; - if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy(array, value, identity4, retHighest); - } - function baseSortedIndexBy(array, value, iteratee2, retHighest) { - var low = 0, high = array == null ? 0 : array.length; - if (high === 0) { - return 0; - } - value = iteratee2(value); - var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined2; - while (low < high) { - var mid = nativeFloor((low + high) / 2), computed = iteratee2(array[mid]), othIsDefined = computed !== undefined2, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol(computed); - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? computed <= value : computed < value; - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); - } - function baseSortedUniq(array, iteratee2) { - var index2 = -1, length = array.length, resIndex = 0, result2 = []; - while (++index2 < length) { - var value = array[index2], computed = iteratee2 ? iteratee2(value) : value; - if (!index2 || !eq(computed, seen)) { - var seen = computed; - result2[resIndex++] = value === 0 ? 0 : value; - } - } - return result2; - } - function baseToNumber(value) { - if (typeof value == "number") { - return value; - } - if (isSymbol(value)) { - return NAN; - } - return +value; - } - function baseToString(value) { - if (typeof value == "string") { - return value; - } - if (isArray(value)) { - return arrayMap(value, baseToString) + ""; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ""; - } - var result2 = value + ""; - return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; - } - function baseUniq(array, iteratee2, comparator) { - var index2 = -1, includes2 = arrayIncludes, length = array.length, isCommon = true, result2 = [], seen = result2; - if (comparator) { - isCommon = false; - includes2 = arrayIncludesWith; - } else if (length >= LARGE_ARRAY_SIZE) { - var set4 = iteratee2 ? null : createSet(array); - if (set4) { - return setToArray(set4); - } - isCommon = false; - includes2 = cacheHas; - seen = new SetCache(); - } else { - seen = iteratee2 ? [] : result2; - } - outer: - while (++index2 < length) { - var value = array[index2], computed = iteratee2 ? iteratee2(value) : value; - value = comparator || value !== 0 ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee2) { - seen.push(computed); - } - result2.push(value); - } else if (!includes2(seen, computed, comparator)) { - if (seen !== result2) { - seen.push(computed); - } - result2.push(value); - } - } - return result2; - } - function baseUnset(object, path2) { - path2 = castPath(path2, object); - object = parent(object, path2); - return object == null || delete object[toKey(last(path2))]; - } - function baseUpdate(object, path2, updater, customizer) { - return baseSet(object, path2, updater(baseGet(object, path2)), customizer); - } - function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, index2 = fromRight ? length : -1; - while ((fromRight ? index2-- : ++index2 < length) && predicate(array[index2], index2, array)) { - } - return isDrop ? baseSlice(array, fromRight ? 0 : index2, fromRight ? index2 + 1 : length) : baseSlice(array, fromRight ? index2 + 1 : 0, fromRight ? length : index2); - } - function baseWrapperValue(value, actions) { - var result2 = value; - if (result2 instanceof LazyWrapper) { - result2 = result2.value(); - } - return arrayReduce(actions, function(result3, action) { - return action.func.apply(action.thisArg, arrayPush([result3], action.args)); - }, result2); - } - function baseXor(arrays, iteratee2, comparator) { - var length = arrays.length; - if (length < 2) { - return length ? baseUniq(arrays[0]) : []; - } - var index2 = -1, result2 = Array2(length); - while (++index2 < length) { - var array = arrays[index2], othIndex = -1; - while (++othIndex < length) { - if (othIndex != index2) { - result2[index2] = baseDifference(result2[index2] || array, arrays[othIndex], iteratee2, comparator); - } - } - } - return baseUniq(baseFlatten(result2, 1), iteratee2, comparator); - } - function baseZipObject(props, values2, assignFunc) { - var index2 = -1, length = props.length, valsLength = values2.length, result2 = {}; - while (++index2 < length) { - var value = index2 < valsLength ? values2[index2] : undefined2; - assignFunc(result2, props[index2], value); - } - return result2; - } - function castArrayLikeObject(value) { - return isArrayLikeObject(value) ? value : []; - } - function castFunction(value) { - return typeof value == "function" ? value : identity4; - } - function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); - } - var castRest = baseRest; - function castSlice(array, start2, end) { - var length = array.length; - end = end === undefined2 ? length : end; - return !start2 && end >= length ? array : baseSlice(array, start2, end); - } - var clearTimeout2 = ctxClearTimeout || function(id2) { - return root2.clearTimeout(id2); - }; - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, result2 = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - buffer.copy(result2); - return result2; - } - function cloneArrayBuffer(arrayBuffer) { - var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer)); - return result2; - } - function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); - } - function cloneRegExp(regexp) { - var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result2.lastIndex = regexp.lastIndex; - return result2; - } - function cloneSymbol(symbol) { - return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {}; - } - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); - } - function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined2, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value); - var othIsDefined = other !== undefined2, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other); - if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) { - return 1; - } - if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) { - return -1; - } - } - return 0; - } - function compareMultiple(object, other, orders) { - var index2 = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length; - while (++index2 < length) { - var result2 = compareAscending(objCriteria[index2], othCriteria[index2]); - if (result2) { - if (index2 >= ordersLength) { - return result2; - } - var order = orders[index2]; - return result2 * (order == "desc" ? -1 : 1); - } - } - return object.index - other.index; - } - function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried; - while (++leftIndex < leftLength) { - result2[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result2[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result2[leftIndex++] = args[argsIndex++]; - } - return result2; - } - function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried; - while (++argsIndex < rangeLength) { - result2[argsIndex] = args[argsIndex]; - } - var offset2 = argsIndex; - while (++rightIndex < rightLength) { - result2[offset2 + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result2[offset2 + holders[holdersIndex]] = args[argsIndex++]; - } - } - return result2; - } - function copyArray(source, array) { - var index2 = -1, length = source.length; - array || (array = Array2(length)); - while (++index2 < length) { - array[index2] = source[index2]; - } - return array; - } - function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - var index2 = -1, length = props.length; - while (++index2 < length) { - var key = props[index2]; - var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined2; - if (newValue === undefined2) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; - } - function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); - } - function copySymbolsIn(source, object) { - return copyObject(source, getSymbolsIn(source), object); - } - function createAggregator(setter, initializer) { - return function(collection, iteratee2) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {}; - return func(collection, setter, getIteratee(iteratee2, 2), accumulator); - }; - } - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index2 = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined2, guard = length > 2 ? sources[2] : undefined2; - customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : undefined2; - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined2 : customizer; - length = 1; - } - object = Object2(object); - while (++index2 < length) { - var source = sources[index2]; - if (source) { - assigner(object, source, index2, customizer); - } - } - return object; - }); - } - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee2) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee2); - } - var length = collection.length, index2 = fromRight ? length : -1, iterable = Object2(collection); - while (fromRight ? index2-- : ++index2 < length) { - if (iteratee2(iterable[index2], index2, iterable) === false) { - break; - } - } - return collection; - }; - } - function createBaseFor(fromRight) { - return function(object, iteratee2, keysFunc) { - var index2 = -1, iterable = Object2(object), props = keysFunc(object), length = props.length; - while (length--) { - var key = props[fromRight ? length : ++index2]; - if (iteratee2(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - function createBind(func, bitmask, thisArg) { - var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); - function wrapper() { - var fn = this && this !== root2 && this instanceof wrapper ? Ctor : func; - return fn.apply(isBind ? thisArg : this, arguments); - } - return wrapper; - } - function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined2; - var chr = strSymbols ? strSymbols[0] : string.charAt(0); - var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1); - return chr[methodName]() + trailing; - }; - } - function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, "")), callback, ""); - }; - } - function createCtor(Ctor) { - return function() { - var args = arguments; - switch (args.length) { - case 0: - return new Ctor(); - case 1: - return new Ctor(args[0]); - case 2: - return new Ctor(args[0], args[1]); - case 3: - return new Ctor(args[0], args[1], args[2]); - case 4: - return new Ctor(args[0], args[1], args[2], args[3]); - case 5: - return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: - return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: - return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args); - return isObject(result2) ? result2 : thisBinding; - }; - } - function createCurry(func, bitmask, arity) { - var Ctor = createCtor(func); - function wrapper() { - var length = arguments.length, args = Array2(length), index2 = length, placeholder = getHolder(wrapper); - while (index2--) { - args[index2] = arguments[index2]; - } - var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder); - length -= holders.length; - if (length < arity) { - return createRecurry( - func, - bitmask, - createHybrid, - wrapper.placeholder, - undefined2, - args, - holders, - undefined2, - undefined2, - arity - length - ); - } - var fn = this && this !== root2 && this instanceof wrapper ? Ctor : func; - return apply(fn, this, args); - } - return wrapper; - } - function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object2(collection); - if (!isArrayLike(collection)) { - var iteratee2 = getIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { - return iteratee2(iterable[key], key, iterable); - }; - } - var index2 = findIndexFunc(collection, predicate, fromIndex); - return index2 > -1 ? iterable[iteratee2 ? collection[index2] : index2] : undefined2; - }; - } - function createFlow(fromRight) { - return flatRest(function(funcs) { - var length = funcs.length, index2 = length, prereq = LodashWrapper.prototype.thru; - if (fromRight) { - funcs.reverse(); - } - while (index2--) { - var func = funcs[index2]; - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - if (prereq && !wrapper && getFuncName(func) == "wrapper") { - var wrapper = new LodashWrapper([], true); - } - } - index2 = wrapper ? index2 : length; - while (++index2 < length) { - func = funcs[index2]; - var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined2; - if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func); - } - } - return function() { - var args = arguments, value = args[0]; - if (wrapper && args.length == 1 && isArray(value)) { - return wrapper.plant(value).value(); - } - var index3 = 0, result2 = length ? funcs[index3].apply(this, args) : value; - while (++index3 < length) { - result2 = funcs[index3].call(this, result2); - } - return result2; - }; - }); - } - function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) { - var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined2 : createCtor(func); - function wrapper() { - var length = arguments.length, args = Array2(length), index2 = length; - while (index2--) { - args[index2] = arguments[index2]; - } - if (isCurried) { - var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder); - } - if (partials) { - args = composeArgs(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight, isCurried); - } - length -= holdersCount; - if (isCurried && length < arity) { - var newHolders = replaceHolders(args, placeholder); - return createRecurry( - func, - bitmask, - createHybrid, - wrapper.placeholder, - thisArg, - args, - newHolders, - argPos, - ary2, - arity - length - ); - } - var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func; - length = args.length; - if (argPos) { - args = reorder(args, argPos); - } else if (isFlip && length > 1) { - args.reverse(); - } - if (isAry && ary2 < length) { - args.length = ary2; - } - if (this && this !== root2 && this instanceof wrapper) { - fn = Ctor || createCtor(fn); - } - return fn.apply(thisBinding, args); - } - return wrapper; - } - function createInverter(setter, toIteratee) { - return function(object, iteratee2) { - return baseInverter(object, setter, toIteratee(iteratee2), {}); - }; - } - function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result2; - if (value === undefined2 && other === undefined2) { - return defaultValue; - } - if (value !== undefined2) { - result2 = value; - } - if (other !== undefined2) { - if (result2 === undefined2) { - return other; - } - if (typeof value == "string" || typeof other == "string") { - value = baseToString(value); - other = baseToString(other); - } else { - value = baseToNumber(value); - other = baseToNumber(other); - } - result2 = operator(value, other); - } - return result2; - }; - } - function createOver(arrayFunc) { - return flatRest(function(iteratees) { - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - return baseRest(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee2) { - return apply(iteratee2, thisArg, args); - }); - }); - }); - } - function createPadding(length, chars) { - chars = chars === undefined2 ? " " : baseToString(chars); - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat(chars, length) : chars; - } - var result2 = baseRepeat(chars, nativeCeil(length / stringSize(chars))); - return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length).join("") : result2.slice(0, length); - } - function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); - function wrapper() { - var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn = this && this !== root2 && this instanceof wrapper ? Ctor : func; - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply(fn, isBind ? thisArg : this, args); - } - return wrapper; - } - function createRange(fromRight) { - return function(start2, end, step) { - if (step && typeof step != "number" && isIterateeCall(start2, end, step)) { - end = step = undefined2; - } - start2 = toFinite(start2); - if (end === undefined2) { - end = start2; - start2 = 0; - } else { - end = toFinite(end); - } - step = step === undefined2 ? start2 < end ? 1 : -1 : toFinite(step); - return baseRange(start2, end, step, fromRight); - }; - } - function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == "string" && typeof other == "string")) { - value = toNumber(value); - other = toNumber(other); - } - return operator(value, other); - }; - } - function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) { - var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined2, newHoldersRight = isCurry ? undefined2 : holders, newPartials = isCurry ? partials : undefined2, newPartialsRight = isCurry ? undefined2 : partials; - bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG; - bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); - if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { - bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); - } - var newData = [ - func, - bitmask, - thisArg, - newPartials, - newHolders, - newPartialsRight, - newHoldersRight, - argPos, - ary2, - arity - ]; - var result2 = wrapFunc.apply(undefined2, newData); - if (isLaziable(func)) { - setData(result2, newData); - } - result2.placeholder = placeholder; - return setWrapToString(result2, func, bitmask); - } - function createRound(methodName) { - var func = Math2[methodName]; - return function(number3, precision) { - number3 = toNumber(number3); - precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); - if (precision && nativeIsFinite(number3)) { - var pair = (toString(number3) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision)); - pair = (toString(value) + "e").split("e"); - return +(pair[0] + "e" + (+pair[1] - precision)); - } - return func(number3); - }; - } - var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop3 : function(values2) { - return new Set2(values2); - }; - function createToPairs(keysFunc) { - return function(object) { - var tag = getTag(object); - if (tag == mapTag) { - return mapToArray(object); - } - if (tag == setTag) { - return setToPairs(object); - } - return baseToPairs(object, keysFunc(object)); - }; - } - function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) { - var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; - if (!isBindKey && typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); - partials = holders = undefined2; - } - ary2 = ary2 === undefined2 ? ary2 : nativeMax(toInteger(ary2), 0); - arity = arity === undefined2 ? arity : toInteger(arity); - length -= holders ? holders.length : 0; - if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, holdersRight = holders; - partials = holders = undefined2; - } - var data = isBindKey ? undefined2 : getData(func); - var newData = [ - func, - bitmask, - thisArg, - partials, - holders, - partialsRight, - holdersRight, - argPos, - ary2, - arity - ]; - if (data) { - mergeData(newData, data); - } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] === undefined2 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0); - if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { - bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); - } - if (!bitmask || bitmask == WRAP_BIND_FLAG) { - var result2 = createBind(func, bitmask, thisArg); - } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { - result2 = createCurry(func, bitmask, arity); - } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { - result2 = createPartial(func, bitmask, thisArg, partials); - } else { - result2 = createHybrid.apply(undefined2, newData); - } - var setter = data ? baseSetData : setData; - return setWrapToString(setter(result2, newData), func, bitmask); - } - function customDefaultsAssignIn(objValue, srcValue, key, object) { - if (objValue === undefined2 || eq(objValue, objectProto[key]) && !hasOwnProperty2.call(object, key)) { - return srcValue; - } - return objValue; - } - function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined2, customDefaultsMerge, stack); - stack["delete"](srcValue); - } - return objValue; - } - function customOmitClone(value) { - return isPlainObject(value) ? undefined2 : value; - } - function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length; - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - var arrStacked = stack.get(array); - var othStacked = stack.get(other); - if (arrStacked && othStacked) { - return arrStacked == other && othStacked == array; - } - var index2 = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined2; - stack.set(array, other); - stack.set(other, array); - while (++index2 < arrLength) { - var arrValue = array[index2], othValue = other[index2]; - if (customizer) { - var compared = isPartial ? customizer(othValue, arrValue, index2, other, array, stack) : customizer(arrValue, othValue, index2, array, other, stack); - } - if (compared !== undefined2) { - if (compared) { - continue; - } - result2 = false; - break; - } - if (seen) { - if (!arraySome(other, function(othValue2, othIndex) { - if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result2 = false; - break; - } - } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - result2 = false; - break; - } - } - stack["delete"](array); - stack["delete"](other); - return result2; - } - function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) { - return false; - } - object = object.buffer; - other = other.buffer; - case arrayBufferTag: - if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) { - return false; - } - return true; - case boolTag: - case dateTag: - case numberTag: - return eq(+object, +other); - case errorTag: - return object.name == other.name && object.message == other.message; - case regexpTag: - case stringTag: - return object == other + ""; - case mapTag: - var convert2 = mapToArray; - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert2 || (convert2 = setToArray); - if (object.size != other.size && !isPartial) { - return false; - } - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; - stack.set(object, other); - var result2 = equalArrays(convert2(object), convert2(other), bitmask, customizer, equalFunc, stack); - stack["delete"](object); - return result2; - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; - } - function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length; - if (objLength != othLength && !isPartial) { - return false; - } - var index2 = objLength; - while (index2--) { - var key = objProps[index2]; - if (!(isPartial ? key in other : hasOwnProperty2.call(other, key))) { - return false; - } - } - var objStacked = stack.get(object); - var othStacked = stack.get(other); - if (objStacked && othStacked) { - return objStacked == other && othStacked == object; - } - var result2 = true; - stack.set(object, other); - stack.set(other, object); - var skipCtor = isPartial; - while (++index2 < objLength) { - key = objProps[index2]; - var objValue = object[key], othValue = other[key]; - if (customizer) { - var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack); - } - if (!(compared === undefined2 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { - result2 = false; - break; - } - skipCtor || (skipCtor = key == "constructor"); - } - if (result2 && !skipCtor) { - var objCtor = object.constructor, othCtor = other.constructor; - if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) { - result2 = false; - } - } - stack["delete"](object); - stack["delete"](other); - return result2; - } - function flatRest(func) { - return setToString(overRest(func, undefined2, flatten), func + ""); - } - function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); - } - function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); - } - var getData = !metaMap ? noop3 : function(func) { - return metaMap.get(func); - }; - function getFuncName(func) { - var result2 = func.name + "", array = realNames[result2], length = hasOwnProperty2.call(realNames, result2) ? array.length : 0; - while (length--) { - var data = array[length], otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result2; - } - function getHolder(func) { - var object = hasOwnProperty2.call(lodash, "placeholder") ? lodash : func; - return object.placeholder; - } - function getIteratee() { - var result2 = lodash.iteratee || iteratee; - result2 = result2 === iteratee ? baseIteratee : result2; - return arguments.length ? result2(arguments[0], arguments[1]) : result2; - } - function getMapData(map3, key) { - var data = map3.__data__; - return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; - } - function getMatchData(object) { - var result2 = keys(object), length = result2.length; - while (length--) { - var key = result2[length], value = object[key]; - result2[length] = [key, value, isStrictComparable(value)]; - } - return result2; - } - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined2; - } - function getRawTag(value) { - var isOwn = hasOwnProperty2.call(value, symToStringTag), tag = value[symToStringTag]; - try { - value[symToStringTag] = undefined2; - var unmasked = true; - } catch (e) { - } - var result2 = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result2; - } - var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object2(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); - }; - var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result2 = []; - while (object) { - arrayPush(result2, getSymbols(object)); - object = getPrototype(object); - } - return result2; - }; - var getTag = baseGetTag; - if (DataView2 && getTag(new DataView2(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) { - getTag = function(value) { - var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined2, ctorString = Ctor ? toSource(Ctor) : ""; - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: - return dataViewTag; - case mapCtorString: - return mapTag; - case promiseCtorString: - return promiseTag; - case setCtorString: - return setTag; - case weakMapCtorString: - return weakMapTag; - } - } - return result2; - }; - } - function getView(start2, end, transforms) { - var index2 = -1, length = transforms.length; - while (++index2 < length) { - var data = transforms[index2], size2 = data.size; - switch (data.type) { - case "drop": - start2 += size2; - break; - case "dropRight": - end -= size2; - break; - case "take": - end = nativeMin(end, start2 + size2); - break; - case "takeRight": - start2 = nativeMax(start2, end - size2); - break; - } - } - return { "start": start2, "end": end }; - } - function getWrapDetails(source) { - var match2 = source.match(reWrapDetails); - return match2 ? match2[1].split(reSplitDetails) : []; - } - function hasPath(object, path2, hasFunc) { - path2 = castPath(path2, object); - var index2 = -1, length = path2.length, result2 = false; - while (++index2 < length) { - var key = toKey(path2[index2]); - if (!(result2 = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result2 || ++index2 != length) { - return result2; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object)); - } - function initCloneArray(array) { - var length = array.length, result2 = new array.constructor(length); - if (length && typeof array[0] == "string" && hasOwnProperty2.call(array, "index")) { - result2.index = array.index; - result2.input = array.input; - } - return result2; - } - function initCloneObject(object) { - return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {}; - } - function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - case boolTag: - case dateTag: - return new Ctor(+object); - case dataViewTag: - return cloneDataView(object, isDeep); - case float32Tag: - case float64Tag: - case int8Tag: - case int16Tag: - case int32Tag: - case uint8Tag: - case uint8ClampedTag: - case uint16Tag: - case uint32Tag: - return cloneTypedArray(object, isDeep); - case mapTag: - return new Ctor(); - case numberTag: - case stringTag: - return new Ctor(object); - case regexpTag: - return cloneRegExp(object); - case setTag: - return new Ctor(); - case symbolTag: - return cloneSymbol(object); - } - } - function insertWrapDetails(source, details2) { - var length = details2.length; - if (!length) { - return source; - } - var lastIndex = length - 1; - details2[lastIndex] = (length > 1 ? "& " : "") + details2[lastIndex]; - details2 = details2.join(length > 2 ? ", " : " "); - return source.replace(reWrapComment, "{\n/* [wrapped with " + details2 + "] */\n"); - } - function isFlattenable(value) { - return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]); - } - function isIndex(value, length) { - var type2 = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - return !!length && (type2 == "number" || type2 != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); - } - function isIterateeCall(value, index2, object) { - if (!isObject(object)) { - return false; - } - var type2 = typeof index2; - if (type2 == "number" ? isArrayLike(object) && isIndex(index2, object.length) : type2 == "string" && index2 in object) { - return eq(object[index2], value); - } - return false; - } - function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type2 = typeof value; - if (type2 == "number" || type2 == "symbol" || type2 == "boolean" || value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object); - } - function isKeyable(value) { - var type2 = typeof value; - return type2 == "string" || type2 == "number" || type2 == "symbol" || type2 == "boolean" ? value !== "__proto__" : value === null; - } - function isLaziable(func) { - var funcName = getFuncName(func), other = lodash[funcName]; - if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) { - return false; - } - if (func === other) { - return true; - } - var data = getData(other); - return !!data && func === data[0]; - } - function isMasked(func) { - return !!maskSrcKey && maskSrcKey in func; - } - var isMaskable = coreJsData ? isFunction : stubFalse; - function isPrototype(value) { - var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; - return value === proto; - } - function isStrictComparable(value) { - return value === value && !isObject(value); - } - function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && (srcValue !== undefined2 || key in Object2(object)); - }; - } - function memoizeCapped(func) { - var result2 = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - var cache = result2.cache; - return result2; - } - function mergeData(data, source) { - var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); - var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG; - if (!(isCommon || isCombo)) { - return data; - } - if (srcBitmask & WRAP_BIND_FLAG) { - data[2] = source[2]; - newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; - } - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; - } - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; - } - value = source[7]; - if (value) { - data[7] = value; - } - if (srcBitmask & WRAP_ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); - } - if (data[9] == null) { - data[9] = source[9]; - } - data[0] = source[0]; - data[1] = newBitmask; - return data; - } - function nativeKeysIn(object) { - var result2 = []; - if (object != null) { - for (var key in Object2(object)) { - result2.push(key); - } - } - return result2; - } - function objectToString(value) { - return nativeObjectToString.call(value); - } - function overRest(func, start2, transform3) { - start2 = nativeMax(start2 === undefined2 ? func.length - 1 : start2, 0); - return function() { - var args = arguments, index2 = -1, length = nativeMax(args.length - start2, 0), array = Array2(length); - while (++index2 < length) { - array[index2] = args[start2 + index2]; - } - index2 = -1; - var otherArgs = Array2(start2 + 1); - while (++index2 < start2) { - otherArgs[index2] = args[index2]; - } - otherArgs[start2] = transform3(array); - return apply(func, this, otherArgs); - }; - } - function parent(object, path2) { - return path2.length < 2 ? object : baseGet(object, baseSlice(path2, 0, -1)); - } - function reorder(array, indexes) { - var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array); - while (length--) { - var index2 = indexes[length]; - array[length] = isIndex(index2, arrLength) ? oldArray[index2] : undefined2; - } - return array; - } - function safeGet(object, key) { - if (key === "constructor" && typeof object[key] === "function") { - return; - } - if (key == "__proto__") { - return; - } - return object[key]; - } - var setData = shortOut(baseSetData); - var setTimeout2 = ctxSetTimeout || function(func, wait2) { - return root2.setTimeout(func, wait2); - }; - var setToString = shortOut(baseSetToString); - function setWrapToString(wrapper, reference, bitmask) { - var source = reference + ""; - return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); - } - function shortOut(func) { - var count2 = 0, lastCalled = 0; - return function() { - var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); - lastCalled = stamp; - if (remaining > 0) { - if (++count2 >= HOT_COUNT) { - return arguments[0]; - } - } else { - count2 = 0; - } - return func.apply(undefined2, arguments); - }; - } - function shuffleSelf(array, size2) { - var index2 = -1, length = array.length, lastIndex = length - 1; - size2 = size2 === undefined2 ? length : size2; - while (++index2 < size2) { - var rand = baseRandom(index2, lastIndex), value = array[rand]; - array[rand] = array[index2]; - array[index2] = value; - } - array.length = size2; - return array; - } - var stringToPath = memoizeCapped(function(string) { - var result2 = []; - if (string.charCodeAt(0) === 46) { - result2.push(""); - } - string.replace(rePropName, function(match2, number3, quote, subString) { - result2.push(quote ? subString.replace(reEscapeChar, "$1") : number3 || match2); - }); - return result2; - }); - function toKey(value) { - if (typeof value == "string" || isSymbol(value)) { - return value; - } - var result2 = value + ""; - return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; - } - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) { - } - try { - return func + ""; - } catch (e) { - } - } - return ""; - } - function updateWrapDetails(details2, bitmask) { - arrayEach(wrapFlags, function(pair) { - var value = "_." + pair[0]; - if (bitmask & pair[1] && !arrayIncludes(details2, value)) { - details2.push(value); - } - }); - return details2.sort(); - } - function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper) { - return wrapper.clone(); - } - var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); - result2.__actions__ = copyArray(wrapper.__actions__); - result2.__index__ = wrapper.__index__; - result2.__values__ = wrapper.__values__; - return result2; - } - function chunk(array, size2, guard) { - if (guard ? isIterateeCall(array, size2, guard) : size2 === undefined2) { - size2 = 1; - } else { - size2 = nativeMax(toInteger(size2), 0); - } - var length = array == null ? 0 : array.length; - if (!length || size2 < 1) { - return []; - } - var index2 = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size2)); - while (index2 < length) { - result2[resIndex++] = baseSlice(array, index2, index2 += size2); - } - return result2; - } - function compact(array) { - var index2 = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = []; - while (++index2 < length) { - var value = array[index2]; - if (value) { - result2[resIndex++] = value; - } - } - return result2; - } - function concat() { - var length = arguments.length; - if (!length) { - return []; - } - var args = Array2(length - 1), array = arguments[0], index2 = length; - while (index2--) { - args[index2 - 1] = arguments[index2]; - } - return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); - } - var difference = baseRest(function(array, values2) { - return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : []; - }); - var differenceBy = baseRest(function(array, values2) { - var iteratee2 = last(values2); - if (isArrayLikeObject(iteratee2)) { - iteratee2 = undefined2; - } - return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : []; - }); - var differenceWith = baseRest(function(array, values2) { - var comparator = last(values2); - if (isArrayLikeObject(comparator)) { - comparator = undefined2; - } - return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined2, comparator) : []; - }); - function drop(array, n2, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); - return baseSlice(array, n2 < 0 ? 0 : n2, length); - } - function dropRight(array, n2, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); - n2 = length - n2; - return baseSlice(array, 0, n2 < 0 ? 0 : n2); - } - function dropRightWhile(array, predicate) { - return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : []; - } - function dropWhile(array, predicate) { - return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : []; - } - function fill(array, value, start2, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (start2 && typeof start2 != "number" && isIterateeCall(array, value, start2)) { - start2 = 0; - end = length; - } - return baseFill(array, value, start2, end); - } - function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index2 = fromIndex == null ? 0 : toInteger(fromIndex); - if (index2 < 0) { - index2 = nativeMax(length + index2, 0); - } - return baseFindIndex(array, getIteratee(predicate, 3), index2); - } - function findLastIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index2 = length - 1; - if (fromIndex !== undefined2) { - index2 = toInteger(fromIndex); - index2 = fromIndex < 0 ? nativeMax(length + index2, 0) : nativeMin(index2, length - 1); - } - return baseFindIndex(array, getIteratee(predicate, 3), index2, true); - } - function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, 1) : []; - } - function flattenDeep(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, INFINITY) : []; - } - function flattenDepth(array, depth) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - depth = depth === undefined2 ? 1 : toInteger(depth); - return baseFlatten(array, depth); - } - function fromPairs(pairs) { - var index2 = -1, length = pairs == null ? 0 : pairs.length, result2 = {}; - while (++index2 < length) { - var pair = pairs[index2]; - result2[pair[0]] = pair[1]; - } - return result2; - } - function head(array) { - return array && array.length ? array[0] : undefined2; - } - function indexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index2 = fromIndex == null ? 0 : toInteger(fromIndex); - if (index2 < 0) { - index2 = nativeMax(length + index2, 0); - } - return baseIndexOf(array, value, index2); - } - function initial(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 0, -1) : []; - } - var intersection = baseRest(function(arrays) { - var mapped = arrayMap(arrays, castArrayLikeObject); - return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : []; - }); - var intersectionBy = baseRest(function(arrays) { - var iteratee2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject); - if (iteratee2 === last(mapped)) { - iteratee2 = undefined2; - } else { - mapped.pop(); - } - return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : []; - }); - var intersectionWith = baseRest(function(arrays) { - var comparator = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject); - comparator = typeof comparator == "function" ? comparator : undefined2; - if (comparator) { - mapped.pop(); - } - return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : []; - }); - function join(array, separator) { - return array == null ? "" : nativeJoin.call(array, separator); - } - function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined2; - } - function lastIndexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index2 = length; - if (fromIndex !== undefined2) { - index2 = toInteger(fromIndex); - index2 = index2 < 0 ? nativeMax(length + index2, 0) : nativeMin(index2, length - 1); - } - return value === value ? strictLastIndexOf(array, value, index2) : baseFindIndex(array, baseIsNaN, index2, true); - } - function nth(array, n2) { - return array && array.length ? baseNth(array, toInteger(n2)) : undefined2; - } - var pull = baseRest(pullAll); - function pullAll(array, values2) { - return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array; - } - function pullAllBy(array, values2, iteratee2) { - return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array; - } - function pullAllWith(array, values2, comparator) { - return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined2, comparator) : array; - } - var pullAt = flatRest(function(array, indexes) { - var length = array == null ? 0 : array.length, result2 = baseAt(array, indexes); - basePullAt(array, arrayMap(indexes, function(index2) { - return isIndex(index2, length) ? +index2 : index2; - }).sort(compareAscending)); - return result2; - }); - function remove2(array, predicate) { - var result2 = []; - if (!(array && array.length)) { - return result2; - } - var index2 = -1, indexes = [], length = array.length; - predicate = getIteratee(predicate, 3); - while (++index2 < length) { - var value = array[index2]; - if (predicate(value, index2, array)) { - result2.push(value); - indexes.push(index2); - } - } - basePullAt(array, indexes); - return result2; - } - function reverse(array) { - return array == null ? array : nativeReverse.call(array); - } - function slice2(array, start2, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (end && typeof end != "number" && isIterateeCall(array, start2, end)) { - start2 = 0; - end = length; - } else { - start2 = start2 == null ? 0 : toInteger(start2); - end = end === undefined2 ? length : toInteger(end); - } - return baseSlice(array, start2, end); - } - function sortedIndex(array, value) { - return baseSortedIndex(array, value); - } - function sortedIndexBy(array, value, iteratee2) { - return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2)); - } - function sortedIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index2 = baseSortedIndex(array, value); - if (index2 < length && eq(array[index2], value)) { - return index2; - } - } - return -1; - } - function sortedLastIndex(array, value) { - return baseSortedIndex(array, value, true); - } - function sortedLastIndexBy(array, value, iteratee2) { - return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true); - } - function sortedLastIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index2 = baseSortedIndex(array, value, true) - 1; - if (eq(array[index2], value)) { - return index2; - } - } - return -1; - } - function sortedUniq(array) { - return array && array.length ? baseSortedUniq(array) : []; - } - function sortedUniqBy(array, iteratee2) { - return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : []; - } - function tail(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 1, length) : []; - } - function take(array, n2, guard) { - if (!(array && array.length)) { - return []; - } - n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); - return baseSlice(array, 0, n2 < 0 ? 0 : n2); - } - function takeRight(array, n2, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); - n2 = length - n2; - return baseSlice(array, n2 < 0 ? 0 : n2, length); - } - function takeRightWhile(array, predicate) { - return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : []; - } - function takeWhile(array, predicate) { - return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : []; - } - var union = baseRest(function(arrays) { - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); - }); - var unionBy = baseRest(function(arrays) { - var iteratee2 = last(arrays); - if (isArrayLikeObject(iteratee2)) { - iteratee2 = undefined2; - } - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)); - }); - var unionWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == "function" ? comparator : undefined2; - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator); - }); - function uniq(array) { - return array && array.length ? baseUniq(array) : []; - } - function uniqBy(array, iteratee2) { - return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : []; - } - function uniqWith(array, comparator) { - comparator = typeof comparator == "function" ? comparator : undefined2; - return array && array.length ? baseUniq(array, undefined2, comparator) : []; - } - function unzip(array) { - if (!(array && array.length)) { - return []; - } - var length = 0; - array = arrayFilter(array, function(group) { - if (isArrayLikeObject(group)) { - length = nativeMax(group.length, length); - return true; - } - }); - return baseTimes(length, function(index2) { - return arrayMap(array, baseProperty(index2)); - }); - } - function unzipWith(array, iteratee2) { - if (!(array && array.length)) { - return []; - } - var result2 = unzip(array); - if (iteratee2 == null) { - return result2; - } - return arrayMap(result2, function(group) { - return apply(iteratee2, undefined2, group); - }); - } - var without = baseRest(function(array, values2) { - return isArrayLikeObject(array) ? baseDifference(array, values2) : []; - }); - var xor = baseRest(function(arrays) { - return baseXor(arrayFilter(arrays, isArrayLikeObject)); - }); - var xorBy = baseRest(function(arrays) { - var iteratee2 = last(arrays); - if (isArrayLikeObject(iteratee2)) { - iteratee2 = undefined2; - } - return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2)); - }); - var xorWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == "function" ? comparator : undefined2; - return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator); - }); - var zip = baseRest(unzip); - function zipObject(props, values2) { - return baseZipObject(props || [], values2 || [], assignValue); - } - function zipObjectDeep(props, values2) { - return baseZipObject(props || [], values2 || [], baseSet); - } - var zipWith = baseRest(function(arrays) { - var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined2; - iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined2; - return unzipWith(arrays, iteratee2); - }); - function chain(value) { - var result2 = lodash(value); - result2.__chain__ = true; - return result2; - } - function tap(value, interceptor) { - interceptor(value); - return value; - } - function thru(value, interceptor) { - return interceptor(value); - } - var wrapperAt = flatRest(function(paths) { - var length = paths.length, start2 = length ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) { - return baseAt(object, paths); - }; - if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start2)) { - return this.thru(interceptor); - } - value = value.slice(start2, +start2 + (length ? 1 : 0)); - value.__actions__.push({ - "func": thru, - "args": [interceptor], - "thisArg": undefined2 - }); - return new LodashWrapper(value, this.__chain__).thru(function(array) { - if (length && !array.length) { - array.push(undefined2); - } - return array; - }); - }); - function wrapperChain() { - return chain(this); - } - function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); - } - function wrapperNext() { - if (this.__values__ === undefined2) { - this.__values__ = toArray(this.value()); - } - var done = this.__index__ >= this.__values__.length, value = done ? undefined2 : this.__values__[this.__index__++]; - return { "done": done, "value": value }; - } - function wrapperToIterator() { - return this; - } - function wrapperPlant(value) { - var result2, parent2 = this; - while (parent2 instanceof baseLodash) { - var clone4 = wrapperClone(parent2); - clone4.__index__ = 0; - clone4.__values__ = undefined2; - if (result2) { - previous.__wrapped__ = clone4; - } else { - result2 = clone4; - } - var previous = clone4; - parent2 = parent2.__wrapped__; - } - previous.__wrapped__ = value; - return result2; - } - function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper) { - var wrapped = value; - if (this.__actions__.length) { - wrapped = new LazyWrapper(this); - } - wrapped = wrapped.reverse(); - wrapped.__actions__.push({ - "func": thru, - "args": [reverse], - "thisArg": undefined2 - }); - return new LodashWrapper(wrapped, this.__chain__); - } - return this.thru(reverse); - } - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } - var countBy = createAggregator(function(result2, value, key) { - if (hasOwnProperty2.call(result2, key)) { - ++result2[key]; - } else { - baseAssignValue(result2, key, 1); - } - }); - function every(collection, predicate, guard) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined2; - } - return func(collection, getIteratee(predicate, 3)); - } - function filter2(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, getIteratee(predicate, 3)); - } - var find3 = createFind(findIndex); - var findLast = createFind(findLastIndex); - function flatMap(collection, iteratee2) { - return baseFlatten(map2(collection, iteratee2), 1); - } - function flatMapDeep(collection, iteratee2) { - return baseFlatten(map2(collection, iteratee2), INFINITY); - } - function flatMapDepth(collection, iteratee2, depth) { - depth = depth === undefined2 ? 1 : toInteger(depth); - return baseFlatten(map2(collection, iteratee2), depth); - } - function forEach(collection, iteratee2) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, getIteratee(iteratee2, 3)); - } - function forEachRight(collection, iteratee2) { - var func = isArray(collection) ? arrayEachRight : baseEachRight; - return func(collection, getIteratee(iteratee2, 3)); - } - var groupBy = createAggregator(function(result2, value, key) { - if (hasOwnProperty2.call(result2, key)) { - result2[key].push(value); - } else { - baseAssignValue(result2, key, [value]); - } - }); - function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values(collection); - fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0; - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); - } - return isString2(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1; - } - var invokeMap = baseRest(function(collection, path2, args) { - var index2 = -1, isFunc = typeof path2 == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : []; - baseEach(collection, function(value) { - result2[++index2] = isFunc ? apply(path2, value, args) : baseInvoke(value, path2, args); - }); - return result2; - }); - var keyBy = createAggregator(function(result2, value, key) { - baseAssignValue(result2, key, value); - }); - function map2(collection, iteratee2) { - var func = isArray(collection) ? arrayMap : baseMap; - return func(collection, getIteratee(iteratee2, 3)); - } - function orderBy(collection, iteratees, orders, guard) { - if (collection == null) { - return []; - } - if (!isArray(iteratees)) { - iteratees = iteratees == null ? [] : [iteratees]; - } - orders = guard ? undefined2 : orders; - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseOrderBy(collection, iteratees, orders); - } - var partition = createAggregator(function(result2, value, key) { - result2[key ? 0 : 1].push(value); - }, function() { - return [[], []]; - }); - function reduce(collection, iteratee2, accumulator) { - var func = isArray(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3; - return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach); - } - function reduceRight(collection, iteratee2, accumulator) { - var func = isArray(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3; - return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight); - } - function reject(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, negate(getIteratee(predicate, 3))); - } - function sample(collection) { - var func = isArray(collection) ? arraySample : baseSample; - return func(collection); - } - function sampleSize(collection, n2, guard) { - if (guard ? isIterateeCall(collection, n2, guard) : n2 === undefined2) { - n2 = 1; - } else { - n2 = toInteger(n2); - } - var func = isArray(collection) ? arraySampleSize : baseSampleSize; - return func(collection, n2); - } - function shuffle(collection) { - var func = isArray(collection) ? arrayShuffle : baseShuffle; - return func(collection); - } - function size(collection) { - if (collection == null) { - return 0; - } - if (isArrayLike(collection)) { - return isString2(collection) ? stringSize(collection) : collection.length; - } - var tag = getTag(collection); - if (tag == mapTag || tag == setTag) { - return collection.size; - } - return baseKeys(collection).length; - } - function some(collection, predicate, guard) { - var func = isArray(collection) ? arraySome : baseSome; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined2; - } - return func(collection, getIteratee(predicate, 3)); - } - var sortBy = baseRest(function(collection, iteratees) { - if (collection == null) { - return []; - } - var length = iteratees.length; - if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; - } - return baseOrderBy(collection, baseFlatten(iteratees, 1), []); - }); - var now3 = ctxNow || function() { - return root2.Date.now(); - }; - function after(n2, func) { - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - n2 = toInteger(n2); - return function() { - if (--n2 < 1) { - return func.apply(this, arguments); - } - }; - } - function ary(func, n2, guard) { - n2 = guard ? undefined2 : n2; - n2 = func && n2 == null ? func.length : n2; - return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n2); - } - function before(n2, func) { - var result2; - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - n2 = toInteger(n2); - return function() { - if (--n2 > 0) { - result2 = func.apply(this, arguments); - } - if (n2 <= 1) { - func = undefined2; - } - return result2; - }; - } - var bind = baseRest(function(func, thisArg, partials) { - var bitmask = WRAP_BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bind)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(func, bitmask, thisArg, partials, holders); - }); - var bindKey2 = baseRest(function(object, key, partials) { - var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bindKey2)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(key, bitmask, object, partials, holders); - }); - function curry(func, arity, guard) { - arity = guard ? undefined2 : arity; - var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); - result2.placeholder = curry.placeholder; - return result2; - } - function curryRight(func, arity, guard) { - arity = guard ? undefined2 : arity; - var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); - result2.placeholder = curryRight.placeholder; - return result2; - } - function debounce(func, wait2, options) { - var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - wait2 = toNumber(wait2) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = "maxWait" in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait2) : maxWait; - trailing = "trailing" in options ? !!options.trailing : trailing; - } - function invokeFunc(time) { - var args = lastArgs, thisArg = lastThis; - lastArgs = lastThis = undefined2; - lastInvokeTime = time; - result2 = func.apply(thisArg, args); - return result2; - } - function leadingEdge(time) { - lastInvokeTime = time; - timerId = setTimeout2(timerExpired, wait2); - return leading ? invokeFunc(time) : result2; - } - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait2 - timeSinceLastCall; - return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; - } - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime; - return lastCallTime === undefined2 || timeSinceLastCall >= wait2 || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; - } - function timerExpired() { - var time = now3(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - timerId = setTimeout2(timerExpired, remainingWait(time)); - } - function trailingEdge(time) { - timerId = undefined2; - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined2; - return result2; - } - function cancel() { - if (timerId !== undefined2) { - clearTimeout2(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined2; - } - function flush2() { - return timerId === undefined2 ? result2 : trailingEdge(now3()); - } - function debounced() { - var time = now3(), isInvoking = shouldInvoke(time); - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - if (isInvoking) { - if (timerId === undefined2) { - return leadingEdge(lastCallTime); - } - if (maxing) { - clearTimeout2(timerId); - timerId = setTimeout2(timerExpired, wait2); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined2) { - timerId = setTimeout2(timerExpired, wait2); - } - return result2; - } - debounced.cancel = cancel; - debounced.flush = flush2; - return debounced; - } - var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); - }); - var delay = baseRest(function(func, wait2, args) { - return baseDelay(func, toNumber(wait2) || 0, args); - }); - function flip(func) { - return createWrap(func, WRAP_FLIP_FLAG); - } - function memoize(func, resolver) { - if (typeof func != "function" || resolver != null && typeof resolver != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache; - if (cache.has(key)) { - return cache.get(key); - } - var result2 = func.apply(this, args); - memoized.cache = cache.set(key, result2) || cache; - return result2; - }; - memoized.cache = new (memoize.Cache || MapCache)(); - return memoized; - } - memoize.Cache = MapCache; - function negate(predicate) { - if (typeof predicate != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - return function() { - var args = arguments; - switch (args.length) { - case 0: - return !predicate.call(this); - case 1: - return !predicate.call(this, args[0]); - case 2: - return !predicate.call(this, args[0], args[1]); - case 3: - return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; - } - function once(func) { - return before(2, func); - } - var overArgs = castRest(function(func, transforms) { - transforms = transforms.length == 1 && isArray(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); - var funcsLength = transforms.length; - return baseRest(function(args) { - var index2 = -1, length = nativeMin(args.length, funcsLength); - while (++index2 < length) { - args[index2] = transforms[index2].call(this, args[index2]); - } - return apply(func, this, args); - }); - }); - var partial = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partial)); - return createWrap(func, WRAP_PARTIAL_FLAG, undefined2, partials, holders); - }); - var partialRight = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partialRight)); - return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined2, partials, holders); - }); - var rearg = flatRest(function(func, indexes) { - return createWrap(func, WRAP_REARG_FLAG, undefined2, undefined2, undefined2, indexes); - }); - function rest(func, start2) { - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - start2 = start2 === undefined2 ? start2 : toInteger(start2); - return baseRest(func, start2); - } - function spread(func, start2) { - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - start2 = start2 == null ? 0 : nativeMax(toInteger(start2), 0); - return baseRest(function(args) { - var array = args[start2], otherArgs = castSlice(args, 0, start2); - if (array) { - arrayPush(otherArgs, array); - } - return apply(func, this, otherArgs); - }); - } - function throttle(func, wait2, options) { - var leading = true, trailing = true; - if (typeof func != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - if (isObject(options)) { - leading = "leading" in options ? !!options.leading : leading; - trailing = "trailing" in options ? !!options.trailing : trailing; - } - return debounce(func, wait2, { - "leading": leading, - "maxWait": wait2, - "trailing": trailing - }); - } - function unary(func) { - return ary(func, 1); - } - function wrap(value, wrapper) { - return partial(castFunction(wrapper), value); - } - function castArray() { - if (!arguments.length) { - return []; - } - var value = arguments[0]; - return isArray(value) ? value : [value]; - } - function clone3(value) { - return baseClone(value, CLONE_SYMBOLS_FLAG); - } - function cloneWith(value, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); - } - function cloneDeep2(value) { - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); - } - function cloneDeepWith(value, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); - } - function conformsTo(object, source) { - return source == null || baseConformsTo(object, source, keys(source)); - } - function eq(value, other) { - return value === other || value !== value && other !== other; - } - var gt = createRelationalOperation(baseGt); - var gte = createRelationalOperation(function(value, other) { - return value >= other; - }); - var isArguments = baseIsArguments(function() { - return arguments; - }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty2.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); - }; - var isArray = Array2.isArray; - var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - function isBoolean(value) { - return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag; - } - var isBuffer = nativeIsBuffer || stubFalse; - var isDate2 = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; - function isElement(value) { - return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); - } - function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike(value) && (isArray(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) { - return !value.length; - } - var tag = getTag(value); - if (tag == mapTag || tag == setTag) { - return !value.size; - } - if (isPrototype(value)) { - return !baseKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty2.call(value, key)) { - return false; - } - } - return true; - } - function isEqual(value, other) { - return baseIsEqual(value, other); - } - function isEqualWith(value, other, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - var result2 = customizer ? customizer(value, other) : undefined2; - return result2 === undefined2 ? baseIsEqual(value, other, undefined2, customizer) : !!result2; - } - function isError(value) { - if (!isObjectLike(value)) { - return false; - } - var tag = baseGetTag(value); - return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value); - } - function isFinite2(value) { - return typeof value == "number" && nativeIsFinite(value); - } - function isFunction(value) { - if (!isObject(value)) { - return false; - } - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; - } - function isInteger2(value) { - return typeof value == "number" && value == toInteger(value); - } - function isLength(value) { - return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - function isObject(value) { - var type2 = typeof value; - return value != null && (type2 == "object" || type2 == "function"); - } - function isObjectLike(value) { - return value != null && typeof value == "object"; - } - var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - function isMatch(object, source) { - return object === source || baseIsMatch(object, source, getMatchData(source)); - } - function isMatchWith(object, source, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - return baseIsMatch(object, source, getMatchData(source), customizer); - } - function isNaN2(value) { - return isNumber2(value) && value != +value; - } - function isNative(value) { - if (isMaskable(value)) { - throw new Error2(CORE_ERROR_TEXT); - } - return baseIsNative(value); - } - function isNull(value) { - return value === null; - } - function isNil(value) { - return value == null; - } - function isNumber2(value) { - return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag; - } - function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty2.call(proto, "constructor") && proto.constructor; - return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; - } - var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; - function isSafeInteger(value) { - return isInteger2(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; - } - var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - function isString2(value) { - return typeof value == "string" || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag; - } - function isSymbol(value) { - return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag; - } - var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - function isUndefined2(value) { - return value === undefined2; - } - function isWeakMap(value) { - return isObjectLike(value) && getTag(value) == weakMapTag; - } - function isWeakSet(value) { - return isObjectLike(value) && baseGetTag(value) == weakSetTag; - } - var lt = createRelationalOperation(baseLt); - var lte = createRelationalOperation(function(value, other) { - return value <= other; - }); - function toArray(value) { - if (!value) { - return []; - } - if (isArrayLike(value)) { - return isString2(value) ? stringToArray(value) : copyArray(value); - } - if (symIterator && value[symIterator]) { - return iteratorToArray(value[symIterator]()); - } - var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values; - return func(value); - } - function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = value < 0 ? -1 : 1; - return sign * MAX_INTEGER; - } - return value === value ? value : 0; - } - function toInteger(value) { - var result2 = toFinite(value), remainder = result2 % 1; - return result2 === result2 ? remainder ? result2 - remainder : result2 : 0; - } - function toLength(value) { - return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; - } - function toNumber(value) { - if (typeof value == "number") { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == "function" ? value.valueOf() : value; - value = isObject(other) ? other + "" : other; - } - if (typeof value != "string") { - return value === 0 ? value : +value; - } - value = baseTrim(value); - var isBinary = reIsBinary.test(value); - return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; - } - function toPlainObject(value) { - return copyObject(value, keysIn(value)); - } - function toSafeInteger(value) { - return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0; - } - function toString(value) { - return value == null ? "" : baseToString(value); - } - var assign2 = createAssigner(function(object, source) { - if (isPrototype(source) || isArrayLike(source)) { - copyObject(source, keys(source), object); - return; - } - for (var key in source) { - if (hasOwnProperty2.call(source, key)) { - assignValue(object, key, source[key]); - } - } - }); - var assignIn = createAssigner(function(object, source) { - copyObject(source, keysIn(source), object); - }); - var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keysIn(source), object, customizer); - }); - var assignWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keys(source), object, customizer); - }); - var at = flatRest(baseAt); - function create2(prototype, properties) { - var result2 = baseCreate(prototype); - return properties == null ? result2 : baseAssign(result2, properties); - } - var defaults = baseRest(function(object, sources) { - object = Object2(object); - var index2 = -1; - var length = sources.length; - var guard = length > 2 ? sources[2] : undefined2; - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - while (++index2 < length) { - var source = sources[index2]; - var props = keysIn(source); - var propsIndex = -1; - var propsLength = props.length; - while (++propsIndex < propsLength) { - var key = props[propsIndex]; - var value = object[key]; - if (value === undefined2 || eq(value, objectProto[key]) && !hasOwnProperty2.call(object, key)) { - object[key] = source[key]; - } - } - } - return object; - }); - var defaultsDeep = baseRest(function(args) { - args.push(undefined2, customDefaultsMerge); - return apply(mergeWith, undefined2, args); - }); - function findKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); - } - function findLastKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); - } - function forIn(object, iteratee2) { - return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn); - } - function forInRight(object, iteratee2) { - return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn); - } - function forOwn(object, iteratee2) { - return object && baseForOwn(object, getIteratee(iteratee2, 3)); - } - function forOwnRight(object, iteratee2) { - return object && baseForOwnRight(object, getIteratee(iteratee2, 3)); - } - function functions(object) { - return object == null ? [] : baseFunctions(object, keys(object)); - } - function functionsIn(object) { - return object == null ? [] : baseFunctions(object, keysIn(object)); - } - function get3(object, path2, defaultValue) { - var result2 = object == null ? undefined2 : baseGet(object, path2); - return result2 === undefined2 ? defaultValue : result2; - } - function has(object, path2) { - return object != null && hasPath(object, path2, baseHas); - } - function hasIn(object, path2) { - return object != null && hasPath(object, path2, baseHasIn); - } - var invert = createInverter(function(result2, value, key) { - if (value != null && typeof value.toString != "function") { - value = nativeObjectToString.call(value); - } - result2[value] = key; - }, constant(identity4)); - var invertBy = createInverter(function(result2, value, key) { - if (value != null && typeof value.toString != "function") { - value = nativeObjectToString.call(value); - } - if (hasOwnProperty2.call(result2, value)) { - result2[value].push(key); - } else { - result2[value] = [key]; - } - }, getIteratee); - var invoke = baseRest(baseInvoke); - function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); - } - function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); - } - function mapKeys(object, iteratee2) { - var result2 = {}; - iteratee2 = getIteratee(iteratee2, 3); - baseForOwn(object, function(value, key, object2) { - baseAssignValue(result2, iteratee2(value, key, object2), value); - }); - return result2; - } - function mapValues(object, iteratee2) { - var result2 = {}; - iteratee2 = getIteratee(iteratee2, 3); - baseForOwn(object, function(value, key, object2) { - baseAssignValue(result2, key, iteratee2(value, key, object2)); - }); - return result2; - } - var merge = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); - }); - var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { - baseMerge(object, source, srcIndex, customizer); - }); - var omit = flatRest(function(object, paths) { - var result2 = {}; - if (object == null) { - return result2; - } - var isDeep = false; - paths = arrayMap(paths, function(path2) { - path2 = castPath(path2, object); - isDeep || (isDeep = path2.length > 1); - return path2; - }); - copyObject(object, getAllKeysIn(object), result2); - if (isDeep) { - result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); - } - var length = paths.length; - while (length--) { - baseUnset(result2, paths[length]); - } - return result2; - }); - function omitBy(object, predicate) { - return pickBy(object, negate(getIteratee(predicate))); - } - var pick2 = flatRest(function(object, paths) { - return object == null ? {} : basePick(object, paths); - }); - function pickBy(object, predicate) { - if (object == null) { - return {}; - } - var props = arrayMap(getAllKeysIn(object), function(prop) { - return [prop]; - }); - predicate = getIteratee(predicate); - return basePickBy(object, props, function(value, path2) { - return predicate(value, path2[0]); - }); - } - function result(object, path2, defaultValue) { - path2 = castPath(path2, object); - var index2 = -1, length = path2.length; - if (!length) { - length = 1; - object = undefined2; - } - while (++index2 < length) { - var value = object == null ? undefined2 : object[toKey(path2[index2])]; - if (value === undefined2) { - index2 = length; - value = defaultValue; - } - object = isFunction(value) ? value.call(object) : value; - } - return object; - } - function set3(object, path2, value) { - return object == null ? object : baseSet(object, path2, value); - } - function setWith(object, path2, value, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - return object == null ? object : baseSet(object, path2, value, customizer); - } - var toPairs = createToPairs(keys); - var toPairsIn = createToPairs(keysIn); - function transform2(object, iteratee2, accumulator) { - var isArr = isArray(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object); - iteratee2 = getIteratee(iteratee2, 4); - if (accumulator == null) { - var Ctor = object && object.constructor; - if (isArrLike) { - accumulator = isArr ? new Ctor() : []; - } else if (isObject(object)) { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } else { - accumulator = {}; - } - } - (isArrLike ? arrayEach : baseForOwn)(object, function(value, index2, object2) { - return iteratee2(accumulator, value, index2, object2); - }); - return accumulator; - } - function unset(object, path2) { - return object == null ? true : baseUnset(object, path2); - } - function update2(object, path2, updater) { - return object == null ? object : baseUpdate(object, path2, castFunction(updater)); - } - function updateWith(object, path2, updater, customizer) { - customizer = typeof customizer == "function" ? customizer : undefined2; - return object == null ? object : baseUpdate(object, path2, castFunction(updater), customizer); - } - function values(object) { - return object == null ? [] : baseValues(object, keys(object)); - } - function valuesIn(object) { - return object == null ? [] : baseValues(object, keysIn(object)); - } - function clamp(number3, lower2, upper) { - if (upper === undefined2) { - upper = lower2; - lower2 = undefined2; - } - if (upper !== undefined2) { - upper = toNumber(upper); - upper = upper === upper ? upper : 0; - } - if (lower2 !== undefined2) { - lower2 = toNumber(lower2); - lower2 = lower2 === lower2 ? lower2 : 0; - } - return baseClamp(toNumber(number3), lower2, upper); - } - function inRange(number3, start2, end) { - start2 = toFinite(start2); - if (end === undefined2) { - end = start2; - start2 = 0; - } else { - end = toFinite(end); - } - number3 = toNumber(number3); - return baseInRange(number3, start2, end); - } - function random(lower2, upper, floating) { - if (floating && typeof floating != "boolean" && isIterateeCall(lower2, upper, floating)) { - upper = floating = undefined2; - } - if (floating === undefined2) { - if (typeof upper == "boolean") { - floating = upper; - upper = undefined2; - } else if (typeof lower2 == "boolean") { - floating = lower2; - lower2 = undefined2; - } - } - if (lower2 === undefined2 && upper === undefined2) { - lower2 = 0; - upper = 1; - } else { - lower2 = toFinite(lower2); - if (upper === undefined2) { - upper = lower2; - lower2 = 0; - } else { - upper = toFinite(upper); - } - } - if (lower2 > upper) { - var temp = lower2; - lower2 = upper; - upper = temp; - } - if (floating || lower2 % 1 || upper % 1) { - var rand = nativeRandom(); - return nativeMin(lower2 + rand * (upper - lower2 + freeParseFloat("1e-" + ((rand + "").length - 1))), upper); - } - return baseRandom(lower2, upper); - } - var camelCase = createCompounder(function(result2, word, index2) { - word = word.toLowerCase(); - return result2 + (index2 ? capitalize(word) : word); - }); - function capitalize(string) { - return upperFirst(toString(string).toLowerCase()); - } - function deburr(string) { - string = toString(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ""); - } - function endsWith(string, target, position) { - string = toString(string); - target = baseToString(target); - var length = string.length; - position = position === undefined2 ? length : baseClamp(toInteger(position), 0, length); - var end = position; - position -= target.length; - return position >= 0 && string.slice(position, end) == target; - } - function escape(string) { - string = toString(string); - return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string; - } - function escapeRegExp(string) { - string = toString(string); - return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string; - } - var kebabCase = createCompounder(function(result2, word, index2) { - return result2 + (index2 ? "-" : "") + word.toLowerCase(); - }); - var lowerCase = createCompounder(function(result2, word, index2) { - return result2 + (index2 ? " " : "") + word.toLowerCase(); - }); - var lowerFirst = createCaseFirst("toLowerCase"); - function pad(string, length, chars) { - string = toString(string); - length = toInteger(length); - var strLength = length ? stringSize(string) : 0; - if (!length || strLength >= length) { - return string; - } - var mid = (length - strLength) / 2; - return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars); - } - function padEnd(string, length, chars) { - string = toString(string); - length = toInteger(length); - var strLength = length ? stringSize(string) : 0; - return length && strLength < length ? string + createPadding(length - strLength, chars) : string; - } - function padStart2(string, length, chars) { - string = toString(string); - length = toInteger(length); - var strLength = length ? stringSize(string) : 0; - return length && strLength < length ? createPadding(length - strLength, chars) + string : string; - } - function parseInt2(string, radix, guard) { - if (guard || radix == null) { - radix = 0; - } else if (radix) { - radix = +radix; - } - return nativeParseInt(toString(string).replace(reTrimStart, ""), radix || 0); - } - function repeat(string, n2, guard) { - if (guard ? isIterateeCall(string, n2, guard) : n2 === undefined2) { - n2 = 1; - } else { - n2 = toInteger(n2); - } - return baseRepeat(toString(string), n2); - } - function replace() { - var args = arguments, string = toString(args[0]); - return args.length < 3 ? string : string.replace(args[1], args[2]); - } - var snakeCase = createCompounder(function(result2, word, index2) { - return result2 + (index2 ? "_" : "") + word.toLowerCase(); - }); - function split(string, separator, limit) { - if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) { - separator = limit = undefined2; - } - limit = limit === undefined2 ? MAX_ARRAY_LENGTH : limit >>> 0; - if (!limit) { - return []; - } - string = toString(string); - if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) { - separator = baseToString(separator); - if (!separator && hasUnicode(string)) { - return castSlice(stringToArray(string), 0, limit); - } - } - return string.split(separator, limit); - } - var startCase = createCompounder(function(result2, word, index2) { - return result2 + (index2 ? " " : "") + upperFirst(word); - }); - function startsWith(string, target, position) { - string = toString(string); - position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length); - target = baseToString(target); - return string.slice(position, position + target.length) == target; - } - function template(string, options, guard) { - var settings = lodash.templateSettings; - if (guard && isIterateeCall(string, options, guard)) { - options = undefined2; - } - string = toString(string); - options = assignInWith({}, options, settings, customDefaultsAssignIn); - var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys); - var isEscaping, isEvaluating, index2 = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '"; - var reDelimiters = RegExp2( - (options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", - "g" - ); - var sourceURL = "//# sourceURL=" + (hasOwnProperty2.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n"; - string.replace(reDelimiters, function(match2, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset2) { - interpolateValue || (interpolateValue = esTemplateValue); - source += string.slice(index2, offset2).replace(reUnescapedString, escapeStringChar); - if (escapeValue) { - isEscaping = true; - source += "' +\n__e(" + escapeValue + ") +\n'"; - } - if (evaluateValue) { - isEvaluating = true; - source += "';\n" + evaluateValue + ";\n__p += '"; - } - if (interpolateValue) { - source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; - } - index2 = offset2 + match2.length; - return match2; - }); - source += "';\n"; - var variable = hasOwnProperty2.call(options, "variable") && options.variable; - if (!variable) { - source = "with (obj) {\n" + source + "\n}\n"; - } else if (reForbiddenIdentifierChars.test(variable)) { - throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT); - } - source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;"); - source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}"; - var result2 = attempt(function() { - return Function2(importsKeys, sourceURL + "return " + source).apply(undefined2, importsValues); - }); - result2.source = source; - if (isError(result2)) { - throw result2; - } - return result2; - } - function toLower(value) { - return toString(value).toLowerCase(); - } - function toUpper(value) { - return toString(value).toUpperCase(); - } - function trim(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined2)) { - return baseTrim(string); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start2 = charsStartIndex(strSymbols, chrSymbols), end = charsEndIndex(strSymbols, chrSymbols) + 1; - return castSlice(strSymbols, start2, end).join(""); - } - function trimEnd(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined2)) { - return string.slice(0, trimmedEndIndex(string) + 1); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), end = charsEndIndex(strSymbols, stringToArray(chars)) + 1; - return castSlice(strSymbols, 0, end).join(""); - } - function trimStart(string, chars, guard) { - string = toString(string); - if (string && (guard || chars === undefined2)) { - return string.replace(reTrimStart, ""); - } - if (!string || !(chars = baseToString(chars))) { - return string; - } - var strSymbols = stringToArray(string), start2 = charsStartIndex(strSymbols, stringToArray(chars)); - return castSlice(strSymbols, start2).join(""); - } - function truncate(string, options) { - var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION; - if (isObject(options)) { - var separator = "separator" in options ? options.separator : separator; - length = "length" in options ? toInteger(options.length) : length; - omission = "omission" in options ? baseToString(options.omission) : omission; - } - string = toString(string); - var strLength = string.length; - if (hasUnicode(string)) { - var strSymbols = stringToArray(string); - strLength = strSymbols.length; - } - if (length >= strLength) { - return string; - } - var end = length - stringSize(omission); - if (end < 1) { - return omission; - } - var result2 = strSymbols ? castSlice(strSymbols, 0, end).join("") : string.slice(0, end); - if (separator === undefined2) { - return result2 + omission; - } - if (strSymbols) { - end += result2.length - end; - } - if (isRegExp(separator)) { - if (string.slice(end).search(separator)) { - var match2, substring = result2; - if (!separator.global) { - separator = RegExp2(separator.source, toString(reFlags.exec(separator)) + "g"); - } - separator.lastIndex = 0; - while (match2 = separator.exec(substring)) { - var newEnd = match2.index; - } - result2 = result2.slice(0, newEnd === undefined2 ? end : newEnd); - } - } else if (string.indexOf(baseToString(separator), end) != end) { - var index2 = result2.lastIndexOf(separator); - if (index2 > -1) { - result2 = result2.slice(0, index2); - } - } - return result2 + omission; - } - function unescape(string) { - string = toString(string); - return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string; - } - var upperCase = createCompounder(function(result2, word, index2) { - return result2 + (index2 ? " " : "") + word.toUpperCase(); - }); - var upperFirst = createCaseFirst("toUpperCase"); - function words(string, pattern, guard) { - string = toString(string); - pattern = guard ? undefined2 : pattern; - if (pattern === undefined2) { - return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); - } - return string.match(pattern) || []; - } - var attempt = baseRest(function(func, args) { - try { - return apply(func, undefined2, args); - } catch (e) { - return isError(e) ? e : new Error2(e); - } - }); - var bindAll = flatRest(function(object, methodNames) { - arrayEach(methodNames, function(key) { - key = toKey(key); - baseAssignValue(object, key, bind(object[key], object)); - }); - return object; - }); - function cond(pairs) { - var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee(); - pairs = !length ? [] : arrayMap(pairs, function(pair) { - if (typeof pair[1] != "function") { - throw new TypeError2(FUNC_ERROR_TEXT); - } - return [toIteratee(pair[0]), pair[1]]; - }); - return baseRest(function(args) { - var index2 = -1; - while (++index2 < length) { - var pair = pairs[index2]; - if (apply(pair[0], this, args)) { - return apply(pair[1], this, args); - } - } - }); - } - function conforms(source) { - return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); - } - function constant(value) { - return function() { - return value; - }; - } - function defaultTo(value, defaultValue) { - return value == null || value !== value ? defaultValue : value; - } - var flow = createFlow(); - var flowRight = createFlow(true); - function identity4(value) { - return value; - } - function iteratee(func) { - return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG)); - } - function matches(source) { - return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); - } - function matchesProperty(path2, srcValue) { - return baseMatchesProperty(path2, baseClone(srcValue, CLONE_DEEP_FLAG)); - } - var method = baseRest(function(path2, args) { - return function(object) { - return baseInvoke(object, path2, args); - }; - }); - var methodOf = baseRest(function(object, args) { - return function(path2) { - return baseInvoke(object, path2, args); - }; - }); - function mixin(object, source, options) { - var props = keys(source), methodNames = baseFunctions(source, props); - if (options == null && !(isObject(source) && (methodNames.length || !props.length))) { - options = source; - source = object; - object = this; - methodNames = baseFunctions(source, keys(source)); - } - var chain2 = !(isObject(options) && "chain" in options) || !!options.chain, isFunc = isFunction(object); - arrayEach(methodNames, function(methodName) { - var func = source[methodName]; - object[methodName] = func; - if (isFunc) { - object.prototype[methodName] = function() { - var chainAll = this.__chain__; - if (chain2 || chainAll) { - var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__); - actions.push({ "func": func, "args": arguments, "thisArg": object }); - result2.__chain__ = chainAll; - return result2; - } - return func.apply(object, arrayPush([this.value()], arguments)); - }; - } - }); - return object; - } - function noConflict() { - if (root2._ === this) { - root2._ = oldDash; - } - return this; - } - function noop3() { - } - function nthArg(n2) { - n2 = toInteger(n2); - return baseRest(function(args) { - return baseNth(args, n2); - }); - } - var over = createOver(arrayMap); - var overEvery = createOver(arrayEvery); - var overSome = createOver(arraySome); - function property(path2) { - return isKey(path2) ? baseProperty(toKey(path2)) : basePropertyDeep(path2); - } - function propertyOf(object) { - return function(path2) { - return object == null ? undefined2 : baseGet(object, path2); - }; - } - var range = createRange(); - var rangeRight = createRange(true); - function stubArray() { - return []; - } - function stubFalse() { - return false; - } - function stubObject() { - return {}; - } - function stubString() { - return ""; - } - function stubTrue() { - return true; - } - function times(n2, iteratee2) { - n2 = toInteger(n2); - if (n2 < 1 || n2 > MAX_SAFE_INTEGER) { - return []; - } - var index2 = MAX_ARRAY_LENGTH, length = nativeMin(n2, MAX_ARRAY_LENGTH); - iteratee2 = getIteratee(iteratee2); - n2 -= MAX_ARRAY_LENGTH; - var result2 = baseTimes(length, iteratee2); - while (++index2 < n2) { - iteratee2(index2); - } - return result2; - } - function toPath(value) { - if (isArray(value)) { - return arrayMap(value, toKey); - } - return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value))); - } - function uniqueId(prefix) { - var id2 = ++idCounter; - return toString(prefix) + id2; - } - var add2 = createMathOperation(function(augend, addend) { - return augend + addend; - }, 0); - var ceil = createRound("ceil"); - var divide = createMathOperation(function(dividend, divisor) { - return dividend / divisor; - }, 1); - var floor = createRound("floor"); - function max4(array) { - return array && array.length ? baseExtremum(array, identity4, baseGt) : undefined2; - } - function maxBy(array, iteratee2) { - return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2; - } - function mean(array) { - return baseMean(array, identity4); - } - function meanBy(array, iteratee2) { - return baseMean(array, getIteratee(iteratee2, 2)); - } - function min3(array) { - return array && array.length ? baseExtremum(array, identity4, baseLt) : undefined2; - } - function minBy(array, iteratee2) { - return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined2; - } - var multiply = createMathOperation(function(multiplier, multiplicand) { - return multiplier * multiplicand; - }, 1); - var round = createRound("round"); - var subtract = createMathOperation(function(minuend, subtrahend) { - return minuend - subtrahend; - }, 0); - function sum(array) { - return array && array.length ? baseSum(array, identity4) : 0; - } - function sumBy(array, iteratee2) { - return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0; - } - lodash.after = after; - lodash.ary = ary; - lodash.assign = assign2; - lodash.assignIn = assignIn; - lodash.assignInWith = assignInWith; - lodash.assignWith = assignWith; - lodash.at = at; - lodash.before = before; - lodash.bind = bind; - lodash.bindAll = bindAll; - lodash.bindKey = bindKey2; - lodash.castArray = castArray; - lodash.chain = chain; - lodash.chunk = chunk; - lodash.compact = compact; - lodash.concat = concat; - lodash.cond = cond; - lodash.conforms = conforms; - lodash.constant = constant; - lodash.countBy = countBy; - lodash.create = create2; - lodash.curry = curry; - lodash.curryRight = curryRight; - lodash.debounce = debounce; - lodash.defaults = defaults; - lodash.defaultsDeep = defaultsDeep; - lodash.defer = defer; - lodash.delay = delay; - lodash.difference = difference; - lodash.differenceBy = differenceBy; - lodash.differenceWith = differenceWith; - lodash.drop = drop; - lodash.dropRight = dropRight; - lodash.dropRightWhile = dropRightWhile; - lodash.dropWhile = dropWhile; - lodash.fill = fill; - lodash.filter = filter2; - lodash.flatMap = flatMap; - lodash.flatMapDeep = flatMapDeep; - lodash.flatMapDepth = flatMapDepth; - lodash.flatten = flatten; - lodash.flattenDeep = flattenDeep; - lodash.flattenDepth = flattenDepth; - lodash.flip = flip; - lodash.flow = flow; - lodash.flowRight = flowRight; - lodash.fromPairs = fromPairs; - lodash.functions = functions; - lodash.functionsIn = functionsIn; - lodash.groupBy = groupBy; - lodash.initial = initial; - lodash.intersection = intersection; - lodash.intersectionBy = intersectionBy; - lodash.intersectionWith = intersectionWith; - lodash.invert = invert; - lodash.invertBy = invertBy; - lodash.invokeMap = invokeMap; - lodash.iteratee = iteratee; - lodash.keyBy = keyBy; - lodash.keys = keys; - lodash.keysIn = keysIn; - lodash.map = map2; - lodash.mapKeys = mapKeys; - lodash.mapValues = mapValues; - lodash.matches = matches; - lodash.matchesProperty = matchesProperty; - lodash.memoize = memoize; - lodash.merge = merge; - lodash.mergeWith = mergeWith; - lodash.method = method; - lodash.methodOf = methodOf; - lodash.mixin = mixin; - lodash.negate = negate; - lodash.nthArg = nthArg; - lodash.omit = omit; - lodash.omitBy = omitBy; - lodash.once = once; - lodash.orderBy = orderBy; - lodash.over = over; - lodash.overArgs = overArgs; - lodash.overEvery = overEvery; - lodash.overSome = overSome; - lodash.partial = partial; - lodash.partialRight = partialRight; - lodash.partition = partition; - lodash.pick = pick2; - lodash.pickBy = pickBy; - lodash.property = property; - lodash.propertyOf = propertyOf; - lodash.pull = pull; - lodash.pullAll = pullAll; - lodash.pullAllBy = pullAllBy; - lodash.pullAllWith = pullAllWith; - lodash.pullAt = pullAt; - lodash.range = range; - lodash.rangeRight = rangeRight; - lodash.rearg = rearg; - lodash.reject = reject; - lodash.remove = remove2; - lodash.rest = rest; - lodash.reverse = reverse; - lodash.sampleSize = sampleSize; - lodash.set = set3; - lodash.setWith = setWith; - lodash.shuffle = shuffle; - lodash.slice = slice2; - lodash.sortBy = sortBy; - lodash.sortedUniq = sortedUniq; - lodash.sortedUniqBy = sortedUniqBy; - lodash.split = split; - lodash.spread = spread; - lodash.tail = tail; - lodash.take = take; - lodash.takeRight = takeRight; - lodash.takeRightWhile = takeRightWhile; - lodash.takeWhile = takeWhile; - lodash.tap = tap; - lodash.throttle = throttle; - lodash.thru = thru; - lodash.toArray = toArray; - lodash.toPairs = toPairs; - lodash.toPairsIn = toPairsIn; - lodash.toPath = toPath; - lodash.toPlainObject = toPlainObject; - lodash.transform = transform2; - lodash.unary = unary; - lodash.union = union; - lodash.unionBy = unionBy; - lodash.unionWith = unionWith; - lodash.uniq = uniq; - lodash.uniqBy = uniqBy; - lodash.uniqWith = uniqWith; - lodash.unset = unset; - lodash.unzip = unzip; - lodash.unzipWith = unzipWith; - lodash.update = update2; - lodash.updateWith = updateWith; - lodash.values = values; - lodash.valuesIn = valuesIn; - lodash.without = without; - lodash.words = words; - lodash.wrap = wrap; - lodash.xor = xor; - lodash.xorBy = xorBy; - lodash.xorWith = xorWith; - lodash.zip = zip; - lodash.zipObject = zipObject; - lodash.zipObjectDeep = zipObjectDeep; - lodash.zipWith = zipWith; - lodash.entries = toPairs; - lodash.entriesIn = toPairsIn; - lodash.extend = assignIn; - lodash.extendWith = assignInWith; - mixin(lodash, lodash); - lodash.add = add2; - lodash.attempt = attempt; - lodash.camelCase = camelCase; - lodash.capitalize = capitalize; - lodash.ceil = ceil; - lodash.clamp = clamp; - lodash.clone = clone3; - lodash.cloneDeep = cloneDeep2; - lodash.cloneDeepWith = cloneDeepWith; - lodash.cloneWith = cloneWith; - lodash.conformsTo = conformsTo; - lodash.deburr = deburr; - lodash.defaultTo = defaultTo; - lodash.divide = divide; - lodash.endsWith = endsWith; - lodash.eq = eq; - lodash.escape = escape; - lodash.escapeRegExp = escapeRegExp; - lodash.every = every; - lodash.find = find3; - lodash.findIndex = findIndex; - lodash.findKey = findKey; - lodash.findLast = findLast; - lodash.findLastIndex = findLastIndex; - lodash.findLastKey = findLastKey; - lodash.floor = floor; - lodash.forEach = forEach; - lodash.forEachRight = forEachRight; - lodash.forIn = forIn; - lodash.forInRight = forInRight; - lodash.forOwn = forOwn; - lodash.forOwnRight = forOwnRight; - lodash.get = get3; - lodash.gt = gt; - lodash.gte = gte; - lodash.has = has; - lodash.hasIn = hasIn; - lodash.head = head; - lodash.identity = identity4; - lodash.includes = includes; - lodash.indexOf = indexOf; - lodash.inRange = inRange; - lodash.invoke = invoke; - lodash.isArguments = isArguments; - lodash.isArray = isArray; - lodash.isArrayBuffer = isArrayBuffer; - lodash.isArrayLike = isArrayLike; - lodash.isArrayLikeObject = isArrayLikeObject; - lodash.isBoolean = isBoolean; - lodash.isBuffer = isBuffer; - lodash.isDate = isDate2; - lodash.isElement = isElement; - lodash.isEmpty = isEmpty; - lodash.isEqual = isEqual; - lodash.isEqualWith = isEqualWith; - lodash.isError = isError; - lodash.isFinite = isFinite2; - lodash.isFunction = isFunction; - lodash.isInteger = isInteger2; - lodash.isLength = isLength; - lodash.isMap = isMap; - lodash.isMatch = isMatch; - lodash.isMatchWith = isMatchWith; - lodash.isNaN = isNaN2; - lodash.isNative = isNative; - lodash.isNil = isNil; - lodash.isNull = isNull; - lodash.isNumber = isNumber2; - lodash.isObject = isObject; - lodash.isObjectLike = isObjectLike; - lodash.isPlainObject = isPlainObject; - lodash.isRegExp = isRegExp; - lodash.isSafeInteger = isSafeInteger; - lodash.isSet = isSet; - lodash.isString = isString2; - lodash.isSymbol = isSymbol; - lodash.isTypedArray = isTypedArray; - lodash.isUndefined = isUndefined2; - lodash.isWeakMap = isWeakMap; - lodash.isWeakSet = isWeakSet; - lodash.join = join; - lodash.kebabCase = kebabCase; - lodash.last = last; - lodash.lastIndexOf = lastIndexOf; - lodash.lowerCase = lowerCase; - lodash.lowerFirst = lowerFirst; - lodash.lt = lt; - lodash.lte = lte; - lodash.max = max4; - lodash.maxBy = maxBy; - lodash.mean = mean; - lodash.meanBy = meanBy; - lodash.min = min3; - lodash.minBy = minBy; - lodash.stubArray = stubArray; - lodash.stubFalse = stubFalse; - lodash.stubObject = stubObject; - lodash.stubString = stubString; - lodash.stubTrue = stubTrue; - lodash.multiply = multiply; - lodash.nth = nth; - lodash.noConflict = noConflict; - lodash.noop = noop3; - lodash.now = now3; - lodash.pad = pad; - lodash.padEnd = padEnd; - lodash.padStart = padStart2; - lodash.parseInt = parseInt2; - lodash.random = random; - lodash.reduce = reduce; - lodash.reduceRight = reduceRight; - lodash.repeat = repeat; - lodash.replace = replace; - lodash.result = result; - lodash.round = round; - lodash.runInContext = runInContext2; - lodash.sample = sample; - lodash.size = size; - lodash.snakeCase = snakeCase; - lodash.some = some; - lodash.sortedIndex = sortedIndex; - lodash.sortedIndexBy = sortedIndexBy; - lodash.sortedIndexOf = sortedIndexOf; - lodash.sortedLastIndex = sortedLastIndex; - lodash.sortedLastIndexBy = sortedLastIndexBy; - lodash.sortedLastIndexOf = sortedLastIndexOf; - lodash.startCase = startCase; - lodash.startsWith = startsWith; - lodash.subtract = subtract; - lodash.sum = sum; - lodash.sumBy = sumBy; - lodash.template = template; - lodash.times = times; - lodash.toFinite = toFinite; - lodash.toInteger = toInteger; - lodash.toLength = toLength; - lodash.toLower = toLower; - lodash.toNumber = toNumber; - lodash.toSafeInteger = toSafeInteger; - lodash.toString = toString; - lodash.toUpper = toUpper; - lodash.trim = trim; - lodash.trimEnd = trimEnd; - lodash.trimStart = trimStart; - lodash.truncate = truncate; - lodash.unescape = unescape; - lodash.uniqueId = uniqueId; - lodash.upperCase = upperCase; - lodash.upperFirst = upperFirst; - lodash.each = forEach; - lodash.eachRight = forEachRight; - lodash.first = head; - mixin(lodash, function() { - var source = {}; - baseForOwn(lodash, function(func, methodName) { - if (!hasOwnProperty2.call(lodash.prototype, methodName)) { - source[methodName] = func; - } - }); - return source; - }(), { "chain": false }); - lodash.VERSION = VERSION; - arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) { - lodash[methodName].placeholder = lodash; - }); - arrayEach(["drop", "take"], function(methodName, index2) { - LazyWrapper.prototype[methodName] = function(n2) { - n2 = n2 === undefined2 ? 1 : nativeMax(toInteger(n2), 0); - var result2 = this.__filtered__ && !index2 ? new LazyWrapper(this) : this.clone(); - if (result2.__filtered__) { - result2.__takeCount__ = nativeMin(n2, result2.__takeCount__); - } else { - result2.__views__.push({ - "size": nativeMin(n2, MAX_ARRAY_LENGTH), - "type": methodName + (result2.__dir__ < 0 ? "Right" : "") - }); - } - return result2; - }; - LazyWrapper.prototype[methodName + "Right"] = function(n2) { - return this.reverse()[methodName](n2).reverse(); - }; - }); - arrayEach(["filter", "map", "takeWhile"], function(methodName, index2) { - var type2 = index2 + 1, isFilter = type2 == LAZY_FILTER_FLAG || type2 == LAZY_WHILE_FLAG; - LazyWrapper.prototype[methodName] = function(iteratee2) { - var result2 = this.clone(); - result2.__iteratees__.push({ - "iteratee": getIteratee(iteratee2, 3), - "type": type2 - }); - result2.__filtered__ = result2.__filtered__ || isFilter; - return result2; - }; - }); - arrayEach(["head", "last"], function(methodName, index2) { - var takeName = "take" + (index2 ? "Right" : ""); - LazyWrapper.prototype[methodName] = function() { - return this[takeName](1).value()[0]; - }; - }); - arrayEach(["initial", "tail"], function(methodName, index2) { - var dropName = "drop" + (index2 ? "" : "Right"); - LazyWrapper.prototype[methodName] = function() { - return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); - }; - }); - LazyWrapper.prototype.compact = function() { - return this.filter(identity4); - }; - LazyWrapper.prototype.find = function(predicate) { - return this.filter(predicate).head(); - }; - LazyWrapper.prototype.findLast = function(predicate) { - return this.reverse().find(predicate); - }; - LazyWrapper.prototype.invokeMap = baseRest(function(path2, args) { - if (typeof path2 == "function") { - return new LazyWrapper(this); - } - return this.map(function(value) { - return baseInvoke(value, path2, args); - }); - }); - LazyWrapper.prototype.reject = function(predicate) { - return this.filter(negate(getIteratee(predicate))); - }; - LazyWrapper.prototype.slice = function(start2, end) { - start2 = toInteger(start2); - var result2 = this; - if (result2.__filtered__ && (start2 > 0 || end < 0)) { - return new LazyWrapper(result2); - } - if (start2 < 0) { - result2 = result2.takeRight(-start2); - } else if (start2) { - result2 = result2.drop(start2); - } - if (end !== undefined2) { - end = toInteger(end); - result2 = end < 0 ? result2.dropRight(-end) : result2.take(end - start2); - } - return result2; - }; - LazyWrapper.prototype.takeRightWhile = function(predicate) { - return this.reverse().takeWhile(predicate).reverse(); - }; - LazyWrapper.prototype.toArray = function() { - return this.take(MAX_ARRAY_LENGTH); - }; - baseForOwn(LazyWrapper.prototype, function(func, methodName) { - var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName); - if (!lodashFunc) { - return; - } - lodash.prototype[methodName] = function() { - var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray(value); - var interceptor = function(value2) { - var result3 = lodashFunc.apply(lodash, arrayPush([value2], args)); - return isTaker && chainAll ? result3[0] : result3; - }; - if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) { - isLazy = useLazy = false; - } - var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid; - if (!retUnwrapped && useLazy) { - value = onlyLazy ? value : new LazyWrapper(this); - var result2 = func.apply(value, args); - result2.__actions__.push({ "func": thru, "args": [interceptor], "thisArg": undefined2 }); - return new LodashWrapper(result2, chainAll); - } - if (isUnwrapped && onlyLazy) { - return func.apply(this, args); - } - result2 = this.thru(interceptor); - return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2; - }; - }); - arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) { - var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName); - lodash.prototype[methodName] = function() { - var args = arguments; - if (retUnwrapped && !this.__chain__) { - var value = this.value(); - return func.apply(isArray(value) ? value : [], args); - } - return this[chainName](function(value2) { - return func.apply(isArray(value2) ? value2 : [], args); - }); - }; - }); - baseForOwn(LazyWrapper.prototype, function(func, methodName) { - var lodashFunc = lodash[methodName]; - if (lodashFunc) { - var key = lodashFunc.name + ""; - if (!hasOwnProperty2.call(realNames, key)) { - realNames[key] = []; - } - realNames[key].push({ "name": methodName, "func": lodashFunc }); - } - }); - realNames[createHybrid(undefined2, WRAP_BIND_KEY_FLAG).name] = [{ - "name": "wrapper", - "func": undefined2 - }]; - LazyWrapper.prototype.clone = lazyClone; - LazyWrapper.prototype.reverse = lazyReverse; - LazyWrapper.prototype.value = lazyValue; - lodash.prototype.at = wrapperAt; - lodash.prototype.chain = wrapperChain; - lodash.prototype.commit = wrapperCommit; - lodash.prototype.next = wrapperNext; - lodash.prototype.plant = wrapperPlant; - lodash.prototype.reverse = wrapperReverse; - lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; - lodash.prototype.first = lodash.prototype.head; - if (symIterator) { - lodash.prototype[symIterator] = wrapperToIterator; - } - return lodash; - }; - var _ = runInContext(); - if (typeof define == "function" && typeof define.amd == "object" && define.amd) { - root2._ = _; - define(function() { - return _; - }); - } else if (freeModule) { - (freeModule.exports = _)._ = _; - freeExports._ = _; - } else { - root2._ = _; - } - }).call(exports); - } -}); - // src/main.ts var main_exports = {}; __export(main_exports, { - default: () => BCPlugin + default: () => BreadcrumbsPlugin }); module.exports = __toCommonJS(main_exports); +var import_obsidian37 = require("obsidian"); -// node_modules/juggl-api/dist/index.mjs +// src/codeblocks/index.ts var import_obsidian = require("obsidian"); -var CAT_DANGLING = "dangling"; -var CORE_STORE_ID = "core"; -var VizId = class { - constructor(id2, storeId) { - this.id = id2; - this.storeId = storeId; + +// src/external/dataview/index.ts +var import_obsidian_dataview = __toESM(require_lib()); + +// src/logger/index.ts +var LOG_LEVELS = [ + "DEBUG", + "INFO", + "WARN", + "ERROR", + // Some features log data + "FEAT" +]; +var LEVEL_COLOURS = { + DEBUG: "#999", + INFO: null, + WARN: "#f90", + ERROR: "#f00", + FEAT: "#0f0" +}; +var build_prefix = (level) => { + const colour = LEVEL_COLOURS[level]; + const prefix = `[BC:${level}][${(/* @__PURE__ */ new Date()).toISOString().split("T")[1]}]`; + return [ + colour ? `%c${prefix}` : prefix, + colour ? `color: ${LEVEL_COLOURS[level]};` : "", + "\n" + ]; +}; +var Logger = class { + constructor(level) { + this.set_level(level); } - toString() { - return `${this.storeId}:${this.id}`; + debug(...args) { + if (this.level_i <= 0) { + console.log(...build_prefix("DEBUG"), ...args); + } } - toId() { - return this.toString(); + info(...args) { + if (this.level_i <= 1) { + console.log(...build_prefix("INFO"), ...args); + } } - static fromId(id2) { - const split = id2.split(":"); - const storeId = split[0]; - const _id = split.slice(1).join(":"); - return new VizId(_id, storeId); + warn(...args) { + if (this.level_i <= 2) { + console.log(...build_prefix("WARN"), ...args); + } } - static fromNode(node) { - return VizId.fromId(node.id()); + error(...args) { + if (this.level_i <= 3) { + console.log(...build_prefix("ERROR"), ...args); + } } - static fromNodes(nodes) { - return nodes.map((n2) => VizId.fromNode(n2)); + feat(...args) { + if (this.level_i <= 4) { + console.log(...build_prefix("FEAT"), ...args); + } } - static fromFile(file) { - return new VizId(file.name, "core"); - } - static toId(id2, storeId) { - return new VizId(id2, storeId).toId(); + set_level(level) { + this.level_i = LOG_LEVELS.findIndex((l2) => l2 === level); } }; -var _parseTags = function(tags) { - return [].concat(...tags.map((tag) => { - tag = tag.slice(1); - const hSplit = tag.split("/"); - const tags2 = []; - for (const i in hSplit) { - const hTag = hSplit.slice(0, parseInt(i) + 1).join("-"); - tags2.push(`tag-${hTag}`); +var log = new Logger("INFO"); + +// src/external/dataview/index.ts +var await_if_enabled = (plugin) => new Promise((resolve) => { + var _a; + if ((0, import_obsidian_dataview.isPluginEnabled)(plugin.app)) { + if ((_a = (0, import_obsidian_dataview.getAPI)(plugin.app)) == null ? void 0 : _a.index.initialized) { + log.debug("dataview > already initialized"); + resolve(); } - return tags2; - })); + plugin.registerEvent( + plugin.app.metadataCache.on( + //@ts-ignore: It's there if dataview is enabled + "dataview:index-ready", + () => { + log.debug("dataview > ready"); + resolve(); + } + ) + ); + } else { + log.debug("dataview > not enabled"); + resolve(); + } +}); +var dataview_plugin = { + get_api: import_obsidian_dataview.getAPI, + is_enabled: import_obsidian_dataview.isPluginEnabled, + await_if_enabled }; -var getClasses = function(file, metadataCache) { - if (file) { - const classes = []; - if (["png", "jpg", "jpeg", "gif", "bmp", "svg", "tiff"].contains(file.extension)) { - classes.push("image"); - } else if (["mp3", "webm", "wav", "m4a", "ogg", "3gp", "flac"].contains(file.extension)) { - classes.push("audio"); - } else if (["mp4", "webm", "ogv"].contains(file.extension)) { - classes.push("video"); - } else if (file.extension === "pdf") { - classes.push("pdf"); - } - if (file.extension === "md") { - classes.push("note"); - const cache = metadataCache.getFileCache(file); - if (cache == null ? void 0 : cache.frontmatter) { - if ("image" in cache.frontmatter) { - classes.push("image"); - } - if ("tags" in cache.frontmatter) { - const tags = (0, import_obsidian.parseFrontMatterTags)(cache.frontmatter); - if (tags) { - classes.push(..._parseTags(tags)); - } - } - if ("cssclass" in cache.frontmatter) { - const clazzes = (0, import_obsidian.parseFrontMatterStringArray)(cache.frontmatter, "cssclass"); - if (clazzes) { - classes.push(...clazzes); - } - } - } - if (cache == null ? void 0 : cache.tags) { - classes.push(..._parseTags(cache.tags.map((t) => t.tag))); - } + +// src/utils/arrays.ts +var ensure_is_array = (maybe_array) => { + if (Array.isArray(maybe_array)) + return maybe_array; + return [maybe_array]; +}; +var ensure_square_array = (arr, fill, pre) => { + const max_width = Math.max(...arr.map((row) => row.length)); + return arr.map((row) => { + const diff = max_width - row.length; + if (pre) { + return Array(diff).fill(fill).concat(row); } else { - classes.push("file"); - } - return classes; - } - return [CAT_DANGLING]; -}; -var nodeFromFile = async function(file, plugin, settings, id2) { - if (!id2) { - id2 = VizId.toId(file.name, CORE_STORE_ID); - } - const cache = plugin.app.metadataCache.getFileCache(file); - const name = file.extension === "md" ? file.basename : file.name; - const classes = getClasses(file, plugin.app.metadataCache).join(" "); - const data = { - id: id2, - name, - path: file.path - }; - if (["png", "jpg", "jpeg", "gif", "bmp", "svg", "tiff"].contains(file.extension)) { - try { - data["resource_url"] = `http://localhost:${plugin.settings.imgServerPort}/${encodeURI(file.path)}`; - } catch (e) { - } - } - if (settings.readContent && file.extension == "md") { - data["content"] = await plugin.app.vault.cachedRead(file); - } - const frontmatter = cache == null ? void 0 : cache.frontmatter; - if (frontmatter) { - Object.keys(frontmatter).forEach((k) => { - if (!(k === "position")) { - if (k === "image") { - const imageField = frontmatter[k]; - try { - new URL(imageField); - data[k] = imageField; - } catch (e) { - try { - data[k] = `http://localhost:${plugin.settings.imgServerPort}/${encodeURI(imageField)}`; - } catch (e3) { - } - } - } else { - data[k] = frontmatter[k]; - } - } - }); - } - return { - group: "nodes", - data, - classes - }; -}; -var nodeDangling = function(path2) { - return { - group: "nodes", - data: { - id: VizId.toId(path2, CORE_STORE_ID), - name: path2 - }, - classes: "dangling" - }; -}; -var wikilinkRegex = "\\[\\[([^\\]\\r\\n]+?)\\]\\]"; -var nameRegex = "[^\\W\\d]\\w*"; -var regexEscape = function(str) { - return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); -}; -var parseTypedLink = function(link2, line, typedLinkPrefix) { - const regexPublishedIn = new RegExp(`^${regexEscape(typedLinkPrefix)} (publishedIn) (\\d\\d\\d\\d) (${wikilinkRegex},? *)+$`); - const matchPI = regexPublishedIn.exec(line); - if (!(matchPI === null)) { - return { - class: "type-publishedIn", - isInline: false, - properties: { - year: matchPI[2], - context: "", - type: "publishedIn" - } - }; - } - const regex = new RegExp(`^${regexEscape(typedLinkPrefix)} (${nameRegex}) (${wikilinkRegex},? *)+$`); - const match2 = regex.exec(line); - const splitLink = link2.original.split("|"); - let alias = null; - if (splitLink.length > 1) { - alias = splitLink.slice(1).join().slice(0, -2); - } - if (!(match2 === null)) { - return { - class: `type-${match2[1]}`, - isInline: false, - properties: { - alias, - context: "", - type: match2[1] - } - }; - } - return null; -}; -var getPlugin = function(app2) { - if ("juggl" in app2.plugins.plugins) { - return app2.plugins.plugins["juggl"]; - } - return null; -}; - -// src/main.ts -var import_obsidian44 = require("obsidian"); - -// node_modules/obsidian-community-lib/dist/utils.js -var feather = __toESM(require_feather()); -var import_obsidian2 = require("obsidian"); -async function wait(delay) { - return new Promise((resolve) => setTimeout(resolve, delay)); -} -function addFeatherIcon(name, attr2 = { viewBox: "0 0 24 24", width: "100", height: "100" }) { - if (feather.icons[name]) { - const iconName = `feather-${name}`; - (0, import_obsidian2.addIcon)(iconName, feather.icons[name].toSvg(attr2)); - return iconName; - } else { - throw Error(`This Icon (${name}) doesn't exist in the Feather Library.`); - } -} -async function copy(content, success = () => new import_obsidian2.Notice("Copied to clipboard"), failure = (reason) => { - new import_obsidian2.Notice("Could not copy to clipboard"); - console.log({ reason }); -}) { - await navigator.clipboard.writeText(content).then(success, failure); -} -var isInVault = (noteName, sourcePath = "") => !!app.metadataCache.getFirstLinkpathDest(noteName, sourcePath); -function hoverPreview(event, view, to) { - const targetEl = event.target; - app.workspace.trigger("hover-link", { - event, - source: view.getViewType(), - hoverParent: view, - targetEl, - linktext: to - }); -} -async function createNewMDNote(newName, currFilePath = "") { - const newFileFolder = app.fileManager.getNewFileParent(currFilePath).path; - const newFilePath = (0, import_obsidian2.normalizePath)(`${newFileFolder}${newFileFolder === "/" ? "" : "/"}${addMD(newName)}`); - return await app.vault.create(newFilePath, ""); -} -var addMD = (noteName) => { - return noteName.match(/\.MD$|\.md$/m) ? noteName : noteName + ".md"; -}; -async function openOrSwitch(dest, event, options = { createNewFile: true }) { - const { workspace } = app; - let destFile = app.metadataCache.getFirstLinkpathDest(dest, ""); - if (!destFile && options.createNewFile) { - destFile = await createNewMDNote(dest); - } else if (!destFile && !options.createNewFile) - return; - const leavesWithDestAlreadyOpen = []; - workspace.iterateAllLeaves((leaf) => { - var _a; - if (leaf.view instanceof import_obsidian2.MarkdownView) { - const file = (_a = leaf.view) === null || _a === void 0 ? void 0 : _a.file; - if (file && file.basename + "." + file.extension === dest) { - leavesWithDestAlreadyOpen.push(leaf); - } + return row.concat(Array(diff).fill(fill)); } }); - if (leavesWithDestAlreadyOpen.length > 0) { - workspace.setActiveLeaf(leavesWithDestAlreadyOpen[0]); - } else { - const mode = app.vault.getConfig("defaultViewMode"); - const leaf = event.ctrlKey || event.getModifierState("Meta") ? workspace.splitActiveLeaf() : workspace.getUnpinnedLeaf(); - await leaf.openFile(destFile, { active: true, mode }); - } -} -async function openView(viewType, viewClass, side = "right") { - let leaf = null; - for (leaf of app.workspace.getLeavesOfType(viewType)) { - if (leaf.view instanceof viewClass) { - return leaf.view; +}; +var transpose = (arr) => { + const transposed = []; + if (!arr.length) + return transposed; + for (let i = 0; i < arr.at(0).length; i++) { + transposed.push([]); + for (let j = 0; j < arr.length; j++) { + transposed[i].push(arr[j][i]); } - await leaf.setViewState({ type: "empty" }); - break; } - leaf = (leaf !== null && leaf !== void 0 ? leaf : side === "right") ? app.workspace.getRightLeaf(false) : app.workspace.getLeftLeaf(false); - await leaf.setViewState({ - type: viewType, - active: true + return transposed; +}; +var gather_by_runs = (arr, get_value) => { + const runs = []; + for (let i = 0; i < arr.length; i++) { + const last_run = runs.at(-1); + const value = get_value(arr[i]); + if (last_run && last_run.value === value) { + last_run.last = i; + } else { + runs.push({ value, first: i, last: i }); + } + } + return runs; +}; +var group_by = (list, get_value, project = (item) => item) => { + const grouped = {}; + list.forEach((item) => { + const key = get_value(item); + if (key === void 0) + return; + const group = grouped[key]; + const projected = project(item); + if (!group) + grouped[key] = [projected]; + else + group.push(projected); }); - return leaf.view; -} -function resolvedLinksComplete(noFiles) { - const { resolvedLinks } = app.metadataCache; - return Object.keys(resolvedLinks).length === noFiles; -} -async function waitForResolvedLinks(delay = 1e3, max4 = 50) { - const noFiles = app.vault.getMarkdownFiles().length; - let i = 0; - while (!resolvedLinksComplete(noFiles) && i < max4) { - await wait(delay); - i++; - } - if (i === max4) { - throw Error("Obsidian-Community-Lib: ResolvedLinks did not finish initialising. `max` iterations was reached first."); - } -} - -// src/constants.ts -var MATRIX_VIEW = "BC-matrix"; -var DUCK_VIEW = "BC-ducks"; -var TREE_VIEW = "BC-tree"; -var TRAIL_ICON = "BC-trail-icon"; -var TRAIL_ICON_SVG = ''; -var DUCK_ICON = "BC-duck-icon"; -var DUCK_ICON_SVG = ''; -var splitLinksRegex = new RegExp(/\[\[(.+?)\]\]/g); -var dropHeaderOrAlias = new RegExp(/\[\[([^#|]+)\]\]/); -var regNFlags = new RegExp(/^.(.*?)\W(\w*)$/); -var TRAIL_LENGTHS = [ - "Shortest", - "Longest", - "All" -]; -var VISTYPES = [ - "Force Directed Graph", - "Tidy Tree", - "Circle Packing", - "Edge Bundling", - "Arc Diagram", - "Sunburst", - "Tree Map", - "Icicle", - "Radial Tree" -]; -var DIRECTIONS = ["up", "same", "down", "next", "prev"]; -var ARROW_DIRECTIONS = { - up: "\u2191", - same: "\u2194", - down: "\u2193", - next: "\u2192", - prev: "\u2190" + return grouped; }; -var RELATIONS = ["Parent", "Sibling", "Child"]; -var REAlCLOSED = ["Real", "Closed"]; -var ALLUNLINKED = ["All", "No Unlinked"]; -var CODEBLOCK_TYPES = ["tree", "juggl"]; -var CODEBLOCK_FIELDS = [ - "type", - "dir", - "fields", - "depth", - "title", - "flat", - "content", - "from", - "implied" -]; -var JUGGL_CB_DEFAULTS = { - // @ts-ignore - animateLayout: true, - autoAddNodes: false, - autoExpand: false, - autoZoom: false, - coreStore: "core", - expandInitial: false, - fdgdLayout: "d3-force", - filter: "", - height: "750px", - hoverEdges: false, - layout: "force-directed", - limit: 250, - mergeEdges: true, - // metaKeyHover: true, - mode: "workspace", - navigator: true, - openWithShift: false, - readContent: true, - styleGroups: [], - toolbar: true, - width: "100%", - zoomSpeed: 1 +var group_projection = (grouped, projector) => { + const projected = {}; + Object.entries(grouped).forEach(([key, items]) => { + projected[key] = projector(items); + }); + return projected; }; -var JUGGL_TRAIL_DEFAULTS = Object.assign( - JUGGL_CB_DEFAULTS, - { - animateLayout: true, - autoZoom: false, - fdgdLayout: "d3-force", - height: "300px", - readContent: false, - toolbar: false, - navigator: false - } -); -CODEBLOCK_FIELDS.push(...Object.keys(JUGGL_CB_DEFAULTS)); -var blankUserHier = () => { - return { up: [], same: [], down: [], next: [], prev: [] }; +var remove_duplicates = (arr) => { + const set = new Set(arr); + return Array.from(set); }; -var blankRealNImplied = () => { - return { - up: { reals: [], implieds: [] }, - down: { reals: [], implieds: [] }, - same: { reals: [], implieds: [] }, - next: { reals: [], implieds: [] }, - prev: { reals: [], implieds: [] } - }; -}; -var [ - BC_I_AUNT, - BC_I_COUSIN, - BC_I_SIBLING_1, - BC_I_SIBLING_2, - BC_I_REFLEXIVE, - BC_I_PARENT -] = [ - "BC-Aunt", - "BC-Cousin", - "BC-Sibling-1", - "BC-Sibling-2", - "BC-Reflexive", - "BC-Parent" -]; -var [ - BC_FOLDER_NOTE, - BC_FOLDER_NOTE_SUBFOLDERS, - BC_FOLDER_NOTE_RECURSIVE, - BC_TAG_NOTE, - BC_TAG_NOTE_FIELD, - BC_TAG_NOTE_EXACT, - BC_LINK_NOTE, - BC_TRAVERSE_NOTE, - BC_REGEX_NOTE, - BC_REGEX_NOTE_FIELD, - BC_DV_NOTE, - BC_DV_NOTE_FIELD, - BC_IGNORE, - BC_IGNORE_DENDRON, - BC_HIDE_TRAIL, - BC_ORDER -] = [ - "BC-folder-note", - "BC-folder-note-subfolders", - "BC-folder-note-recursive", - "BC-tag-note", - "BC-tag-note-field", - "BC-tag-note-exact", - "BC-link-note", - "BC-traverse-note", - "BC-regex-note", - "BC-regex-note-field", - "BC-dataview-note", - "BC-dataview-note-field", - "BC-ignore", - "BC-ignore-dendron", - "BC-hide-trail", - "BC-order" -]; -var BC_FIELDS_INFO = [ - { - field: BC_FOLDER_NOTE, - desc: "Set this note as a Breadcrumbs folder-note. All other notes in this folder will be added to the graph with the field name specified in this key's value", - afterYaml: ": ", - afterInline: ":: ", - alt: true - }, - { - field: BC_FOLDER_NOTE_SUBFOLDERS, - desc: "Link to notes in subfolders with the given field.", - afterYaml: ": ", - afterInline: ":: ", - alt: false - }, - { - field: BC_FOLDER_NOTE_RECURSIVE, - desc: "Recursively add notes in subfolders to the foldernote of _that_ subfolder.", - afterYaml: ": true", - afterInline: ":: true", - alt: false - }, - { - field: BC_TAG_NOTE, - desc: "Set this note as a Breadcrumbs tag-note. All other notes with this tag will be added to the graph using the default fieldName specified in `Settings > Alternative Hierarchies > Tag Notes > Default Field`, or using the fieldName you specify with `BC-tag-note-field: fieldName`", - afterYaml: ": '#", - afterInline: ":: #", - alt: true - }, - { - field: BC_TAG_NOTE_FIELD, - desc: "Manually choose the field for this tag-note to use", - afterYaml: ": ", - afterInline: ":: ", - alt: false - }, - { - field: BC_TAG_NOTE_EXACT, - desc: "Only look for notes with the exact tag. i.e. `#A` won't match `#A/B`", - afterYaml: ": true", - afterInline: ":: true", - alt: false - }, - { - field: BC_LINK_NOTE, - desc: "Set this note as a Breadcrumbs link-note. All links leaving this note will be added to the graph with the field name specified in this key's value.", - afterYaml: ": ", - afterInline: ":: ", - alt: true - }, - { - field: BC_TRAVERSE_NOTE, - desc: "Set this note as a Breadcrumbs traverse-note. Starting from this note, the Obsidian graph will be traversed in depth-first order, and all notes along the way will be added to the BC graph using the fieldName you specify", - afterYaml: ": ", - afterInline: ":: ", - alt: true - }, - { - field: BC_REGEX_NOTE, - desc: "Set this note as a Breadcrumbs regex-note. The value of this field is a regular expression (of the form '/regex/flags'). All note names that match the regex will be added to the BC graph using the default fieldName specified in `Settings > Alternative Hierarchies > Regex Notes > Default Field`, or using the fieldName you specify in 'BC-regex-note-field'.", - afterYaml: ": '/", - afterInline: ":: /", - alt: true - }, - { - field: BC_REGEX_NOTE_FIELD, - desc: "Manually choose the field for this regex-note to use", - afterYaml: ": ", - afterInline: ":: ", - alt: false - }, - { - field: BC_DV_NOTE, - desc: "Set this note as a Breadcrumbs Dataview-note. The value of this field is a Dataview `from` query. All notes that match the query will be added to the BC graph using the default fieldName specified in `Settings > Alternative Hierarchies > Dataview Notes > Default Field`, or using the fieldName you specify in 'BC-dataview-note-field'.", - afterYaml: ": '", - afterInline: ":: ", - alt: true - }, - { - field: BC_DV_NOTE_FIELD, - desc: "Manually choose the field for this Dataview-note to use", - afterYaml: ": ", - afterInline: ":: ", - alt: false - }, - { - field: BC_IGNORE, - desc: "Tells Breadcrumbs to ignore a note from its index entirely. This is useful if you want to use Breadcrumbs to index notes, but you don't want to show them in the graph.", - afterYaml: ": true", - afterInline: ":: true", - alt: false - }, - { - field: BC_IGNORE_DENDRON, - desc: "Tells Breadcrumbs to not treat this note as a dendron note (only useful if the note name has you dendron splitter in it, usually a period `.`).", - afterYaml: ": true", - afterInline: ":: true", - alt: false - }, - { - field: BC_HIDE_TRAIL, - desc: "Don't show the trail in this note", - afterYaml: ": true", - afterInline: ":: true", - alt: false - }, - { - field: BC_ORDER, - desc: "Set the order of this note in the Matrix view. A lower value places this note higher in the order.", - afterYaml: ": ", - afterInline: ":: ", - alt: false - } -]; -var BC_ALTS = BC_FIELDS_INFO.filter((f) => f.alt).map((f) => f.field); -var ILLEGAL_FILENAME_CHARS = [ - "\\", - "/", - ":", - "*", - "?", - '"', - "<", - ">", - "|" -]; -var DATAVIEW_MISSING = "The Dataview plugin must be installed for this to work"; -var API_NAME = "BCAPI"; -var DEFAULT_SETTINGS = { - addDendronNotes: false, - addDateNotes: false, - aliasesInIndex: false, - alphaSortAsc: true, - altLinkFields: [], - CSVPaths: "", - createIndexIndent: " ", - dateFormat: "YYYY-MM-DD", - dateNoteFormat: "yyyy-MM-dd", - dateNoteField: "next", - dataviewNoteField: "up", - dateNoteAddMonth: "", - dateNoteAddYear: "", - debugMode: "WARN", - dendronNoteDelimiter: ".", - dendronNoteField: "up", - dvWaitTime: 5e3, - enableAlphaSort: true, - enableRelationSuggestor: false, - fieldSuggestor: true, - filterImpliedSiblingsOfDifferentTypes: false, - jugglLayout: "hierarchy", - limitWriteBCCheckboxes: [], - CHECKBOX_STATES_OVERWRITTEN: false, - gridDefaultDepth: 25, - hierarchyNotes: [""], - hierarchyNoteIsParent: false, - HNUpField: "", - indexNotes: [""], - namingSystemField: "", - namingSystemRegex: "", - namingSystemSplit: ".", - namingSystemEndsWithDelimiter: false, - refreshOnNoteChange: false, - useAllMetadata: true, - openMatrixOnLoad: true, - openDuckOnLoad: false, - openDownOnLoad: true, - parseJugglLinksWithoutJuggl: false, - showNameOrType: true, - showRelationType: true, - regexNoteField: "", - relSuggestorTrigger: "\\", - rlLeaf: true, - showAllPathsIfNoneToIndexNote: false, - showAllAliases: true, - showBCs: true, - showBCsInEditLPMode: false, - showRefreshNotice: true, - showImpliedRelations: true, - showTrail: true, - showGrid: true, - showJuggl: false, - showPrevNext: true, - sortByNameShowAlias: false, - squareDirectionsOrder: [0, 1, 2, 3, 4], - limitTrailCheckboxes: [], - limitJumpToFirstFields: [], - showAll: "All", - noPathMessage: `This note has no real or implied parents`, - tagNoteField: "", - threadIntoNewPane: false, - threadingTemplate: "{{field}} of {{current}}", - threadingDirTemplates: { up: "", same: "", down: "", next: "", prev: "" }, - threadUnderCursor: false, - trailSeperator: "\u2192", - treatCurrNodeAsImpliedSibling: false, - trimDendronNotes: false, - respectReadableLineLength: true, - userHiers: [ - { - up: ["up"], - same: ["same"], - down: ["down"], - next: ["next"], - prev: ["prev"] - } - ], - writeBCsInline: false, - showWriteAllBCsCmd: false, - visGraph: "Force Directed Graph", - visRelation: "Parent", - visClosed: "Real", - visAll: "All", - wikilinkIndex: true, - impliedRelations: { - siblingIdentity: false, - sameParentIsSibling: true, - siblingsSiblingIsSibling: false, - siblingsParentIsParent: false, - parentsSiblingsIsParents: false, - parentsParentsIsParent: false, - cousinsIsSibling: false - }, - refreshOnNoteSave: false, - showUpInJuggl: false +var remove_duplicates_by = (arr, get_value) => { + const set = /* @__PURE__ */ new Set(); + const unique = []; + arr.forEach((item) => { + const value = get_value(item); + if (set.has(value)) + return; + set.add(value); + unique.push(item); + }); + return unique; }; -// src/Views/MatrixView.ts -var import_loglevel14 = __toESM(require_loglevel()); -var import_obsidian10 = require("obsidian"); - -// src/Debugger.ts -var import_loglevel = __toESM(require_loglevel()); -var Debugger = class { - constructor(plugin) { - this.debugLessThan = (level) => import_loglevel.levels[this.plugin.settings.debugMode] < level; - this.plugin = plugin; - } - start2G(group) { - if (this.debugLessThan(3)) - console.groupCollapsed(group); - } - end2G(...msgs) { - if (this.debugLessThan(3)) { - if (msgs.length) - (0, import_loglevel.info)(...msgs); - console.groupEnd(); +// src/utils/objects.ts +function deep_merge_objects(obj1, obj2) { + const result = { ...obj1 }; + for (const key in obj2) { + const val1 = obj1[key]; + const val2 = obj2[key]; + if (typeof val1 === "object" && typeof val2 === "object" && !Array.isArray(val1) && !Array.isArray(val2)) { + result[key] = deep_merge_objects(val1, val2); + } else if (val1 === void 0) { + result[key] = val2; } } - start1G(group) { - if (this.debugLessThan(2)) - console.groupCollapsed(group); - } - end1G(...msgs) { - if (this.debugLessThan(2)) { - if (msgs.length) - (0, import_loglevel.debug)(...msgs); - console.groupEnd(); - } - } - startGs(...groups) { - this.start2G(groups[0]); - if (groups[1]) - this.start1G(groups[1]); - } - /** - * End a debug and info group, logging `msgs` in `endDebugGroup` - * @param {1|2} count The number of groups to end. `1` ends Trace, 2 ends both - * @param {any[]} ...msgs - */ - endGs(count2, ...msgs) { - if (count2 === 1) - this.end2G(...msgs); - else { - this.end1G(); - this.end2G(...msgs); - } - } -}; - -// node_modules/svelte/internal/index.mjs -function noop() { -} -function assign(tar, src) { - for (const k in src) - tar[k] = src[k]; - return tar; -} -function run(fn) { - return fn(); -} -function blank_object() { - return /* @__PURE__ */ Object.create(null); -} -function run_all(fns) { - fns.forEach(run); -} -function is_function(thing) { - return typeof thing === "function"; -} -function safe_not_equal(a2, b) { - return a2 != a2 ? b == b : a2 !== b || (a2 && typeof a2 === "object" || typeof a2 === "function"); -} -var src_url_equal_anchor; -function src_url_equal(element_src, url) { - if (!src_url_equal_anchor) { - src_url_equal_anchor = document.createElement("a"); - } - src_url_equal_anchor.href = url; - return element_src === src_url_equal_anchor.href; -} -function is_empty(obj) { - return Object.keys(obj).length === 0; -} -function create_slot(definition, ctx, $$scope, fn) { - if (definition) { - const slot_ctx = get_slot_context(definition, ctx, $$scope, fn); - return definition[0](slot_ctx); - } -} -function get_slot_context(definition, ctx, $$scope, fn) { - return definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx; -} -function get_slot_changes(definition, $$scope, dirty, fn) { - if (definition[2] && fn) { - const lets = definition[2](fn(dirty)); - if ($$scope.dirty === void 0) { - return lets; - } - if (typeof lets === "object") { - const merged = []; - const len = Math.max($$scope.dirty.length, lets.length); - for (let i = 0; i < len; i += 1) { - merged[i] = $$scope.dirty[i] | lets[i]; - } - return merged; - } - return $$scope.dirty | lets; - } - return $$scope.dirty; -} -function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) { - if (slot_changes) { - const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn); - slot.p(slot_context, slot_changes); - } -} -function get_all_dirty_from_scope($$scope) { - if ($$scope.ctx.length > 32) { - const dirty = []; - const length = $$scope.ctx.length / 32; - for (let i = 0; i < length; i++) { - dirty[i] = -1; - } - return dirty; - } - return -1; -} -function exclude_internal_props(props) { - const result = {}; - for (const k in props) - if (k[0] !== "$") - result[k] = props[k]; return result; } -function null_to_empty(value) { - return value == null ? "" : value; -} -var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : global; -var ResizeObserverSingleton = class { - constructor(options) { - this.options = options; - this._listeners = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; - } - observe(element2, listener) { - this._listeners.set(element2, listener); - this._getObserver().observe(element2, this.options); - return () => { - this._listeners.delete(element2); - this._observer.unobserve(element2); - }; - } - _getObserver() { - var _a; - return (_a = this._observer) !== null && _a !== void 0 ? _a : this._observer = new ResizeObserver((entries) => { - var _a2; - for (const entry of entries) { - ResizeObserverSingleton.entries.set(entry.target, entry); - (_a2 = this._listeners.get(entry.target)) === null || _a2 === void 0 ? void 0 : _a2(entry); - } - }); - } -}; -ResizeObserverSingleton.entries = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; -var is_hydrating = false; -function start_hydrating() { - is_hydrating = true; -} -function end_hydrating() { - is_hydrating = false; -} -function append(target, node) { - target.appendChild(node); -} -function append_styles(target, style_sheet_id, styles) { - const append_styles_to = get_root_for_style(target); - if (!append_styles_to.getElementById(style_sheet_id)) { - const style = element("style"); - style.id = style_sheet_id; - style.textContent = styles; - append_stylesheet(append_styles_to, style); - } -} -function get_root_for_style(node) { - if (!node) - return document; - const root2 = node.getRootNode ? node.getRootNode() : node.ownerDocument; - if (root2 && root2.host) { - return root2; - } - return node.ownerDocument; -} -function append_stylesheet(node, style) { - append(node.head || node, style); - return style.sheet; -} -function insert(target, node, anchor) { - target.insertBefore(node, anchor || null); -} -function detach(node) { - if (node.parentNode) { - node.parentNode.removeChild(node); - } -} -function destroy_each(iterations, detaching) { - for (let i = 0; i < iterations.length; i += 1) { - if (iterations[i]) - iterations[i].d(detaching); - } -} -function element(name) { - return document.createElement(name); -} -function svg_element(name) { - return document.createElementNS("http://www.w3.org/2000/svg", name); -} -function text(data) { - return document.createTextNode(data); -} -function space() { - return text(" "); -} -function empty() { - return text(""); -} -function listen(node, event, handler, options) { - node.addEventListener(event, handler, options); - return () => node.removeEventListener(event, handler, options); -} -function attr(node, attribute, value) { - if (value == null) - node.removeAttribute(attribute); - else if (node.getAttribute(attribute) !== value) - node.setAttribute(attribute, value); -} -function get_binding_group_value(group, __value, checked) { - const value = /* @__PURE__ */ new Set(); - for (let i = 0; i < group.length; i += 1) { - if (group[i].checked) - value.add(group[i].__value); - } - if (!checked) { - value.delete(__value); - } - return Array.from(value); -} -function init_binding_group(group) { - let _inputs; - return { - /* push */ - p(...inputs) { - _inputs = inputs; - _inputs.forEach((input) => group.push(input)); - }, - /* remove */ - r() { - _inputs.forEach((input) => group.splice(group.indexOf(input), 1)); - } - }; -} -function children(element2) { - return Array.from(element2.childNodes); -} -function set_data(text2, data) { - data = "" + data; - if (text2.data === data) - return; - text2.data = data; -} -function set_input_value(input, value) { - input.value = value == null ? "" : value; -} -function set_style(node, key, value, important) { - if (value == null) { - node.style.removeProperty(key); - } else { - node.style.setProperty(key, value, important ? "important" : ""); - } -} -function select_option(select, value, mounting) { - for (let i = 0; i < select.options.length; i += 1) { - const option = select.options[i]; - if (option.__value === value) { - option.selected = true; - return; - } - } - if (!mounting || value !== void 0) { - select.selectedIndex = -1; - } -} -function select_value(select) { - const selected_option = select.querySelector(":checked"); - return selected_option && selected_option.__value; -} -var current_component; -function set_current_component(component) { - current_component = component; -} -function get_current_component() { - if (!current_component) - throw new Error("Function called outside component initialization"); - return current_component; -} -function onMount(fn) { - get_current_component().$$.on_mount.push(fn); -} -var dirty_components = []; -var binding_callbacks = []; -var render_callbacks = []; -var flush_callbacks = []; -var resolved_promise = /* @__PURE__ */ Promise.resolve(); -var update_scheduled = false; -function schedule_update() { - if (!update_scheduled) { - update_scheduled = true; - resolved_promise.then(flush); - } -} -function add_render_callback(fn) { - render_callbacks.push(fn); -} -var seen_callbacks = /* @__PURE__ */ new Set(); -var flushidx = 0; -function flush() { - if (flushidx !== 0) { - return; - } - const saved_component = current_component; - do { - try { - while (flushidx < dirty_components.length) { - const component = dirty_components[flushidx]; - flushidx++; - set_current_component(component); - update(component.$$); - } - } catch (e) { - dirty_components.length = 0; - flushidx = 0; - throw e; - } - set_current_component(null); - dirty_components.length = 0; - flushidx = 0; - while (binding_callbacks.length) - binding_callbacks.pop()(); - for (let i = 0; i < render_callbacks.length; i += 1) { - const callback = render_callbacks[i]; - if (!seen_callbacks.has(callback)) { - seen_callbacks.add(callback); - callback(); - } - } - render_callbacks.length = 0; - } while (dirty_components.length); - while (flush_callbacks.length) { - flush_callbacks.pop()(); - } - update_scheduled = false; - seen_callbacks.clear(); - set_current_component(saved_component); -} -function update($$) { - if ($$.fragment !== null) { - $$.update(); - run_all($$.before_update); - const dirty = $$.dirty; - $$.dirty = [-1]; - $$.fragment && $$.fragment.p($$.ctx, dirty); - $$.after_update.forEach(add_render_callback); - } -} -function flush_render_callbacks(fns) { - const filtered = []; - const targets = []; - render_callbacks.forEach((c3) => fns.indexOf(c3) === -1 ? filtered.push(c3) : targets.push(c3)); - targets.forEach((c3) => c3()); - render_callbacks = filtered; -} -var outroing = /* @__PURE__ */ new Set(); -var outros; -function group_outros() { - outros = { - r: 0, - c: [], - p: outros - // parent group - }; -} -function check_outros() { - if (!outros.r) { - run_all(outros.c); - } - outros = outros.p; -} -function transition_in(block, local) { - if (block && block.i) { - outroing.delete(block); - block.i(local); - } -} -function transition_out(block, local, detach2, callback) { - if (block && block.o) { - if (outroing.has(block)) - return; - outroing.add(block); - outros.c.push(() => { - outroing.delete(block); - if (callback) { - if (detach2) - block.d(1); - callback(); - } - }); - block.o(local); - } else if (callback) { - callback(); - } -} -function get_spread_update(levels2, updates) { - const update2 = {}; - const to_null_out = {}; - const accounted_for = { $$scope: 1 }; - let i = levels2.length; - while (i--) { - const o = levels2[i]; - const n2 = updates[i]; - if (n2) { - for (const key in o) { - if (!(key in n2)) - to_null_out[key] = 1; - } - for (const key in n2) { - if (!accounted_for[key]) { - update2[key] = n2[key]; - accounted_for[key] = 1; - } - } - levels2[i] = n2; - } else { - for (const key in o) { - accounted_for[key] = 1; - } - } - } - for (const key in to_null_out) { - if (!(key in update2)) - update2[key] = void 0; - } - return update2; -} -function get_spread_object(spread_props) { - return typeof spread_props === "object" && spread_props !== null ? spread_props : {}; -} -var _boolean_attributes = [ - "allowfullscreen", - "allowpaymentrequest", - "async", - "autofocus", - "autoplay", - "checked", - "controls", - "default", - "defer", - "disabled", - "formnovalidate", - "hidden", - "inert", - "ismap", - "loop", - "multiple", - "muted", - "nomodule", - "novalidate", - "open", - "playsinline", - "readonly", - "required", - "reversed", - "selected" -]; -var boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]); -function create_component(block) { - block && block.c(); -} -function mount_component(component, target, anchor, customElement) { - const { fragment, after_update } = component.$$; - fragment && fragment.m(target, anchor); - if (!customElement) { - add_render_callback(() => { - const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); - if (component.$$.on_destroy) { - component.$$.on_destroy.push(...new_on_destroy); - } else { - run_all(new_on_destroy); - } - component.$$.on_mount = []; - }); - } - after_update.forEach(add_render_callback); -} -function destroy_component(component, detaching) { - const $$ = component.$$; - if ($$.fragment !== null) { - flush_render_callbacks($$.after_update); - run_all($$.on_destroy); - $$.fragment && $$.fragment.d(detaching); - $$.on_destroy = $$.fragment = null; - $$.ctx = []; - } -} -function make_dirty(component, i) { - if (component.$$.dirty[0] === -1) { - dirty_components.push(component); - schedule_update(); - component.$$.dirty.fill(0); - } - component.$$.dirty[i / 31 | 0] |= 1 << i % 31; -} -function init(component, options, instance24, create_fragment24, not_equal, props, append_styles2, dirty = [-1]) { - const parent_component = current_component; - set_current_component(component); - const $$ = component.$$ = { - fragment: null, - ctx: [], - // state - props, - update: noop, - not_equal, - bound: blank_object(), - // lifecycle - on_mount: [], - on_destroy: [], - on_disconnect: [], - before_update: [], - after_update: [], - context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), - // everything else - callbacks: blank_object(), - dirty, - skip_bound: false, - root: options.target || parent_component.$$.root - }; - append_styles2 && append_styles2($$.root); - let ready = false; - $$.ctx = instance24 ? instance24(component, options.props || {}, (i, ret, ...rest) => { - const value = rest.length ? rest[0] : ret; - if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { - if (!$$.skip_bound && $$.bound[i]) - $$.bound[i](value); - if (ready) - make_dirty(component, i); - } - return ret; - }) : []; - $$.update(); - ready = true; - run_all($$.before_update); - $$.fragment = create_fragment24 ? create_fragment24($$.ctx) : false; - if (options.target) { - if (options.hydrate) { - start_hydrating(); - const nodes = children(options.target); - $$.fragment && $$.fragment.l(nodes); - nodes.forEach(detach); - } else { - $$.fragment && $$.fragment.c(); - } - if (options.intro) - transition_in(component.$$.fragment); - mount_component(component, options.target, options.anchor, options.customElement); - end_hydrating(); - flush(); - } - set_current_component(parent_component); -} -var SvelteElement; -if (typeof HTMLElement === "function") { - SvelteElement = class extends HTMLElement { - constructor() { - super(); - this.attachShadow({ mode: "open" }); - } - connectedCallback() { - const { on_mount } = this.$$; - this.$$.on_disconnect = on_mount.map(run).filter(is_function); - for (const key in this.$$.slotted) { - this.appendChild(this.$$.slotted[key]); - } - } - attributeChangedCallback(attr2, _oldValue, newValue) { - this[attr2] = newValue; - } - disconnectedCallback() { - run_all(this.$$.on_disconnect); - } - $destroy() { - destroy_component(this, 1); - this.$destroy = noop; - } - $on(type2, callback) { - if (!is_function(callback)) { - return noop; - } - const callbacks = this.$$.callbacks[type2] || (this.$$.callbacks[type2] = []); - callbacks.push(callback); - return () => { - const index2 = callbacks.indexOf(callback); - if (index2 !== -1) - callbacks.splice(index2, 1); - }; - } - $set($$props) { - if (this.$$set && !is_empty($$props)) { - this.$$.skip_bound = true; - this.$$set($$props); - this.$$.skip_bound = false; - } - } - }; -} -var SvelteComponent = class { - $destroy() { - destroy_component(this, 1); - this.$destroy = noop; - } - $on(type2, callback) { - if (!is_function(callback)) { - return noop; - } - const callbacks = this.$$.callbacks[type2] || (this.$$.callbacks[type2] = []); - callbacks.push(callback); - return () => { - const index2 = callbacks.indexOf(callback); - if (index2 !== -1) - callbacks.splice(index2, 1); - }; - } - $set($$props) { - if (this.$$set && !is_empty($$props)) { - this.$$.skip_bound = true; - this.$$set($$props); - this.$$.skip_bound = false; - } +var deep_access = (obj, path) => { + let current = obj; + for (const key of path) { + if (current[key] === void 0) { + return void 0; + } + current = current[key]; } + return current; }; +var untyped_pick = (obj, keys) => Object.fromEntries( + Object.entries(obj).filter(([key]) => keys.includes(key)) +); +var remove_nullish_keys = (obj) => Object.fromEntries( + Object.entries(obj).filter( + ([_, val]) => val !== null && val !== void 0 + ) +); -// src/refreshIndex.ts -var import_graphology2 = __toESM(require_graphology_umd_min()); -var import_loglevel13 = __toESM(require_loglevel()); -var import_obsidian9 = require("obsidian"); - -// src/AlternativeHierarchies/CSVCrumbs.ts -var import_loglevel5 = __toESM(require_loglevel()); -var import_obsidian4 = require("obsidian"); - -// src/Utils/ObsidianUtils.ts -var import_loglevel3 = __toESM(require_loglevel()); -var import_obsidian3 = require("obsidian"); - -// src/Utils/generalUtils.ts -var import_loglevel2 = __toESM(require_loglevel()); -var dropPath = (path2) => path2.replace(/^.*\//, ""); -var dropDendron = (path2, settings) => settings.trimDendronNotes ? path2.split(settings.dendronNoteDelimiter).last() : path2; -var dropPathNDendron = (path2, settings) => dropDendron(dropPath(path2), settings); -var dropFolder = (path2) => path2.split("/").last().split(".").slice(0, -1).join("."); -var splitAndTrim = (fields) => { - if (!fields || fields === "") +// src/utils/strings.ts +var split_and_trim = (str, delimiter = ",") => { + if (!str || str === "") return []; else - return fields.split(",").map((str) => str.trim()); + return str.split(delimiter).map((str2) => str2.trim()); }; -function padArray(arr, finalLength, filler = "") { - const copy3 = [...arr]; - const currLength = copy3.length; - if (currLength > finalLength) - throw new Error("Current length is greater than final length"); - else if (currLength === finalLength) - return copy3; - else { - for (let i = currLength; i < finalLength; i++) - copy3.push(filler); - return copy3; - } -} -function transpose(A2) { - const cols = A2[0].length; - const AT = []; - for (let j = 0; j < cols; j++) - AT.push(A2.map((row) => row[j])); - return AT; -} -function runs(arr) { - const runs2 = []; - let i = 0; - while (i < arr.length) { - const currValue = arr[i]; - runs2.push({ value: currValue, first: i, last: void 0 }); - while (currValue === arr[i]) { - i++; +var quote_join = (arr, quote = '"', joiner = ", ") => arr.map((str) => quote + str + quote).join(joiner); +var ensure_starts_with = (str, prefix) => str.startsWith(prefix) ? str : prefix + str; +var ensure_ends_with = (str, suffix) => str.endsWith(suffix) ? str : str + suffix; +var ensure_not_ends_with = (str, suffix) => str.endsWith(suffix) ? str.slice(0, -suffix.length) : str; +var TEMPLATE_REGEX = /{{(.*?)}}/g; +var resolve_templates = (str, templates) => { + var _a; + let resolved = str.slice(); + (_a = resolved.match(TEMPLATE_REGEX)) == null ? void 0 : _a.forEach((match2) => { + const key = match2.slice(2, -2); + const value = deep_access(templates, key.split(".")); + if (value !== void 0) { + resolved = resolved.replace(match2, String(value)); } - runs2.last().last = i - 1; - } - return runs2; -} -function swapItems(i, j, arr) { - const max4 = arr.length - 1; - if (i < 0 || i > max4 || j < 0 || j > max4) - return arr; - const tmp = arr[i]; - arr[i] = arr[j]; - arr[j] = tmp; - return arr; -} -function strToRegex(input) { - const match2 = input.match(regNFlags); - if (!match2) - return null; - const [, innerRegex, flags] = match2; - try { - const regex = new RegExp(innerRegex, flags); - return regex; - } catch (e) { - (0, import_loglevel2.warn)(e); - return null; - } -} -function escapeRegex(string) { - return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); -} + }); + return resolved; +}; +var wrap_in_codeblock = (str, lang = "") => "```" + lang + "\n" + str + "\n```"; -// src/Utils/ObsidianUtils.ts -var getSettings = () => app.plugins.plugins.breadcrumbs.settings; -var getCurrFile = () => app.workspace.getActiveFile(); -var getBaseFromMDPath = (path2) => { - const splitSlash = path2.split("/").last(); - if (splitSlash.endsWith(".md")) { - return splitSlash.split(".md").slice(0, -1).join("."); - } else - return splitSlash; -}; -var getDVBasename = (file) => file.basename || file.name; -var getFolderName = (file) => { - var _a; - return ( - //@ts-ignore - ((_a = file == null ? void 0 : file.parent) == null ? void 0 : _a.name) || file.folder - ); -}; -function makeWiki(str, wikiQ = true) { - let copy3 = str.slice(); - if (wikiQ) { - copy3 = "[[" + copy3; - copy3 += "]]"; +// src/utils/paths.ts +var ensure_ext = (path, ext = "md") => ensure_ends_with(path, "." + ext); +var drop_ext = (path) => path.replace(/\.[^.]+$/, ""); +var extname = (path) => path.split(".").pop(); +var drop_folder = (path) => path.split("/").pop(); +var dirname = (path) => path.split("/").slice(0, -1).join("/"); +var basename = (path) => drop_ext(path.split("/").pop()); +var normalise = (path) => path.replace(/\/+/g, "/").replace(/^\//, ""); +var build = (folder, basename2, ext) => ensure_ext(normalise(folder + "/" + basename2), ext); +var show = (path, show_node_options) => { + let output = path.slice(); + if (!(show_node_options == null ? void 0 : show_node_options.folder)) { + output = drop_folder(output); } - return copy3; -} -function dropWikilinks(str) { - let copy3 = str.slice(); - if (copy3.startsWith("[[") && copy3.endsWith("]]")) - copy3 = copy3.slice(2, -2); - return copy3; -} -var createOrUpdateYaml = async (key, value, file, frontmatter, api) => { - const valueStr = value.toString(); - if (!frontmatter || frontmatter[key] === void 0) { - (0, import_loglevel3.info)(`Creating: ${key}: ${valueStr}`); - await api.createYamlProperty(key, `['${valueStr}']`, file); - } else if ([...[frontmatter[key]]].flat(3).some((val) => val == valueStr)) { - (0, import_loglevel3.info)("Already Exists!"); - return; - } else { - const oldValueFlat = [...[frontmatter[key]]].flat(4); - const newValue = [...oldValueFlat, `'${valueStr}'`]; - (0, import_loglevel3.info)(`Updating: ${key}: ${newValue}`); - await api.update(key, `[${newValue.join(", ")}]`, file); + if (!(show_node_options == null ? void 0 : show_node_options.ext)) { + output = drop_ext(output); } + return output; }; -function changeYaml(yaml, key, newVal) { - if (yaml === "") { - return `${key}: ['${newVal}']`; - } else { - const parsed = (0, import_obsidian3.parseYaml)(yaml); - const value = parsed[key]; - if (value === void 0) { - parsed[key] = newVal; - } else if (typeof value === "string" && value !== newVal) { - parsed[key] = [value, newVal]; - } else if (typeof (value == null ? void 0 : value[0]) === "string" && value.includes && !value.includes(newVal)) { - parsed[key] = [...value, newVal]; +var Paths = { + ensure_ext, + extname, + basename, + dirname, + drop_ext, + drop_folder, + build, + normalise, + show +}; + +// node_modules/zod/lib/index.mjs +var util; +(function(util2) { + util2.assertEqual = (val) => val; + function assertIs(_arg) { + } + util2.assertIs = assertIs; + function assertNever(_x) { + throw new Error(); + } + util2.assertNever = assertNever; + util2.arrayToEnum = (items) => { + const obj = {}; + for (const item of items) { + obj[item] = item; } - return (0, import_obsidian3.stringifyYaml)(parsed); - } -} -function splitAtYaml2(content) { - if (!content.startsWith("---\n")) - return ["", content]; - else { - const splits = content.split("---"); - return [ - splits.slice(0, 2).join("---") + "---", - splits.slice(2).join("---") - ]; - } -} -var dropHash = (tag) => tag.startsWith("#") ? tag.slice(1) : tag; -var addHash = (tag) => tag.startsWith("#") ? tag : `#${tag}`; -function getAlt(node, plugin) { - var _a; - const { altLinkFields, showAllAliases } = plugin.settings; - if (altLinkFields.length) { - const file = app.metadataCache.getFirstLinkpathDest(node, ""); - if (file) { - const metadata = app.metadataCache.getFileCache(file); - for (const altField of altLinkFields) { - const value = (_a = metadata == null ? void 0 : metadata.frontmatter) == null ? void 0 : _a[altField]; - const arr = typeof value === "string" ? splitAndTrim(value) : value; - if (value) - return showAllAliases ? arr.join(", ") : arr[0]; + return obj; + }; + util2.getValidEnumValues = (obj) => { + const validKeys = util2.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number"); + const filtered = {}; + for (const k of validKeys) { + filtered[k] = obj[k]; + } + return util2.objectValues(filtered); + }; + util2.objectValues = (obj) => { + return util2.objectKeys(obj).map(function(e) { + return obj[e]; + }); + }; + util2.objectKeys = typeof Object.keys === "function" ? (obj) => Object.keys(obj) : (object) => { + const keys = []; + for (const key in object) { + if (Object.prototype.hasOwnProperty.call(object, key)) { + keys.push(key); } } - } else - return null; -} -async function waitForCache(plugin) { - var _a; - if (app.plugins.enabledPlugins.has("dataview")) { - let basename; - while (!basename || !app.plugins.plugins.dataview.api.page(basename)) { - await wait(100); - basename = (_a = getCurrFile()) == null ? void 0 : _a.basename; + return keys; + }; + util2.find = (arr, checker) => { + for (const item of arr) { + if (checker(item)) + return item; } - } else { - await waitForResolvedLinks(); + return void 0; + }; + util2.isInteger = typeof Number.isInteger === "function" ? (val) => Number.isInteger(val) : (val) => typeof val === "number" && isFinite(val) && Math.floor(val) === val; + function joinValues(array, separator = " | ") { + return array.map((val) => typeof val === "string" ? `'${val}'` : val).join(separator); + } + util2.joinValues = joinValues; + util2.jsonStringifyReplacer = (_, value) => { + if (typeof value === "bigint") { + return value.toString(); + } + return value; + }; +})(util || (util = {})); +var objectUtil; +(function(objectUtil2) { + objectUtil2.mergeShapes = (first, second) => { + return { + ...first, + ...second + // second overwrites first + }; + }; +})(objectUtil || (objectUtil = {})); +var ZodParsedType = util.arrayToEnum([ + "string", + "nan", + "number", + "integer", + "float", + "boolean", + "date", + "bigint", + "symbol", + "function", + "undefined", + "null", + "array", + "object", + "unknown", + "promise", + "void", + "never", + "map", + "set" +]); +var getParsedType = (data) => { + const t = typeof data; + switch (t) { + case "undefined": + return ZodParsedType.undefined; + case "string": + return ZodParsedType.string; + case "number": + return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number; + case "boolean": + return ZodParsedType.boolean; + case "function": + return ZodParsedType.function; + case "bigint": + return ZodParsedType.bigint; + case "symbol": + return ZodParsedType.symbol; + case "object": + if (Array.isArray(data)) { + return ZodParsedType.array; + } + if (data === null) { + return ZodParsedType.null; + } + if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") { + return ZodParsedType.promise; + } + if (typeof Map !== "undefined" && data instanceof Map) { + return ZodParsedType.map; + } + if (typeof Set !== "undefined" && data instanceof Set) { + return ZodParsedType.set; + } + if (typeof Date !== "undefined" && data instanceof Date) { + return ZodParsedType.date; + } + return ZodParsedType.object; + default: + return ZodParsedType.unknown; } -} -var linkClass = (to, realQ = true) => `internal-link BC-Link ${isInVault(to) ? "" : "is-unresolved"} ${realQ ? "" : "BC-Implied"}`; -var getDVApi = (plugin) => { - var _a; - return (_a = app.plugins.plugins.dataview) == null ? void 0 : _a.api; }; -function isInsideYaml() { - const { workspace, metadataCache } = app; - const { activeLeaf } = workspace; - const { - state: { mode } - } = activeLeaf.getViewState(); - if (mode !== "source") - return null; - const { editor } = activeLeaf.view; - const file = getCurrFile(); - if (!file) - return null; - const { frontmatter } = metadataCache.getFileCache(file); - if (!frontmatter) - return false; - const { start: start2, end } = frontmatter.position; - const currOff = editor.posToOffset(editor.getCursor()); - if (currOff >= start2.offset && currOff <= end.offset) - return true; - else - return false; -} - -// src/Utils/graphUtils.ts -var import_graphology = __toESM(require_graphology_umd_min()); -var import_graphology_traversal = __toESM(require_graphology_traversal()); -var import_loglevel4 = __toESM(require_loglevel()); - -// src/Utils/HierUtils.ts -function getFields(userHiers, dir = "all") { - const fields = []; - userHiers.forEach((hier) => { - if (dir === "all") { - DIRECTIONS.forEach((eachDir) => { - fields.push(...hier[eachDir]); - }); +var ZodIssueCode = util.arrayToEnum([ + "invalid_type", + "invalid_literal", + "custom", + "invalid_union", + "invalid_union_discriminator", + "invalid_enum_value", + "unrecognized_keys", + "invalid_arguments", + "invalid_return_type", + "invalid_date", + "invalid_string", + "too_small", + "too_big", + "invalid_intersection_types", + "not_multiple_of", + "not_finite" +]); +var quotelessJson = (obj) => { + const json = JSON.stringify(obj, null, 2); + return json.replace(/"([^"]+)":/g, "$1:"); +}; +var ZodError = class _ZodError extends Error { + constructor(issues) { + super(); + this.issues = []; + this.addIssue = (sub) => { + this.issues = [...this.issues, sub]; + }; + this.addIssues = (subs = []) => { + this.issues = [...this.issues, ...subs]; + }; + const actualProto = new.target.prototype; + if (Object.setPrototypeOf) { + Object.setPrototypeOf(this, actualProto); } else { - fields.push(...hier[dir]); + this.__proto__ = actualProto; } - }); - return fields; -} -var getOppDir = (dir) => { - switch (dir) { - case "up": - return "down"; - case "down": - return "up"; - case "same": - return "same"; - case "next": - return "prev"; - case "prev": - return "next"; + this.name = "ZodError"; + this.issues = issues; } -}; -function getFieldInfo(userHiers, field) { - let fieldDir; - let fieldHier; - DIRECTIONS.forEach((dir) => { - userHiers.forEach((hier) => { - if (hier[dir].includes(field)) { - fieldDir = dir; - fieldHier = hier; - return; - } - }); - }); - return { fieldHier, fieldDir }; -} -function getOppFields(userHiers, field, dir) { - if (field.endsWith(">")) - return [field.slice(0, -4)]; - const oppFields = [fallbackOppField(field, dir)]; - const { fieldHier, fieldDir } = getFieldInfo(userHiers, field); - if (!fieldHier || !fieldDir) - return oppFields; - const oppDir = getOppDir(fieldDir); - oppFields.unshift(...fieldHier[oppDir]); - return oppFields; -} -var hierToStr = (hier) => DIRECTIONS.map( - (dir) => `${ARROW_DIRECTIONS[dir]}: ${hier[dir].join(", ")}` -).join("\n"); -var fallbackField = (field, dir) => `${field} <${ARROW_DIRECTIONS[dir]}>`; -var fallbackOppField = (field, dir) => `${field} <${ARROW_DIRECTIONS[getOppDir(dir)]}>`; -function iterateHiers(userHiers, fn) { - userHiers.forEach((hier) => { - DIRECTIONS.forEach((dir) => { - hier[dir].forEach((field) => { - fn(hier, dir, field); - }); - }); - }); -} - -// src/Utils/graphUtils.ts -function closeImpliedLinks(real, implied) { - const closedG = real.copy(); - implied.forEachEdge((key, a2, s2, t) => { - closedG.mergeEdge(t, s2, a2); - }); - return closedG; -} -function removeUnlinkedNodes(g) { - const copy3 = g.copy(); - copy3.forEachNode((node) => { - if (!copy3.degree(node)) - copy3.dropNode(node); - }); - return copy3; -} -function getSubInDirs(g, ...dirs) { - const sub = new import_graphology.MultiGraph(); - g == null ? void 0 : g.forEachEdge((k, a2, s2, t) => { - if (dirs.includes(a2.dir)) { - addNodesIfNot(sub, [s2, t], { order: a2.order }); - sub.addEdge(s2, t, a2); - } - }); - return sub; -} -function getSubForFields(g, fields) { - const sub = new import_graphology.MultiGraph(); - g.forEachEdge((k, a2, s2, t) => { - if (fields.includes(a2.field)) { - addNodesIfNot(sub, [s2, t], { order: a2.order }); - sub.addEdge(s2, t, a2); - } - }); - return sub; -} -function getReflexiveClosure(g, userHiers) { - const copy3 = g.copy(); - copy3.forEachEdge((k, a2, s2, t) => { - const { dir, field } = a2; - if (field === void 0) - return; - const oppDir = getOppDir(dir); - const oppField = dir === "same" ? field : getOppFields(userHiers, field, dir)[0]; - addNodesIfNot(copy3, [s2, t], { order: 9999 }); - addEdgeIfNot(copy3, t, s2, { - dir: oppDir, - field: oppField, - implied: BC_I_REFLEXIVE - }); - }); - return copy3; -} -function addNodesIfNot(g, nodes, attr2 = { order: 9999 }) { - for (const node of nodes) { - g.updateNode(node, (exstantAttrs) => { - const extantOrder = exstantAttrs.order; - return { - ...exstantAttrs, - order: extantOrder && extantOrder < 9999 ? extantOrder : attr2.order - }; - }); + get errors() { + return this.issues; } -} -function addEdgeIfNot(g, source, target, attr2) { - if (!g.hasEdge(source, target)) - g.addEdge(source, target, attr2); -} -var getSinks = (g) => g.filterNodes((node) => g.hasNode(node) && !g.outDegree(node)); -var getOutNeighbours = (g, node) => g.hasNode(node) ? g.outNeighbors(node) : []; -var getInNeighbours = (g, node) => g.hasNode(node) ? g.inNeighbors(node) : []; -function dfsAllPaths(g, start2) { - const queue = [{ node: start2, path: [] }]; - const visited = {}; - const allPaths = []; - let i = 0; - while (queue.length > 0 && i < 1e3) { - i++; - const { node, path: path2 } = queue.shift(); - const extPath = [node, ...path2]; - const succsNotVisited = g.hasNode(node) ? g.filterOutNeighbors( - node, - (succ) => !visited[succ] || visited[succ] < 5 - ) : []; - const newItems = succsNotVisited.map((succ) => { - visited[succ] = visited[succ] ? visited[succ] + 1 : 1; - return { node: succ, path: extPath }; - }); - queue.unshift(...newItems); - if (!g.hasNode(node) || !g.outDegree(node)) - allPaths.push(extPath); - } - return allPaths; -} -function bfsAllPaths(g, start2) { - const pathsArr = []; - const queue = [{ node: start2, path: [] }]; - let i = 0; - while (queue.length !== 0 && i < 1e3) { - i++; - const { node, path: path2 } = queue.shift(); - const extPath = [node, ...path2]; - const succs = g.hasNode(node) ? g.filterOutNeighbors(node, (n2) => !path2.includes(n2)) : []; - for (const node2 of succs) { - queue.push({ node: node2, path: extPath }); - } - if (!g.hasNode(node) || succs.length === 0) { - pathsArr.push(extPath); - } - } - pathsArr.forEach((path2) => { - if (path2.length) - path2.splice(path2.length - 1, 1); - }); - (0, import_loglevel4.info)({ pathsArr }); - return pathsArr; -} -function removeCycles(g, startNode) { - const copy3 = g.copy(); - let prevNode = null; - (0, import_graphology_traversal.dfsFromNode)(copy3, startNode, (n2) => { - copy3.forEachOutNeighbor(n2, (t) => { - if (t === prevNode && copy3.hasEdge(t, prevNode)) { - try { - copy3.dropEdge(t, prevNode); - } catch (error6) { - console.error(t, prevNode, error6); + format(_mapper) { + const mapper = _mapper || function(issue) { + return issue.message; + }; + const fieldErrors = { _errors: [] }; + const processError = (error) => { + for (const issue of error.issues) { + if (issue.code === "invalid_union") { + issue.unionErrors.map(processError); + } else if (issue.code === "invalid_return_type") { + processError(issue.returnTypeError); + } else if (issue.code === "invalid_arguments") { + processError(issue.argumentsError); + } else if (issue.path.length === 0) { + fieldErrors._errors.push(mapper(issue)); + } else { + let curr = fieldErrors; + let i = 0; + while (i < issue.path.length) { + const el = issue.path[i]; + const terminal = i === issue.path.length - 1; + if (!terminal) { + curr[el] = curr[el] || { _errors: [] }; + } else { + curr[el] = curr[el] || { _errors: [] }; + curr[el]._errors.push(mapper(issue)); + } + curr = curr[el]; + i++; + } } } - }); - prevNode = n2; - }); - return copy3; -} -function buildObsGraph() { - const ObsG = new import_graphology.MultiGraph(); - const { resolvedLinks, unresolvedLinks } = app.metadataCache; - for (const source in resolvedLinks) { - if (!source.endsWith(".md")) - continue; - const sourceBase = getBaseFromMDPath(source); - addNodesIfNot(ObsG, [sourceBase]); - for (const dest in resolvedLinks[source]) { - if (!dest.endsWith(".md")) - continue; - const destBase = getBaseFromMDPath(dest); - addNodesIfNot(ObsG, [destBase]); - ObsG.addEdge(sourceBase, destBase, { resolved: true }); + }; + processError(this); + return fieldErrors; + } + static assert(value) { + if (!(value instanceof _ZodError)) { + throw new Error(`Not a ZodError: ${value}`); } } - for (const source in unresolvedLinks) { - const sourceBase = getBaseFromMDPath(source); - addNodesIfNot(ObsG, [sourceBase]); - for (const dest in unresolvedLinks[source]) { - const destBase = getBaseFromMDPath(dest); - addNodesIfNot(ObsG, [destBase]); - if (sourceBase === destBase) - continue; - ObsG.addEdge(sourceBase, destBase, { resolved: false }); + toString() { + return this.message; + } + get message() { + return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2); + } + get isEmpty() { + return this.issues.length === 0; + } + flatten(mapper = (issue) => issue.message) { + const fieldErrors = {}; + const formErrors = []; + for (const sub of this.issues) { + if (sub.path.length > 0) { + fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || []; + fieldErrors[sub.path[0]].push(mapper(sub)); + } else { + formErrors.push(mapper(sub)); + } } + return { formErrors, fieldErrors }; } - (0, import_loglevel4.info)({ ObsG }); - return ObsG; -} -function populateMain(settings, mainG, source, field, target, sourceOrder, targetOrder, fillOpp = false) { - const { userHiers } = settings; - const dir = getFieldInfo(userHiers, field).fieldDir; - addNodesIfNot(mainG, [source], { - order: sourceOrder - }); - addNodesIfNot(mainG, [target], { - order: targetOrder - }); - addEdgeIfNot(mainG, source, target, { - dir, - field - }); - if (fillOpp) { - addEdgeIfNot(mainG, target, source, { - dir: getOppDir(dir), - field: getOppFields(userHiers, field, dir)[0] - }); + get formErrors() { + return this.flatten(); } -} -var getTargetOrder = (frontms, target) => { - var _a, _b; - return parseInt( - (_b = (_a = frontms.find((ff) => { - var _a2; - return ((_a2 = ff == null ? void 0 : ff.file) == null ? void 0 : _a2.basename) === target; - })) == null ? void 0 : _a[BC_ORDER]) != null ? _b : "9999" - ); }; -var getSourceOrder = (frontm) => { - var _a; - return parseInt((_a = frontm[BC_ORDER]) != null ? _a : "9999"); +ZodError.create = (issues) => { + const error = new ZodError(issues); + return error; }; -function getRealnImplied(plugin, currNode, dir = null) { - const realsnImplieds = blankRealNImplied(); - const { settings, closedG } = plugin; - const { userHiers } = settings; - if (!closedG.hasNode(currNode)) - return realsnImplieds; - closedG.forEachEdge(currNode, (k, a2, s2, t) => { - const { field, dir: edgeDir, implied } = a2; - const oppField = getOppFields(userHiers, field, edgeDir)[0]; - (dir ? [dir, getOppDir(dir)] : DIRECTIONS).forEach( - (currDir) => { - const oppDir = getOppDir(currDir); - if (s2 === currNode && (edgeDir === currDir || edgeDir === oppDir)) { - const arr = realsnImplieds[edgeDir].reals; - if (arr.findIndex((item) => item.to === t) === -1) { - arr.push({ to: t, field, implied }); +var errorMap = (issue, _ctx) => { + let message; + switch (issue.code) { + case ZodIssueCode.invalid_type: + if (issue.received === ZodParsedType.undefined) { + message = "Required"; + } else { + message = `Expected ${issue.expected}, received ${issue.received}`; + } + break; + case ZodIssueCode.invalid_literal: + message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`; + break; + case ZodIssueCode.unrecognized_keys: + message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, ", ")}`; + break; + case ZodIssueCode.invalid_union: + message = `Invalid input`; + break; + case ZodIssueCode.invalid_union_discriminator: + message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`; + break; + case ZodIssueCode.invalid_enum_value: + message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`; + break; + case ZodIssueCode.invalid_arguments: + message = `Invalid function arguments`; + break; + case ZodIssueCode.invalid_return_type: + message = `Invalid function return type`; + break; + case ZodIssueCode.invalid_date: + message = `Invalid date`; + break; + case ZodIssueCode.invalid_string: + if (typeof issue.validation === "object") { + if ("includes" in issue.validation) { + message = `Invalid input: must include "${issue.validation.includes}"`; + if (typeof issue.validation.position === "number") { + message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`; } - } else if (edgeDir === currDir || edgeDir === oppDir) { - const arr = realsnImplieds[getOppDir(edgeDir)].implieds; - if (arr.findIndex((item) => item.to === s2) === -1) { - arr.push({ - to: s2, - field: oppField, - implied + } else if ("startsWith" in issue.validation) { + message = `Invalid input: must start with "${issue.validation.startsWith}"`; + } else if ("endsWith" in issue.validation) { + message = `Invalid input: must end with "${issue.validation.endsWith}"`; + } else { + util.assertNever(issue.validation); + } + } else if (issue.validation !== "regex") { + message = `Invalid ${issue.validation}`; + } else { + message = "Invalid"; + } + break; + case ZodIssueCode.too_small: + if (issue.type === "array") + message = `Array must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`; + else if (issue.type === "string") + message = `String must contain ${issue.exact ? "exactly" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`; + else if (issue.type === "number") + message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`; + else if (issue.type === "date") + message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`; + else + message = "Invalid input"; + break; + case ZodIssueCode.too_big: + if (issue.type === "array") + message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`; + else if (issue.type === "string") + message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`; + else if (issue.type === "number") + message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`; + else if (issue.type === "bigint") + message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`; + else if (issue.type === "date") + message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`; + else + message = "Invalid input"; + break; + case ZodIssueCode.custom: + message = `Invalid input`; + break; + case ZodIssueCode.invalid_intersection_types: + message = `Intersection results could not be merged`; + break; + case ZodIssueCode.not_multiple_of: + message = `Number must be a multiple of ${issue.multipleOf}`; + break; + case ZodIssueCode.not_finite: + message = "Number must be finite"; + break; + default: + message = _ctx.defaultError; + util.assertNever(issue); + } + return { message }; +}; +var overrideErrorMap = errorMap; +function setErrorMap(map) { + overrideErrorMap = map; +} +function getErrorMap() { + return overrideErrorMap; +} +var makeIssue = (params) => { + const { data, path, errorMaps, issueData } = params; + const fullPath = [...path, ...issueData.path || []]; + const fullIssue = { + ...issueData, + path: fullPath + }; + if (issueData.message !== void 0) { + return { + ...issueData, + path: fullPath, + message: issueData.message + }; + } + let errorMessage = ""; + const maps = errorMaps.filter((m) => !!m).slice().reverse(); + for (const map of maps) { + errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message; + } + return { + ...issueData, + path: fullPath, + message: errorMessage + }; +}; +var EMPTY_PATH = []; +function addIssueToContext(ctx, issueData) { + const overrideMap = getErrorMap(); + const issue = makeIssue({ + issueData, + data: ctx.data, + path: ctx.path, + errorMaps: [ + ctx.common.contextualErrorMap, + ctx.schemaErrorMap, + overrideMap, + overrideMap === errorMap ? void 0 : errorMap + // then global default map + ].filter((x) => !!x) + }); + ctx.common.issues.push(issue); +} +var ParseStatus = class _ParseStatus { + constructor() { + this.value = "valid"; + } + dirty() { + if (this.value === "valid") + this.value = "dirty"; + } + abort() { + if (this.value !== "aborted") + this.value = "aborted"; + } + static mergeArray(status, results) { + const arrayValue = []; + for (const s2 of results) { + if (s2.status === "aborted") + return INVALID; + if (s2.status === "dirty") + status.dirty(); + arrayValue.push(s2.value); + } + return { status: status.value, value: arrayValue }; + } + static async mergeObjectAsync(status, pairs) { + const syncPairs = []; + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + syncPairs.push({ + key, + value + }); + } + return _ParseStatus.mergeObjectSync(status, syncPairs); + } + static mergeObjectSync(status, pairs) { + const finalObject = {}; + for (const pair of pairs) { + const { key, value } = pair; + if (key.status === "aborted") + return INVALID; + if (value.status === "aborted") + return INVALID; + if (key.status === "dirty") + status.dirty(); + if (value.status === "dirty") + status.dirty(); + if (key.value !== "__proto__" && (typeof value.value !== "undefined" || pair.alwaysSet)) { + finalObject[key.value] = value.value; + } + } + return { status: status.value, value: finalObject }; + } +}; +var INVALID = Object.freeze({ + status: "aborted" +}); +var DIRTY = (value) => ({ status: "dirty", value }); +var OK = (value) => ({ status: "valid", value }); +var isAborted = (x) => x.status === "aborted"; +var isDirty = (x) => x.status === "dirty"; +var isValid = (x) => x.status === "valid"; +var isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise; +function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) + throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) + throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} +function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") + throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) + throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) + throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value; +} +var errorUtil; +(function(errorUtil2) { + errorUtil2.errToObj = (message) => typeof message === "string" ? { message } : message || {}; + errorUtil2.toString = (message) => typeof message === "string" ? message : message === null || message === void 0 ? void 0 : message.message; +})(errorUtil || (errorUtil = {})); +var _ZodEnum_cache; +var _ZodNativeEnum_cache; +var ParseInputLazyPath = class { + constructor(parent, value, path, key) { + this._cachedPath = []; + this.parent = parent; + this.data = value; + this._path = path; + this._key = key; + } + get path() { + if (!this._cachedPath.length) { + if (this._key instanceof Array) { + this._cachedPath.push(...this._path, ...this._key); + } else { + this._cachedPath.push(...this._path, this._key); + } + } + return this._cachedPath; + } +}; +var handleResult = (ctx, result) => { + if (isValid(result)) { + return { success: true, data: result.value }; + } else { + if (!ctx.common.issues.length) { + throw new Error("Validation failed but no issues detected."); + } + return { + success: false, + get error() { + if (this._error) + return this._error; + const error = new ZodError(ctx.common.issues); + this._error = error; + return this._error; + } + }; + } +}; +function processCreateParams(params) { + if (!params) + return {}; + const { errorMap: errorMap2, invalid_type_error, required_error, description } = params; + if (errorMap2 && (invalid_type_error || required_error)) { + throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`); + } + if (errorMap2) + return { errorMap: errorMap2, description }; + const customMap = (iss, ctx) => { + var _a, _b; + const { message } = params; + if (iss.code === "invalid_enum_value") { + return { message: message !== null && message !== void 0 ? message : ctx.defaultError }; + } + if (typeof ctx.data === "undefined") { + return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError }; + } + if (iss.code !== "invalid_type") + return { message: ctx.defaultError }; + return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError }; + }; + return { errorMap: customMap, description }; +} +var ZodType = class { + constructor(def) { + this.spa = this.safeParseAsync; + this._def = def; + this.parse = this.parse.bind(this); + this.safeParse = this.safeParse.bind(this); + this.parseAsync = this.parseAsync.bind(this); + this.safeParseAsync = this.safeParseAsync.bind(this); + this.spa = this.spa.bind(this); + this.refine = this.refine.bind(this); + this.refinement = this.refinement.bind(this); + this.superRefine = this.superRefine.bind(this); + this.optional = this.optional.bind(this); + this.nullable = this.nullable.bind(this); + this.nullish = this.nullish.bind(this); + this.array = this.array.bind(this); + this.promise = this.promise.bind(this); + this.or = this.or.bind(this); + this.and = this.and.bind(this); + this.transform = this.transform.bind(this); + this.brand = this.brand.bind(this); + this.default = this.default.bind(this); + this.catch = this.catch.bind(this); + this.describe = this.describe.bind(this); + this.pipe = this.pipe.bind(this); + this.readonly = this.readonly.bind(this); + this.isNullable = this.isNullable.bind(this); + this.isOptional = this.isOptional.bind(this); + } + get description() { + return this._def.description; + } + _getType(input) { + return getParsedType(input.data); + } + _getOrReturnCtx(input, ctx) { + return ctx || { + common: input.parent.common, + data: input.data, + parsedType: getParsedType(input.data), + schemaErrorMap: this._def.errorMap, + path: input.path, + parent: input.parent + }; + } + _processInputParams(input) { + return { + status: new ParseStatus(), + ctx: { + common: input.parent.common, + data: input.data, + parsedType: getParsedType(input.data), + schemaErrorMap: this._def.errorMap, + path: input.path, + parent: input.parent + } + }; + } + _parseSync(input) { + const result = this._parse(input); + if (isAsync(result)) { + throw new Error("Synchronous parse encountered promise."); + } + return result; + } + _parseAsync(input) { + const result = this._parse(input); + return Promise.resolve(result); + } + parse(data, params) { + const result = this.safeParse(data, params); + if (result.success) + return result.data; + throw result.error; + } + safeParse(data, params) { + var _a; + const ctx = { + common: { + issues: [], + async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false, + contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap + }, + path: (params === null || params === void 0 ? void 0 : params.path) || [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data) + }; + const result = this._parseSync({ data, path: ctx.path, parent: ctx }); + return handleResult(ctx, result); + } + async parseAsync(data, params) { + const result = await this.safeParseAsync(data, params); + if (result.success) + return result.data; + throw result.error; + } + async safeParseAsync(data, params) { + const ctx = { + common: { + issues: [], + contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap, + async: true + }, + path: (params === null || params === void 0 ? void 0 : params.path) || [], + schemaErrorMap: this._def.errorMap, + parent: null, + data, + parsedType: getParsedType(data) + }; + const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx }); + const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult)); + return handleResult(ctx, result); + } + refine(check, message) { + const getIssueProperties = (val) => { + if (typeof message === "string" || typeof message === "undefined") { + return { message }; + } else if (typeof message === "function") { + return message(val); + } else { + return message; + } + }; + return this._refinement((val, ctx) => { + const result = check(val); + const setError = () => ctx.addIssue({ + code: ZodIssueCode.custom, + ...getIssueProperties(val) + }); + if (typeof Promise !== "undefined" && result instanceof Promise) { + return result.then((data) => { + if (!data) { + setError(); + return false; + } else { + return true; + } + }); + } + if (!result) { + setError(); + return false; + } else { + return true; + } + }); + } + refinement(check, refinementData) { + return this._refinement((val, ctx) => { + if (!check(val)) { + ctx.addIssue(typeof refinementData === "function" ? refinementData(val, ctx) : refinementData); + return false; + } else { + return true; + } + }); + } + _refinement(refinement) { + return new ZodEffects({ + schema: this, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect: { type: "refinement", refinement } + }); + } + superRefine(refinement) { + return this._refinement(refinement); + } + optional() { + return ZodOptional.create(this, this._def); + } + nullable() { + return ZodNullable.create(this, this._def); + } + nullish() { + return this.nullable().optional(); + } + array() { + return ZodArray.create(this, this._def); + } + promise() { + return ZodPromise.create(this, this._def); + } + or(option) { + return ZodUnion.create([this, option], this._def); + } + and(incoming) { + return ZodIntersection.create(this, incoming, this._def); + } + transform(transform) { + return new ZodEffects({ + ...processCreateParams(this._def), + schema: this, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect: { type: "transform", transform } + }); + } + default(def) { + const defaultValueFunc = typeof def === "function" ? def : () => def; + return new ZodDefault({ + ...processCreateParams(this._def), + innerType: this, + defaultValue: defaultValueFunc, + typeName: ZodFirstPartyTypeKind.ZodDefault + }); + } + brand() { + return new ZodBranded({ + typeName: ZodFirstPartyTypeKind.ZodBranded, + type: this, + ...processCreateParams(this._def) + }); + } + catch(def) { + const catchValueFunc = typeof def === "function" ? def : () => def; + return new ZodCatch({ + ...processCreateParams(this._def), + innerType: this, + catchValue: catchValueFunc, + typeName: ZodFirstPartyTypeKind.ZodCatch + }); + } + describe(description) { + const This = this.constructor; + return new This({ + ...this._def, + description + }); + } + pipe(target) { + return ZodPipeline.create(this, target); + } + readonly() { + return ZodReadonly.create(this); + } + isOptional() { + return this.safeParse(void 0).success; + } + isNullable() { + return this.safeParse(null).success; + } +}; +var cuidRegex = /^c[^\s-]{8,}$/i; +var cuid2Regex = /^[0-9a-z]+$/; +var ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/; +var uuidRegex = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i; +var nanoidRegex = /^[a-z0-9_-]{21}$/i; +var durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/; +var emailRegex = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i; +var _emojiRegex = `^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`; +var emojiRegex; +var ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/; +var ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/; +var base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; +var dateRegexSource = `((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`; +var dateRegex = new RegExp(`^${dateRegexSource}$`); +function timeRegexSource(args) { + let regex2 = `([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d`; + if (args.precision) { + regex2 = `${regex2}\\.\\d{${args.precision}}`; + } else if (args.precision == null) { + regex2 = `${regex2}(\\.\\d+)?`; + } + return regex2; +} +function timeRegex(args) { + return new RegExp(`^${timeRegexSource(args)}$`); +} +function datetimeRegex(args) { + let regex2 = `${dateRegexSource}T${timeRegexSource(args)}`; + const opts = []; + opts.push(args.local ? `Z?` : `Z`); + if (args.offset) + opts.push(`([+-]\\d{2}:?\\d{2})`); + regex2 = `${regex2}(${opts.join("|")})`; + return new RegExp(`^${regex2}$`); +} +function isValidIP(ip, version) { + if ((version === "v4" || !version) && ipv4Regex.test(ip)) { + return true; + } + if ((version === "v6" || !version) && ipv6Regex.test(ip)) { + return true; + } + return false; +} +var ZodString = class _ZodString extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = String(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.string) { + const ctx2 = this._getOrReturnCtx(input); + addIssueToContext(ctx2, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.string, + received: ctx2.parsedType + }); + return INVALID; + } + const status = new ParseStatus(); + let ctx = void 0; + for (const check of this._def.checks) { + if (check.kind === "min") { + if (input.data.length < check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "string", + inclusive: true, + exact: false, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "max") { + if (input.data.length > check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "string", + inclusive: true, + exact: false, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "length") { + const tooBig = input.data.length > check.value; + const tooSmall = input.data.length < check.value; + if (tooBig || tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + if (tooBig) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "string", + inclusive: true, + exact: true, + message: check.message + }); + } else if (tooSmall) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "string", + inclusive: true, + exact: true, + message: check.message }); } + status.dirty(); + } + } else if (check.kind === "email") { + if (!emailRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "email", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "emoji") { + if (!emojiRegex) { + emojiRegex = new RegExp(_emojiRegex, "u"); + } + if (!emojiRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "emoji", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "uuid") { + if (!uuidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "uuid", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "nanoid") { + if (!nanoidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "nanoid", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "cuid") { + if (!cuidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cuid", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "cuid2") { + if (!cuid2Regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "cuid2", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "ulid") { + if (!ulidRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "ulid", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "url") { + try { + new URL(input.data); + } catch (_a) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "url", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "regex") { + check.regex.lastIndex = 0; + const testResult = check.regex.test(input.data); + if (!testResult) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "regex", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "trim") { + input.data = input.data.trim(); + } else if (check.kind === "includes") { + if (!input.data.includes(check.value, check.position)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { includes: check.value, position: check.position }, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "toLowerCase") { + input.data = input.data.toLowerCase(); + } else if (check.kind === "toUpperCase") { + input.data = input.data.toUpperCase(); + } else if (check.kind === "startsWith") { + if (!input.data.startsWith(check.value)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { startsWith: check.value }, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "endsWith") { + if (!input.data.endsWith(check.value)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: { endsWith: check.value }, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "datetime") { + const regex2 = datetimeRegex(check); + if (!regex2.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "datetime", + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "date") { + const regex2 = dateRegex; + if (!regex2.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "date", + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "time") { + const regex2 = timeRegex(check); + if (!regex2.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_string, + validation: "time", + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "duration") { + if (!durationRegex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "duration", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "ip") { + if (!isValidIP(input.data, check.version)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "ip", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "base64") { + if (!base64Regex.test(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + validation: "base64", + code: ZodIssueCode.invalid_string, + message: check.message + }); + status.dirty(); + } + } else { + util.assertNever(check); + } + } + return { status: status.value, value: input.data }; + } + _regex(regex2, validation, message) { + return this.refinement((data) => regex2.test(data), { + validation, + code: ZodIssueCode.invalid_string, + ...errorUtil.errToObj(message) + }); + } + _addCheck(check) { + return new _ZodString({ + ...this._def, + checks: [...this._def.checks, check] + }); + } + email(message) { + return this._addCheck({ kind: "email", ...errorUtil.errToObj(message) }); + } + url(message) { + return this._addCheck({ kind: "url", ...errorUtil.errToObj(message) }); + } + emoji(message) { + return this._addCheck({ kind: "emoji", ...errorUtil.errToObj(message) }); + } + uuid(message) { + return this._addCheck({ kind: "uuid", ...errorUtil.errToObj(message) }); + } + nanoid(message) { + return this._addCheck({ kind: "nanoid", ...errorUtil.errToObj(message) }); + } + cuid(message) { + return this._addCheck({ kind: "cuid", ...errorUtil.errToObj(message) }); + } + cuid2(message) { + return this._addCheck({ kind: "cuid2", ...errorUtil.errToObj(message) }); + } + ulid(message) { + return this._addCheck({ kind: "ulid", ...errorUtil.errToObj(message) }); + } + base64(message) { + return this._addCheck({ kind: "base64", ...errorUtil.errToObj(message) }); + } + ip(options) { + return this._addCheck({ kind: "ip", ...errorUtil.errToObj(options) }); + } + datetime(options) { + var _a, _b; + if (typeof options === "string") { + return this._addCheck({ + kind: "datetime", + precision: null, + offset: false, + local: false, + message: options + }); + } + return this._addCheck({ + kind: "datetime", + precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision, + offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false, + local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false, + ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message) + }); + } + date(message) { + return this._addCheck({ kind: "date", message }); + } + time(options) { + if (typeof options === "string") { + return this._addCheck({ + kind: "time", + precision: null, + message: options + }); + } + return this._addCheck({ + kind: "time", + precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === "undefined" ? null : options === null || options === void 0 ? void 0 : options.precision, + ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message) + }); + } + duration(message) { + return this._addCheck({ kind: "duration", ...errorUtil.errToObj(message) }); + } + regex(regex2, message) { + return this._addCheck({ + kind: "regex", + regex: regex2, + ...errorUtil.errToObj(message) + }); + } + includes(value, options) { + return this._addCheck({ + kind: "includes", + value, + position: options === null || options === void 0 ? void 0 : options.position, + ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message) + }); + } + startsWith(value, message) { + return this._addCheck({ + kind: "startsWith", + value, + ...errorUtil.errToObj(message) + }); + } + endsWith(value, message) { + return this._addCheck({ + kind: "endsWith", + value, + ...errorUtil.errToObj(message) + }); + } + min(minLength, message) { + return this._addCheck({ + kind: "min", + value: minLength, + ...errorUtil.errToObj(message) + }); + } + max(maxLength, message) { + return this._addCheck({ + kind: "max", + value: maxLength, + ...errorUtil.errToObj(message) + }); + } + length(len, message) { + return this._addCheck({ + kind: "length", + value: len, + ...errorUtil.errToObj(message) + }); + } + /** + * @deprecated Use z.string().min(1) instead. + * @see {@link ZodString.min} + */ + nonempty(message) { + return this.min(1, errorUtil.errToObj(message)); + } + trim() { + return new _ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "trim" }] + }); + } + toLowerCase() { + return new _ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "toLowerCase" }] + }); + } + toUpperCase() { + return new _ZodString({ + ...this._def, + checks: [...this._def.checks, { kind: "toUpperCase" }] + }); + } + get isDatetime() { + return !!this._def.checks.find((ch) => ch.kind === "datetime"); + } + get isDate() { + return !!this._def.checks.find((ch) => ch.kind === "date"); + } + get isTime() { + return !!this._def.checks.find((ch) => ch.kind === "time"); + } + get isDuration() { + return !!this._def.checks.find((ch) => ch.kind === "duration"); + } + get isEmail() { + return !!this._def.checks.find((ch) => ch.kind === "email"); + } + get isURL() { + return !!this._def.checks.find((ch) => ch.kind === "url"); + } + get isEmoji() { + return !!this._def.checks.find((ch) => ch.kind === "emoji"); + } + get isUUID() { + return !!this._def.checks.find((ch) => ch.kind === "uuid"); + } + get isNANOID() { + return !!this._def.checks.find((ch) => ch.kind === "nanoid"); + } + get isCUID() { + return !!this._def.checks.find((ch) => ch.kind === "cuid"); + } + get isCUID2() { + return !!this._def.checks.find((ch) => ch.kind === "cuid2"); + } + get isULID() { + return !!this._def.checks.find((ch) => ch.kind === "ulid"); + } + get isIP() { + return !!this._def.checks.find((ch) => ch.kind === "ip"); + } + get isBase64() { + return !!this._def.checks.find((ch) => ch.kind === "base64"); + } + get minLength() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxLength() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } +}; +ZodString.create = (params) => { + var _a; + return new ZodString({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodString, + coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false, + ...processCreateParams(params) + }); +}; +function floatSafeRemainder(val, step) { + const valDecCount = (val.toString().split(".")[1] || "").length; + const stepDecCount = (step.toString().split(".")[1] || "").length; + const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; + const valInt = parseInt(val.toFixed(decCount).replace(".", "")); + const stepInt = parseInt(step.toFixed(decCount).replace(".", "")); + return valInt % stepInt / Math.pow(10, decCount); +} +var ZodNumber = class _ZodNumber extends ZodType { + constructor() { + super(...arguments); + this.min = this.gte; + this.max = this.lte; + this.step = this.multipleOf; + } + _parse(input) { + if (this._def.coerce) { + input.data = Number(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.number) { + const ctx2 = this._getOrReturnCtx(input); + addIssueToContext(ctx2, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.number, + received: ctx2.parsedType + }); + return INVALID; + } + let ctx = void 0; + const status = new ParseStatus(); + for (const check of this._def.checks) { + if (check.kind === "int") { + if (!util.isInteger(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: "integer", + received: "float", + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "min") { + const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value; + if (tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: check.value, + type: "number", + inclusive: check.inclusive, + exact: false, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "max") { + const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value; + if (tooBig) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: check.value, + type: "number", + inclusive: check.inclusive, + exact: false, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "multipleOf") { + if (floatSafeRemainder(input.data, check.value) !== 0) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_multiple_of, + multipleOf: check.value, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "finite") { + if (!Number.isFinite(input.data)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_finite, + message: check.message + }); + status.dirty(); + } + } else { + util.assertNever(check); + } + } + return { status: status.value, value: input.data }; + } + gte(value, message) { + return this.setLimit("min", value, true, errorUtil.toString(message)); + } + gt(value, message) { + return this.setLimit("min", value, false, errorUtil.toString(message)); + } + lte(value, message) { + return this.setLimit("max", value, true, errorUtil.toString(message)); + } + lt(value, message) { + return this.setLimit("max", value, false, errorUtil.toString(message)); + } + setLimit(kind, value, inclusive, message) { + return new _ZodNumber({ + ...this._def, + checks: [ + ...this._def.checks, + { + kind, + value, + inclusive, + message: errorUtil.toString(message) + } + ] + }); + } + _addCheck(check) { + return new _ZodNumber({ + ...this._def, + checks: [...this._def.checks, check] + }); + } + int(message) { + return this._addCheck({ + kind: "int", + message: errorUtil.toString(message) + }); + } + positive(message) { + return this._addCheck({ + kind: "min", + value: 0, + inclusive: false, + message: errorUtil.toString(message) + }); + } + negative(message) { + return this._addCheck({ + kind: "max", + value: 0, + inclusive: false, + message: errorUtil.toString(message) + }); + } + nonpositive(message) { + return this._addCheck({ + kind: "max", + value: 0, + inclusive: true, + message: errorUtil.toString(message) + }); + } + nonnegative(message) { + return this._addCheck({ + kind: "min", + value: 0, + inclusive: true, + message: errorUtil.toString(message) + }); + } + multipleOf(value, message) { + return this._addCheck({ + kind: "multipleOf", + value, + message: errorUtil.toString(message) + }); + } + finite(message) { + return this._addCheck({ + kind: "finite", + message: errorUtil.toString(message) + }); + } + safe(message) { + return this._addCheck({ + kind: "min", + inclusive: true, + value: Number.MIN_SAFE_INTEGER, + message: errorUtil.toString(message) + })._addCheck({ + kind: "max", + inclusive: true, + value: Number.MAX_SAFE_INTEGER, + message: errorUtil.toString(message) + }); + } + get minValue() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxValue() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } + get isInt() { + return !!this._def.checks.find((ch) => ch.kind === "int" || ch.kind === "multipleOf" && util.isInteger(ch.value)); + } + get isFinite() { + let max = null, min = null; + for (const ch of this._def.checks) { + if (ch.kind === "finite" || ch.kind === "int" || ch.kind === "multipleOf") { + return true; + } else if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } else if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return Number.isFinite(min) && Number.isFinite(max); + } +}; +ZodNumber.create = (params) => { + return new ZodNumber({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodNumber, + coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, + ...processCreateParams(params) + }); +}; +var ZodBigInt = class _ZodBigInt extends ZodType { + constructor() { + super(...arguments); + this.min = this.gte; + this.max = this.lte; + } + _parse(input) { + if (this._def.coerce) { + input.data = BigInt(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.bigint) { + const ctx2 = this._getOrReturnCtx(input); + addIssueToContext(ctx2, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.bigint, + received: ctx2.parsedType + }); + return INVALID; + } + let ctx = void 0; + const status = new ParseStatus(); + for (const check of this._def.checks) { + if (check.kind === "min") { + const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value; + if (tooSmall) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + type: "bigint", + minimum: check.value, + inclusive: check.inclusive, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "max") { + const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value; + if (tooBig) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + type: "bigint", + maximum: check.value, + inclusive: check.inclusive, + message: check.message + }); + status.dirty(); + } + } else if (check.kind === "multipleOf") { + if (input.data % check.value !== BigInt(0)) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.not_multiple_of, + multipleOf: check.value, + message: check.message + }); + status.dirty(); + } + } else { + util.assertNever(check); + } + } + return { status: status.value, value: input.data }; + } + gte(value, message) { + return this.setLimit("min", value, true, errorUtil.toString(message)); + } + gt(value, message) { + return this.setLimit("min", value, false, errorUtil.toString(message)); + } + lte(value, message) { + return this.setLimit("max", value, true, errorUtil.toString(message)); + } + lt(value, message) { + return this.setLimit("max", value, false, errorUtil.toString(message)); + } + setLimit(kind, value, inclusive, message) { + return new _ZodBigInt({ + ...this._def, + checks: [ + ...this._def.checks, + { + kind, + value, + inclusive, + message: errorUtil.toString(message) + } + ] + }); + } + _addCheck(check) { + return new _ZodBigInt({ + ...this._def, + checks: [...this._def.checks, check] + }); + } + positive(message) { + return this._addCheck({ + kind: "min", + value: BigInt(0), + inclusive: false, + message: errorUtil.toString(message) + }); + } + negative(message) { + return this._addCheck({ + kind: "max", + value: BigInt(0), + inclusive: false, + message: errorUtil.toString(message) + }); + } + nonpositive(message) { + return this._addCheck({ + kind: "max", + value: BigInt(0), + inclusive: true, + message: errorUtil.toString(message) + }); + } + nonnegative(message) { + return this._addCheck({ + kind: "min", + value: BigInt(0), + inclusive: true, + message: errorUtil.toString(message) + }); + } + multipleOf(value, message) { + return this._addCheck({ + kind: "multipleOf", + value, + message: errorUtil.toString(message) + }); + } + get minValue() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min; + } + get maxValue() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max; + } +}; +ZodBigInt.create = (params) => { + var _a; + return new ZodBigInt({ + checks: [], + typeName: ZodFirstPartyTypeKind.ZodBigInt, + coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false, + ...processCreateParams(params) + }); +}; +var ZodBoolean = class extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = Boolean(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.boolean) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.boolean, + received: ctx.parsedType + }); + return INVALID; + } + return OK(input.data); + } +}; +ZodBoolean.create = (params) => { + return new ZodBoolean({ + typeName: ZodFirstPartyTypeKind.ZodBoolean, + coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, + ...processCreateParams(params) + }); +}; +var ZodDate = class _ZodDate extends ZodType { + _parse(input) { + if (this._def.coerce) { + input.data = new Date(input.data); + } + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.date) { + const ctx2 = this._getOrReturnCtx(input); + addIssueToContext(ctx2, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.date, + received: ctx2.parsedType + }); + return INVALID; + } + if (isNaN(input.data.getTime())) { + const ctx2 = this._getOrReturnCtx(input); + addIssueToContext(ctx2, { + code: ZodIssueCode.invalid_date + }); + return INVALID; + } + const status = new ParseStatus(); + let ctx = void 0; + for (const check of this._def.checks) { + if (check.kind === "min") { + if (input.data.getTime() < check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + message: check.message, + inclusive: true, + exact: false, + minimum: check.value, + type: "date" + }); + status.dirty(); + } + } else if (check.kind === "max") { + if (input.data.getTime() > check.value) { + ctx = this._getOrReturnCtx(input, ctx); + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + message: check.message, + inclusive: true, + exact: false, + maximum: check.value, + type: "date" + }); + status.dirty(); + } + } else { + util.assertNever(check); + } + } + return { + status: status.value, + value: new Date(input.data.getTime()) + }; + } + _addCheck(check) { + return new _ZodDate({ + ...this._def, + checks: [...this._def.checks, check] + }); + } + min(minDate, message) { + return this._addCheck({ + kind: "min", + value: minDate.getTime(), + message: errorUtil.toString(message) + }); + } + max(maxDate, message) { + return this._addCheck({ + kind: "max", + value: maxDate.getTime(), + message: errorUtil.toString(message) + }); + } + get minDate() { + let min = null; + for (const ch of this._def.checks) { + if (ch.kind === "min") { + if (min === null || ch.value > min) + min = ch.value; + } + } + return min != null ? new Date(min) : null; + } + get maxDate() { + let max = null; + for (const ch of this._def.checks) { + if (ch.kind === "max") { + if (max === null || ch.value < max) + max = ch.value; + } + } + return max != null ? new Date(max) : null; + } +}; +ZodDate.create = (params) => { + return new ZodDate({ + checks: [], + coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false, + typeName: ZodFirstPartyTypeKind.ZodDate, + ...processCreateParams(params) + }); +}; +var ZodSymbol = class extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.symbol) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.symbol, + received: ctx.parsedType + }); + return INVALID; + } + return OK(input.data); + } +}; +ZodSymbol.create = (params) => { + return new ZodSymbol({ + typeName: ZodFirstPartyTypeKind.ZodSymbol, + ...processCreateParams(params) + }); +}; +var ZodUndefined = class extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.undefined) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.undefined, + received: ctx.parsedType + }); + return INVALID; + } + return OK(input.data); + } +}; +ZodUndefined.create = (params) => { + return new ZodUndefined({ + typeName: ZodFirstPartyTypeKind.ZodUndefined, + ...processCreateParams(params) + }); +}; +var ZodNull = class extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.null) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.null, + received: ctx.parsedType + }); + return INVALID; + } + return OK(input.data); + } +}; +ZodNull.create = (params) => { + return new ZodNull({ + typeName: ZodFirstPartyTypeKind.ZodNull, + ...processCreateParams(params) + }); +}; +var ZodAny = class extends ZodType { + constructor() { + super(...arguments); + this._any = true; + } + _parse(input) { + return OK(input.data); + } +}; +ZodAny.create = (params) => { + return new ZodAny({ + typeName: ZodFirstPartyTypeKind.ZodAny, + ...processCreateParams(params) + }); +}; +var ZodUnknown = class extends ZodType { + constructor() { + super(...arguments); + this._unknown = true; + } + _parse(input) { + return OK(input.data); + } +}; +ZodUnknown.create = (params) => { + return new ZodUnknown({ + typeName: ZodFirstPartyTypeKind.ZodUnknown, + ...processCreateParams(params) + }); +}; +var ZodNever = class extends ZodType { + _parse(input) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.never, + received: ctx.parsedType + }); + return INVALID; + } +}; +ZodNever.create = (params) => { + return new ZodNever({ + typeName: ZodFirstPartyTypeKind.ZodNever, + ...processCreateParams(params) + }); +}; +var ZodVoid = class extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.undefined) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.void, + received: ctx.parsedType + }); + return INVALID; + } + return OK(input.data); + } +}; +ZodVoid.create = (params) => { + return new ZodVoid({ + typeName: ZodFirstPartyTypeKind.ZodVoid, + ...processCreateParams(params) + }); +}; +var ZodArray = class _ZodArray extends ZodType { + _parse(input) { + const { ctx, status } = this._processInputParams(input); + const def = this._def; + if (ctx.parsedType !== ZodParsedType.array) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.array, + received: ctx.parsedType + }); + return INVALID; + } + if (def.exactLength !== null) { + const tooBig = ctx.data.length > def.exactLength.value; + const tooSmall = ctx.data.length < def.exactLength.value; + if (tooBig || tooSmall) { + addIssueToContext(ctx, { + code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small, + minimum: tooSmall ? def.exactLength.value : void 0, + maximum: tooBig ? def.exactLength.value : void 0, + type: "array", + inclusive: true, + exact: true, + message: def.exactLength.message + }); + status.dirty(); + } + } + if (def.minLength !== null) { + if (ctx.data.length < def.minLength.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: def.minLength.value, + type: "array", + inclusive: true, + exact: false, + message: def.minLength.message + }); + status.dirty(); + } + } + if (def.maxLength !== null) { + if (ctx.data.length > def.maxLength.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: def.maxLength.value, + type: "array", + inclusive: true, + exact: false, + message: def.maxLength.message + }); + status.dirty(); + } + } + if (ctx.common.async) { + return Promise.all([...ctx.data].map((item, i) => { + return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i)); + })).then((result2) => { + return ParseStatus.mergeArray(status, result2); + }); + } + const result = [...ctx.data].map((item, i) => { + return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i)); + }); + return ParseStatus.mergeArray(status, result); + } + get element() { + return this._def.type; + } + min(minLength, message) { + return new _ZodArray({ + ...this._def, + minLength: { value: minLength, message: errorUtil.toString(message) } + }); + } + max(maxLength, message) { + return new _ZodArray({ + ...this._def, + maxLength: { value: maxLength, message: errorUtil.toString(message) } + }); + } + length(len, message) { + return new _ZodArray({ + ...this._def, + exactLength: { value: len, message: errorUtil.toString(message) } + }); + } + nonempty(message) { + return this.min(1, message); + } +}; +ZodArray.create = (schema, params) => { + return new ZodArray({ + type: schema, + minLength: null, + maxLength: null, + exactLength: null, + typeName: ZodFirstPartyTypeKind.ZodArray, + ...processCreateParams(params) + }); +}; +function deepPartialify(schema) { + if (schema instanceof ZodObject) { + const newShape = {}; + for (const key in schema.shape) { + const fieldSchema = schema.shape[key]; + newShape[key] = ZodOptional.create(deepPartialify(fieldSchema)); + } + return new ZodObject({ + ...schema._def, + shape: () => newShape + }); + } else if (schema instanceof ZodArray) { + return new ZodArray({ + ...schema._def, + type: deepPartialify(schema.element) + }); + } else if (schema instanceof ZodOptional) { + return ZodOptional.create(deepPartialify(schema.unwrap())); + } else if (schema instanceof ZodNullable) { + return ZodNullable.create(deepPartialify(schema.unwrap())); + } else if (schema instanceof ZodTuple) { + return ZodTuple.create(schema.items.map((item) => deepPartialify(item))); + } else { + return schema; + } +} +var ZodObject = class _ZodObject extends ZodType { + constructor() { + super(...arguments); + this._cached = null; + this.nonstrict = this.passthrough; + this.augment = this.extend; + } + _getCached() { + if (this._cached !== null) + return this._cached; + const shape = this._def.shape(); + const keys = util.objectKeys(shape); + return this._cached = { shape, keys }; + } + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.object) { + const ctx2 = this._getOrReturnCtx(input); + addIssueToContext(ctx2, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx2.parsedType + }); + return INVALID; + } + const { status, ctx } = this._processInputParams(input); + const { shape, keys: shapeKeys } = this._getCached(); + const extraKeys = []; + if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === "strip")) { + for (const key in ctx.data) { + if (!shapeKeys.includes(key)) { + extraKeys.push(key); } } - ); - }); - return realsnImplieds; -} - -// src/AlternativeHierarchies/CSVCrumbs.ts -async function getCSVRows(plugin) { - const { CSVPaths } = plugin.settings; - const CSVRows = []; - if (CSVPaths === "") - return CSVRows; - const fullPath = (0, import_obsidian4.normalizePath)(CSVPaths); - const content = await app.vault.adapter.read(fullPath); - const lines = content.split("\n"); - const headers = lines[0].split(",").map((head) => head.trim()); - lines.slice(1).forEach((row) => { - const rowObj = {}; - row.split(",").map((head) => dropWikilinks(head.trim())).forEach((item, i) => { - rowObj[headers[i]] = item; - }); - (0, import_loglevel5.debug)({ rowObj }); - CSVRows.push(rowObj); - }); - return CSVRows; -} -function addCSVCrumbs(g, CSVRows, dir, field) { - CSVRows.forEach((row) => { - addNodesIfNot(g, [row.file]); - if (field === "" || !row[field]) - return; - addNodesIfNot(g, [row[field]]); - addEdgeIfNot(g, row.file, row[field], { dir, field }); - }); -} - -// src/AlternativeHierarchies/DataviewNotes.ts -var import_loglevel6 = __toESM(require_loglevel()); -var import_obsidian5 = require("obsidian"); -function addDataviewNotesToGraph(plugin, eligableAlts, frontms, mainG) { - const { settings } = plugin; - const { userHiers, dataviewNoteField } = settings; - const dv = getDVApi(plugin); - if (!dv && eligableAlts.length) { - new import_obsidian5.Notice(DATAVIEW_MISSING); - return; + } + const pairs = []; + for (const key of shapeKeys) { + const keyValidator = shape[key]; + const value = ctx.data[key]; + pairs.push({ + key: { status: "valid", value: key }, + value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)), + alwaysSet: key in ctx.data + }); + } + if (this._def.catchall instanceof ZodNever) { + const unknownKeys = this._def.unknownKeys; + if (unknownKeys === "passthrough") { + for (const key of extraKeys) { + pairs.push({ + key: { status: "valid", value: key }, + value: { status: "valid", value: ctx.data[key] } + }); + } + } else if (unknownKeys === "strict") { + if (extraKeys.length > 0) { + addIssueToContext(ctx, { + code: ZodIssueCode.unrecognized_keys, + keys: extraKeys + }); + status.dirty(); + } + } else if (unknownKeys === "strip") + ; + else { + throw new Error(`Internal ZodObject error: invalid unknownKeys value.`); + } + } else { + const catchall = this._def.catchall; + for (const key of extraKeys) { + const value = ctx.data[key]; + pairs.push({ + key: { status: "valid", value: key }, + value: catchall._parse( + new ParseInputLazyPath(ctx, value, ctx.path, key) + //, ctx.child(key), value, getParsedType(value) + ), + alwaysSet: key in ctx.data + }); + } + } + if (ctx.common.async) { + return Promise.resolve().then(async () => { + const syncPairs = []; + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + syncPairs.push({ + key, + value, + alwaysSet: pair.alwaysSet + }); + } + return syncPairs; + }).then((syncPairs) => { + return ParseStatus.mergeObjectSync(status, syncPairs); + }); + } else { + return ParseStatus.mergeObjectSync(status, pairs); + } } - const fields = getFields(userHiers); - eligableAlts.forEach((altFile) => { - var _a; - const basename = getDVBasename(altFile.file); - let query = altFile[BC_DV_NOTE]; - if (query.hasOwnProperty("path")) { - query = `[[${query.path}]]`; + get shape() { + return this._def.shape(); + } + strict(message) { + errorUtil.errToObj; + return new _ZodObject({ + ...this._def, + unknownKeys: "strict", + ...message !== void 0 ? { + errorMap: (issue, ctx) => { + var _a, _b, _c, _d; + const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError; + if (issue.code === "unrecognized_keys") + return { + message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError + }; + return { + message: defaultError + }; + } + } : {} + }); + } + strip() { + return new _ZodObject({ + ...this._def, + unknownKeys: "strip" + }); + } + passthrough() { + return new _ZodObject({ + ...this._def, + unknownKeys: "passthrough" + }); + } + // const AugmentFactory = + // (def: Def) => + // ( + // augmentation: Augmentation + // ): ZodObject< + // extendShape, Augmentation>, + // Def["unknownKeys"], + // Def["catchall"] + // > => { + // return new ZodObject({ + // ...def, + // shape: () => ({ + // ...def.shape(), + // ...augmentation, + // }), + // }) as any; + // }; + extend(augmentation) { + return new _ZodObject({ + ...this._def, + shape: () => ({ + ...this._def.shape(), + ...augmentation + }) + }); + } + /** + * Prior to zod@1.0.12 there was a bug in the + * inferred type of merged objects. Please + * upgrade if you are experiencing issues. + */ + merge(merging) { + const merged = new _ZodObject({ + unknownKeys: merging._def.unknownKeys, + catchall: merging._def.catchall, + shape: () => ({ + ...this._def.shape(), + ...merging._def.shape() + }), + typeName: ZodFirstPartyTypeKind.ZodObject + }); + return merged; + } + // merge< + // Incoming extends AnyZodObject, + // Augmentation extends Incoming["shape"], + // NewOutput extends { + // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation + // ? Augmentation[k]["_output"] + // : k extends keyof Output + // ? Output[k] + // : never; + // }, + // NewInput extends { + // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation + // ? Augmentation[k]["_input"] + // : k extends keyof Input + // ? Input[k] + // : never; + // } + // >( + // merging: Incoming + // ): ZodObject< + // extendShape>, + // Incoming["_def"]["unknownKeys"], + // Incoming["_def"]["catchall"], + // NewOutput, + // NewInput + // > { + // const merged: any = new ZodObject({ + // unknownKeys: merging._def.unknownKeys, + // catchall: merging._def.catchall, + // shape: () => + // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), + // typeName: ZodFirstPartyTypeKind.ZodObject, + // }) as any; + // return merged; + // } + setKey(key, schema) { + return this.augment({ [key]: schema }); + } + // merge( + // merging: Incoming + // ): //ZodObject = (merging) => { + // ZodObject< + // extendShape>, + // Incoming["_def"]["unknownKeys"], + // Incoming["_def"]["catchall"] + // > { + // // const mergedShape = objectUtil.mergeShapes( + // // this._def.shape(), + // // merging._def.shape() + // // ); + // const merged: any = new ZodObject({ + // unknownKeys: merging._def.unknownKeys, + // catchall: merging._def.catchall, + // shape: () => + // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), + // typeName: ZodFirstPartyTypeKind.ZodObject, + // }) as any; + // return merged; + // } + catchall(index) { + return new _ZodObject({ + ...this._def, + catchall: index + }); + } + pick(mask) { + const shape = {}; + util.objectKeys(mask).forEach((key) => { + if (mask[key] && this.shape[key]) { + shape[key] = this.shape[key]; + } + }); + return new _ZodObject({ + ...this._def, + shape: () => shape + }); + } + omit(mask) { + const shape = {}; + util.objectKeys(this.shape).forEach((key) => { + if (!mask[key]) { + shape[key] = this.shape[key]; + } + }); + return new _ZodObject({ + ...this._def, + shape: () => shape + }); + } + /** + * @deprecated + */ + deepPartial() { + return deepPartialify(this); + } + partial(mask) { + const newShape = {}; + util.objectKeys(this.shape).forEach((key) => { + const fieldSchema = this.shape[key]; + if (mask && !mask[key]) { + newShape[key] = fieldSchema; + } else { + newShape[key] = fieldSchema.optional(); + } + }); + return new _ZodObject({ + ...this._def, + shape: () => newShape + }); + } + required(mask) { + const newShape = {}; + util.objectKeys(this.shape).forEach((key) => { + if (mask && !mask[key]) { + newShape[key] = this.shape[key]; + } else { + const fieldSchema = this.shape[key]; + let newField = fieldSchema; + while (newField instanceof ZodOptional) { + newField = newField._def.innerType; + } + newShape[key] = newField; + } + }); + return new _ZodObject({ + ...this._def, + shape: () => newShape + }); + } + keyof() { + return createZodEnum(util.objectKeys(this.shape)); + } +}; +ZodObject.create = (shape, params) => { + return new ZodObject({ + shape: () => shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params) + }); +}; +ZodObject.strictCreate = (shape, params) => { + return new ZodObject({ + shape: () => shape, + unknownKeys: "strict", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params) + }); +}; +ZodObject.lazycreate = (shape, params) => { + return new ZodObject({ + shape, + unknownKeys: "strip", + catchall: ZodNever.create(), + typeName: ZodFirstPartyTypeKind.ZodObject, + ...processCreateParams(params) + }); +}; +var ZodUnion = class extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + const options = this._def.options; + function handleResults(results) { + for (const result of results) { + if (result.result.status === "valid") { + return result.result; + } + } + for (const result of results) { + if (result.result.status === "dirty") { + ctx.common.issues.push(...result.ctx.common.issues); + return result.result; + } + } + const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues)); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union, + unionErrors + }); + return INVALID; } - let field = (_a = altFile[BC_DV_NOTE_FIELD]) != null ? _a : dataviewNoteField || fields[0]; - let targets = []; - try { - targets = dv.pages(query).values; - } catch (er) { - new import_obsidian5.Notice(`${query} is not a valid Dataview from-query`); - (0, import_loglevel6.warn)(er); + if (ctx.common.async) { + return Promise.all(options.map(async (option) => { + const childCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [] + }, + parent: null + }; + return { + result: await option._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: childCtx + }), + ctx: childCtx + }; + })).then(handleResults); + } else { + let dirty = void 0; + const issues = []; + for (const option of options) { + const childCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [] + }, + parent: null + }; + const result = option._parseSync({ + data: ctx.data, + path: ctx.path, + parent: childCtx + }); + if (result.status === "valid") { + return result; + } else if (result.status === "dirty" && !dirty) { + dirty = { result, ctx: childCtx }; + } + if (childCtx.common.issues.length) { + issues.push(childCtx.common.issues); + } + } + if (dirty) { + ctx.common.issues.push(...dirty.ctx.common.issues); + return dirty.result; + } + const unionErrors = issues.map((issues2) => new ZodError(issues2)); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union, + unionErrors + }); + return INVALID; } - for (const target of targets) { - if (target[BC_IGNORE]) - continue; - const targetBN = getDVBasename(target.file); - const sourceOrder = getSourceOrder(altFile); - const targetOrder = getTargetOrder(frontms, targetBN); - populateMain( - settings, - mainG, - basename, - field, - targetBN, - sourceOrder, - targetOrder, - true - ); + } + get options() { + return this._def.options; + } +}; +ZodUnion.create = (types, params) => { + return new ZodUnion({ + options: types, + typeName: ZodFirstPartyTypeKind.ZodUnion, + ...processCreateParams(params) + }); +}; +var getDiscriminator = (type) => { + if (type instanceof ZodLazy) { + return getDiscriminator(type.schema); + } else if (type instanceof ZodEffects) { + return getDiscriminator(type.innerType()); + } else if (type instanceof ZodLiteral) { + return [type.value]; + } else if (type instanceof ZodEnum) { + return type.options; + } else if (type instanceof ZodNativeEnum) { + return util.objectValues(type.enum); + } else if (type instanceof ZodDefault) { + return getDiscriminator(type._def.innerType); + } else if (type instanceof ZodUndefined) { + return [void 0]; + } else if (type instanceof ZodNull) { + return [null]; + } else if (type instanceof ZodOptional) { + return [void 0, ...getDiscriminator(type.unwrap())]; + } else if (type instanceof ZodNullable) { + return [null, ...getDiscriminator(type.unwrap())]; + } else if (type instanceof ZodBranded) { + return getDiscriminator(type.unwrap()); + } else if (type instanceof ZodReadonly) { + return getDiscriminator(type.unwrap()); + } else if (type instanceof ZodCatch) { + return getDiscriminator(type._def.innerType); + } else { + return []; + } +}; +var ZodDiscriminatedUnion = class _ZodDiscriminatedUnion extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.object) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType + }); + return INVALID; } + const discriminator = this.discriminator; + const discriminatorValue = ctx.data[discriminator]; + const option = this.optionsMap.get(discriminatorValue); + if (!option) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_union_discriminator, + options: Array.from(this.optionsMap.keys()), + path: [discriminator] + }); + return INVALID; + } + if (ctx.common.async) { + return option._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + } else { + return option._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + } + } + get discriminator() { + return this._def.discriminator; + } + get options() { + return this._def.options; + } + get optionsMap() { + return this._def.optionsMap; + } + /** + * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor. + * However, it only allows a union of objects, all of which need to share a discriminator property. This property must + * have a different value for each object in the union. + * @param discriminator the name of the discriminator property + * @param types an array of object schemas + * @param params + */ + static create(discriminator, options, params) { + const optionsMap = /* @__PURE__ */ new Map(); + for (const type of options) { + const discriminatorValues = getDiscriminator(type.shape[discriminator]); + if (!discriminatorValues.length) { + throw new Error(`A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`); + } + for (const value of discriminatorValues) { + if (optionsMap.has(value)) { + throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`); + } + optionsMap.set(value, type); + } + } + return new _ZodDiscriminatedUnion({ + typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion, + discriminator, + options, + optionsMap, + ...processCreateParams(params) + }); + } +}; +function mergeValues(a, b) { + const aType = getParsedType(a); + const bType = getParsedType(b); + if (a === b) { + return { valid: true, data: a }; + } else if (aType === ZodParsedType.object && bType === ZodParsedType.object) { + const bKeys = util.objectKeys(b); + const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1); + const newObj = { ...a, ...b }; + for (const key of sharedKeys) { + const sharedValue = mergeValues(a[key], b[key]); + if (!sharedValue.valid) { + return { valid: false }; + } + newObj[key] = sharedValue.data; + } + return { valid: true, data: newObj }; + } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) { + if (a.length !== b.length) { + return { valid: false }; + } + const newArray = []; + for (let index = 0; index < a.length; index++) { + const itemA = a[index]; + const itemB = b[index]; + const sharedValue = mergeValues(itemA, itemB); + if (!sharedValue.valid) { + return { valid: false }; + } + newArray.push(sharedValue.data); + } + return { valid: true, data: newArray }; + } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) { + return { valid: true, data: a }; + } else { + return { valid: false }; + } +} +var ZodIntersection = class extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + const handleParsed = (parsedLeft, parsedRight) => { + if (isAborted(parsedLeft) || isAborted(parsedRight)) { + return INVALID; + } + const merged = mergeValues(parsedLeft.value, parsedRight.value); + if (!merged.valid) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_intersection_types + }); + return INVALID; + } + if (isDirty(parsedLeft) || isDirty(parsedRight)) { + status.dirty(); + } + return { status: status.value, value: merged.data }; + }; + if (ctx.common.async) { + return Promise.all([ + this._def.left._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }), + this._def.right._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }) + ]).then(([left, right]) => handleParsed(left, right)); + } else { + return handleParsed(this._def.left._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }), this._def.right._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + })); + } + } +}; +ZodIntersection.create = (left, right, params) => { + return new ZodIntersection({ + left, + right, + typeName: ZodFirstPartyTypeKind.ZodIntersection, + ...processCreateParams(params) + }); +}; +var ZodTuple = class _ZodTuple extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.array) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.array, + received: ctx.parsedType + }); + return INVALID; + } + if (ctx.data.length < this._def.items.length) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: this._def.items.length, + inclusive: true, + exact: false, + type: "array" + }); + return INVALID; + } + const rest = this._def.rest; + if (!rest && ctx.data.length > this._def.items.length) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: this._def.items.length, + inclusive: true, + exact: false, + type: "array" + }); + status.dirty(); + } + const items = [...ctx.data].map((item, itemIndex) => { + const schema = this._def.items[itemIndex] || this._def.rest; + if (!schema) + return null; + return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex)); + }).filter((x) => !!x); + if (ctx.common.async) { + return Promise.all(items).then((results) => { + return ParseStatus.mergeArray(status, results); + }); + } else { + return ParseStatus.mergeArray(status, items); + } + } + get items() { + return this._def.items; + } + rest(rest) { + return new _ZodTuple({ + ...this._def, + rest + }); + } +}; +ZodTuple.create = (schemas, params) => { + if (!Array.isArray(schemas)) { + throw new Error("You must pass an array of schemas to z.tuple([ ... ])"); + } + return new ZodTuple({ + items: schemas, + typeName: ZodFirstPartyTypeKind.ZodTuple, + rest: null, + ...processCreateParams(params) + }); +}; +var ZodRecord = class _ZodRecord extends ZodType { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.object) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.object, + received: ctx.parsedType + }); + return INVALID; + } + const pairs = []; + const keyType = this._def.keyType; + const valueType = this._def.valueType; + for (const key in ctx.data) { + pairs.push({ + key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)), + value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)), + alwaysSet: key in ctx.data + }); + } + if (ctx.common.async) { + return ParseStatus.mergeObjectAsync(status, pairs); + } else { + return ParseStatus.mergeObjectSync(status, pairs); + } + } + get element() { + return this._def.valueType; + } + static create(first, second, third) { + if (second instanceof ZodType) { + return new _ZodRecord({ + keyType: first, + valueType: second, + typeName: ZodFirstPartyTypeKind.ZodRecord, + ...processCreateParams(third) + }); + } + return new _ZodRecord({ + keyType: ZodString.create(), + valueType: first, + typeName: ZodFirstPartyTypeKind.ZodRecord, + ...processCreateParams(second) + }); + } +}; +var ZodMap = class extends ZodType { + get keySchema() { + return this._def.keyType; + } + get valueSchema() { + return this._def.valueType; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.map) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.map, + received: ctx.parsedType + }); + return INVALID; + } + const keyType = this._def.keyType; + const valueType = this._def.valueType; + const pairs = [...ctx.data.entries()].map(([key, value], index) => { + return { + key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, "key"])), + value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, "value"])) + }; + }); + if (ctx.common.async) { + const finalMap = /* @__PURE__ */ new Map(); + return Promise.resolve().then(async () => { + for (const pair of pairs) { + const key = await pair.key; + const value = await pair.value; + if (key.status === "aborted" || value.status === "aborted") { + return INVALID; + } + if (key.status === "dirty" || value.status === "dirty") { + status.dirty(); + } + finalMap.set(key.value, value.value); + } + return { status: status.value, value: finalMap }; + }); + } else { + const finalMap = /* @__PURE__ */ new Map(); + for (const pair of pairs) { + const key = pair.key; + const value = pair.value; + if (key.status === "aborted" || value.status === "aborted") { + return INVALID; + } + if (key.status === "dirty" || value.status === "dirty") { + status.dirty(); + } + finalMap.set(key.value, value.value); + } + return { status: status.value, value: finalMap }; + } + } +}; +ZodMap.create = (keyType, valueType, params) => { + return new ZodMap({ + valueType, + keyType, + typeName: ZodFirstPartyTypeKind.ZodMap, + ...processCreateParams(params) + }); +}; +var ZodSet = class _ZodSet extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.set) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.set, + received: ctx.parsedType + }); + return INVALID; + } + const def = this._def; + if (def.minSize !== null) { + if (ctx.data.size < def.minSize.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_small, + minimum: def.minSize.value, + type: "set", + inclusive: true, + exact: false, + message: def.minSize.message + }); + status.dirty(); + } + } + if (def.maxSize !== null) { + if (ctx.data.size > def.maxSize.value) { + addIssueToContext(ctx, { + code: ZodIssueCode.too_big, + maximum: def.maxSize.value, + type: "set", + inclusive: true, + exact: false, + message: def.maxSize.message + }); + status.dirty(); + } + } + const valueType = this._def.valueType; + function finalizeSet(elements2) { + const parsedSet = /* @__PURE__ */ new Set(); + for (const element2 of elements2) { + if (element2.status === "aborted") + return INVALID; + if (element2.status === "dirty") + status.dirty(); + parsedSet.add(element2.value); + } + return { status: status.value, value: parsedSet }; + } + const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i))); + if (ctx.common.async) { + return Promise.all(elements).then((elements2) => finalizeSet(elements2)); + } else { + return finalizeSet(elements); + } + } + min(minSize, message) { + return new _ZodSet({ + ...this._def, + minSize: { value: minSize, message: errorUtil.toString(message) } + }); + } + max(maxSize, message) { + return new _ZodSet({ + ...this._def, + maxSize: { value: maxSize, message: errorUtil.toString(message) } + }); + } + size(size, message) { + return this.min(size, message).max(size, message); + } + nonempty(message) { + return this.min(1, message); + } +}; +ZodSet.create = (valueType, params) => { + return new ZodSet({ + valueType, + minSize: null, + maxSize: null, + typeName: ZodFirstPartyTypeKind.ZodSet, + ...processCreateParams(params) + }); +}; +var ZodFunction = class _ZodFunction extends ZodType { + constructor() { + super(...arguments); + this.validate = this.implement; + } + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.function) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.function, + received: ctx.parsedType + }); + return INVALID; + } + function makeArgsIssue(args, error) { + return makeIssue({ + data: args, + path: ctx.path, + errorMaps: [ + ctx.common.contextualErrorMap, + ctx.schemaErrorMap, + getErrorMap(), + errorMap + ].filter((x) => !!x), + issueData: { + code: ZodIssueCode.invalid_arguments, + argumentsError: error + } + }); + } + function makeReturnsIssue(returns, error) { + return makeIssue({ + data: returns, + path: ctx.path, + errorMaps: [ + ctx.common.contextualErrorMap, + ctx.schemaErrorMap, + getErrorMap(), + errorMap + ].filter((x) => !!x), + issueData: { + code: ZodIssueCode.invalid_return_type, + returnTypeError: error + } + }); + } + const params = { errorMap: ctx.common.contextualErrorMap }; + const fn = ctx.data; + if (this._def.returns instanceof ZodPromise) { + const me = this; + return OK(async function(...args) { + const error = new ZodError([]); + const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => { + error.addIssue(makeArgsIssue(args, e)); + throw error; + }); + const result = await Reflect.apply(fn, this, parsedArgs); + const parsedReturns = await me._def.returns._def.type.parseAsync(result, params).catch((e) => { + error.addIssue(makeReturnsIssue(result, e)); + throw error; + }); + return parsedReturns; + }); + } else { + const me = this; + return OK(function(...args) { + const parsedArgs = me._def.args.safeParse(args, params); + if (!parsedArgs.success) { + throw new ZodError([makeArgsIssue(args, parsedArgs.error)]); + } + const result = Reflect.apply(fn, this, parsedArgs.data); + const parsedReturns = me._def.returns.safeParse(result, params); + if (!parsedReturns.success) { + throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]); + } + return parsedReturns.data; + }); + } + } + parameters() { + return this._def.args; + } + returnType() { + return this._def.returns; + } + args(...items) { + return new _ZodFunction({ + ...this._def, + args: ZodTuple.create(items).rest(ZodUnknown.create()) + }); + } + returns(returnType) { + return new _ZodFunction({ + ...this._def, + returns: returnType + }); + } + implement(func) { + const validatedFunc = this.parse(func); + return validatedFunc; + } + strictImplement(func) { + const validatedFunc = this.parse(func); + return validatedFunc; + } + static create(args, returns, params) { + return new _ZodFunction({ + args: args ? args : ZodTuple.create([]).rest(ZodUnknown.create()), + returns: returns || ZodUnknown.create(), + typeName: ZodFirstPartyTypeKind.ZodFunction, + ...processCreateParams(params) + }); + } +}; +var ZodLazy = class extends ZodType { + get schema() { + return this._def.getter(); + } + _parse(input) { + const { ctx } = this._processInputParams(input); + const lazySchema = this._def.getter(); + return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx }); + } +}; +ZodLazy.create = (getter, params) => { + return new ZodLazy({ + getter, + typeName: ZodFirstPartyTypeKind.ZodLazy, + ...processCreateParams(params) + }); +}; +var ZodLiteral = class extends ZodType { + _parse(input) { + if (input.data !== this._def.value) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_literal, + expected: this._def.value + }); + return INVALID; + } + return { status: "valid", value: input.data }; + } + get value() { + return this._def.value; + } +}; +ZodLiteral.create = (value, params) => { + return new ZodLiteral({ + value, + typeName: ZodFirstPartyTypeKind.ZodLiteral, + ...processCreateParams(params) + }); +}; +function createZodEnum(values, params) { + return new ZodEnum({ + values, + typeName: ZodFirstPartyTypeKind.ZodEnum, + ...processCreateParams(params) }); } +var ZodEnum = class _ZodEnum extends ZodType { + constructor() { + super(...arguments); + _ZodEnum_cache.set(this, void 0); + } + _parse(input) { + if (typeof input.data !== "string") { + const ctx = this._getOrReturnCtx(input); + const expectedValues = this._def.values; + addIssueToContext(ctx, { + expected: util.joinValues(expectedValues), + received: ctx.parsedType, + code: ZodIssueCode.invalid_type + }); + return INVALID; + } + if (!__classPrivateFieldGet(this, _ZodEnum_cache, "f")) { + __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), "f"); + } + if (!__classPrivateFieldGet(this, _ZodEnum_cache, "f").has(input.data)) { + const ctx = this._getOrReturnCtx(input); + const expectedValues = this._def.values; + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_enum_value, + options: expectedValues + }); + return INVALID; + } + return OK(input.data); + } + get options() { + return this._def.values; + } + get enum() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + get Values() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + get Enum() { + const enumValues = {}; + for (const val of this._def.values) { + enumValues[val] = val; + } + return enumValues; + } + extract(values, newDef = this._def) { + return _ZodEnum.create(values, { + ...this._def, + ...newDef + }); + } + exclude(values, newDef = this._def) { + return _ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), { + ...this._def, + ...newDef + }); + } +}; +_ZodEnum_cache = /* @__PURE__ */ new WeakMap(); +ZodEnum.create = createZodEnum; +var ZodNativeEnum = class extends ZodType { + constructor() { + super(...arguments); + _ZodNativeEnum_cache.set(this, void 0); + } + _parse(input) { + const nativeEnumValues = util.getValidEnumValues(this._def.values); + const ctx = this._getOrReturnCtx(input); + if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) { + const expectedValues = util.objectValues(nativeEnumValues); + addIssueToContext(ctx, { + expected: util.joinValues(expectedValues), + received: ctx.parsedType, + code: ZodIssueCode.invalid_type + }); + return INVALID; + } + if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, "f")) { + __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), "f"); + } + if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, "f").has(input.data)) { + const expectedValues = util.objectValues(nativeEnumValues); + addIssueToContext(ctx, { + received: ctx.data, + code: ZodIssueCode.invalid_enum_value, + options: expectedValues + }); + return INVALID; + } + return OK(input.data); + } + get enum() { + return this._def.values; + } +}; +_ZodNativeEnum_cache = /* @__PURE__ */ new WeakMap(); +ZodNativeEnum.create = (values, params) => { + return new ZodNativeEnum({ + values, + typeName: ZodFirstPartyTypeKind.ZodNativeEnum, + ...processCreateParams(params) + }); +}; +var ZodPromise = class extends ZodType { + unwrap() { + return this._def.type; + } + _parse(input) { + const { ctx } = this._processInputParams(input); + if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) { + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.promise, + received: ctx.parsedType + }); + return INVALID; + } + const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data); + return OK(promisified.then((data) => { + return this._def.type.parseAsync(data, { + path: ctx.path, + errorMap: ctx.common.contextualErrorMap + }); + })); + } +}; +ZodPromise.create = (schema, params) => { + return new ZodPromise({ + type: schema, + typeName: ZodFirstPartyTypeKind.ZodPromise, + ...processCreateParams(params) + }); +}; +var ZodEffects = class extends ZodType { + innerType() { + return this._def.schema; + } + sourceType() { + return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects ? this._def.schema.sourceType() : this._def.schema; + } + _parse(input) { + const { status, ctx } = this._processInputParams(input); + const effect = this._def.effect || null; + const checkCtx = { + addIssue: (arg) => { + addIssueToContext(ctx, arg); + if (arg.fatal) { + status.abort(); + } else { + status.dirty(); + } + }, + get path() { + return ctx.path; + } + }; + checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx); + if (effect.type === "preprocess") { + const processed = effect.transform(ctx.data, checkCtx); + if (ctx.common.async) { + return Promise.resolve(processed).then(async (processed2) => { + if (status.value === "aborted") + return INVALID; + const result = await this._def.schema._parseAsync({ + data: processed2, + path: ctx.path, + parent: ctx + }); + if (result.status === "aborted") + return INVALID; + if (result.status === "dirty") + return DIRTY(result.value); + if (status.value === "dirty") + return DIRTY(result.value); + return result; + }); + } else { + if (status.value === "aborted") + return INVALID; + const result = this._def.schema._parseSync({ + data: processed, + path: ctx.path, + parent: ctx + }); + if (result.status === "aborted") + return INVALID; + if (result.status === "dirty") + return DIRTY(result.value); + if (status.value === "dirty") + return DIRTY(result.value); + return result; + } + } + if (effect.type === "refinement") { + const executeRefinement = (acc) => { + const result = effect.refinement(acc, checkCtx); + if (ctx.common.async) { + return Promise.resolve(result); + } + if (result instanceof Promise) { + throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead."); + } + return acc; + }; + if (ctx.common.async === false) { + const inner = this._def.schema._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + if (inner.status === "aborted") + return INVALID; + if (inner.status === "dirty") + status.dirty(); + executeRefinement(inner.value); + return { status: status.value, value: inner.value }; + } else { + return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => { + if (inner.status === "aborted") + return INVALID; + if (inner.status === "dirty") + status.dirty(); + return executeRefinement(inner.value).then(() => { + return { status: status.value, value: inner.value }; + }); + }); + } + } + if (effect.type === "transform") { + if (ctx.common.async === false) { + const base = this._def.schema._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + if (!isValid(base)) + return base; + const result = effect.transform(base.value, checkCtx); + if (result instanceof Promise) { + throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`); + } + return { status: status.value, value: result }; + } else { + return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => { + if (!isValid(base)) + return base; + return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result })); + }); + } + } + util.assertNever(effect); + } +}; +ZodEffects.create = (schema, effect, params) => { + return new ZodEffects({ + schema, + typeName: ZodFirstPartyTypeKind.ZodEffects, + effect, + ...processCreateParams(params) + }); +}; +ZodEffects.createWithPreprocess = (preprocess, schema, params) => { + return new ZodEffects({ + schema, + effect: { type: "preprocess", transform: preprocess }, + typeName: ZodFirstPartyTypeKind.ZodEffects, + ...processCreateParams(params) + }); +}; +var ZodOptional = class extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType === ZodParsedType.undefined) { + return OK(void 0); + } + return this._def.innerType._parse(input); + } + unwrap() { + return this._def.innerType; + } +}; +ZodOptional.create = (type, params) => { + return new ZodOptional({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodOptional, + ...processCreateParams(params) + }); +}; +var ZodNullable = class extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType === ZodParsedType.null) { + return OK(null); + } + return this._def.innerType._parse(input); + } + unwrap() { + return this._def.innerType; + } +}; +ZodNullable.create = (type, params) => { + return new ZodNullable({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodNullable, + ...processCreateParams(params) + }); +}; +var ZodDefault = class extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + let data = ctx.data; + if (ctx.parsedType === ZodParsedType.undefined) { + data = this._def.defaultValue(); + } + return this._def.innerType._parse({ + data, + path: ctx.path, + parent: ctx + }); + } + removeDefault() { + return this._def.innerType; + } +}; +ZodDefault.create = (type, params) => { + return new ZodDefault({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodDefault, + defaultValue: typeof params.default === "function" ? params.default : () => params.default, + ...processCreateParams(params) + }); +}; +var ZodCatch = class extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + const newCtx = { + ...ctx, + common: { + ...ctx.common, + issues: [] + } + }; + const result = this._def.innerType._parse({ + data: newCtx.data, + path: newCtx.path, + parent: { + ...newCtx + } + }); + if (isAsync(result)) { + return result.then((result2) => { + return { + status: "valid", + value: result2.status === "valid" ? result2.value : this._def.catchValue({ + get error() { + return new ZodError(newCtx.common.issues); + }, + input: newCtx.data + }) + }; + }); + } else { + return { + status: "valid", + value: result.status === "valid" ? result.value : this._def.catchValue({ + get error() { + return new ZodError(newCtx.common.issues); + }, + input: newCtx.data + }) + }; + } + } + removeCatch() { + return this._def.innerType; + } +}; +ZodCatch.create = (type, params) => { + return new ZodCatch({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodCatch, + catchValue: typeof params.catch === "function" ? params.catch : () => params.catch, + ...processCreateParams(params) + }); +}; +var ZodNaN = class extends ZodType { + _parse(input) { + const parsedType = this._getType(input); + if (parsedType !== ZodParsedType.nan) { + const ctx = this._getOrReturnCtx(input); + addIssueToContext(ctx, { + code: ZodIssueCode.invalid_type, + expected: ZodParsedType.nan, + received: ctx.parsedType + }); + return INVALID; + } + return { status: "valid", value: input.data }; + } +}; +ZodNaN.create = (params) => { + return new ZodNaN({ + typeName: ZodFirstPartyTypeKind.ZodNaN, + ...processCreateParams(params) + }); +}; +var BRAND = Symbol("zod_brand"); +var ZodBranded = class extends ZodType { + _parse(input) { + const { ctx } = this._processInputParams(input); + const data = ctx.data; + return this._def.type._parse({ + data, + path: ctx.path, + parent: ctx + }); + } + unwrap() { + return this._def.type; + } +}; +var ZodPipeline = class _ZodPipeline extends ZodType { + _parse(input) { + const { status, ctx } = this._processInputParams(input); + if (ctx.common.async) { + const handleAsync = async () => { + const inResult = await this._def.in._parseAsync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + if (inResult.status === "aborted") + return INVALID; + if (inResult.status === "dirty") { + status.dirty(); + return DIRTY(inResult.value); + } else { + return this._def.out._parseAsync({ + data: inResult.value, + path: ctx.path, + parent: ctx + }); + } + }; + return handleAsync(); + } else { + const inResult = this._def.in._parseSync({ + data: ctx.data, + path: ctx.path, + parent: ctx + }); + if (inResult.status === "aborted") + return INVALID; + if (inResult.status === "dirty") { + status.dirty(); + return { + status: "dirty", + value: inResult.value + }; + } else { + return this._def.out._parseSync({ + data: inResult.value, + path: ctx.path, + parent: ctx + }); + } + } + } + static create(a, b) { + return new _ZodPipeline({ + in: a, + out: b, + typeName: ZodFirstPartyTypeKind.ZodPipeline + }); + } +}; +var ZodReadonly = class extends ZodType { + _parse(input) { + const result = this._def.innerType._parse(input); + if (isValid(result)) { + result.value = Object.freeze(result.value); + } + return result; + } + unwrap() { + return this._def.innerType; + } +}; +ZodReadonly.create = (type, params) => { + return new ZodReadonly({ + innerType: type, + typeName: ZodFirstPartyTypeKind.ZodReadonly, + ...processCreateParams(params) + }); +}; +function custom(check, params = {}, fatal) { + if (check) + return ZodAny.create().superRefine((data, ctx) => { + var _a, _b; + if (!check(data)) { + const p = typeof params === "function" ? params(data) : typeof params === "string" ? { message: params } : params; + const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true; + const p2 = typeof p === "string" ? { message: p } : p; + ctx.addIssue({ code: "custom", ...p2, fatal: _fatal }); + } + }); + return ZodAny.create(); +} +var late = { + object: ZodObject.lazycreate +}; +var ZodFirstPartyTypeKind; +(function(ZodFirstPartyTypeKind2) { + ZodFirstPartyTypeKind2["ZodString"] = "ZodString"; + ZodFirstPartyTypeKind2["ZodNumber"] = "ZodNumber"; + ZodFirstPartyTypeKind2["ZodNaN"] = "ZodNaN"; + ZodFirstPartyTypeKind2["ZodBigInt"] = "ZodBigInt"; + ZodFirstPartyTypeKind2["ZodBoolean"] = "ZodBoolean"; + ZodFirstPartyTypeKind2["ZodDate"] = "ZodDate"; + ZodFirstPartyTypeKind2["ZodSymbol"] = "ZodSymbol"; + ZodFirstPartyTypeKind2["ZodUndefined"] = "ZodUndefined"; + ZodFirstPartyTypeKind2["ZodNull"] = "ZodNull"; + ZodFirstPartyTypeKind2["ZodAny"] = "ZodAny"; + ZodFirstPartyTypeKind2["ZodUnknown"] = "ZodUnknown"; + ZodFirstPartyTypeKind2["ZodNever"] = "ZodNever"; + ZodFirstPartyTypeKind2["ZodVoid"] = "ZodVoid"; + ZodFirstPartyTypeKind2["ZodArray"] = "ZodArray"; + ZodFirstPartyTypeKind2["ZodObject"] = "ZodObject"; + ZodFirstPartyTypeKind2["ZodUnion"] = "ZodUnion"; + ZodFirstPartyTypeKind2["ZodDiscriminatedUnion"] = "ZodDiscriminatedUnion"; + ZodFirstPartyTypeKind2["ZodIntersection"] = "ZodIntersection"; + ZodFirstPartyTypeKind2["ZodTuple"] = "ZodTuple"; + ZodFirstPartyTypeKind2["ZodRecord"] = "ZodRecord"; + ZodFirstPartyTypeKind2["ZodMap"] = "ZodMap"; + ZodFirstPartyTypeKind2["ZodSet"] = "ZodSet"; + ZodFirstPartyTypeKind2["ZodFunction"] = "ZodFunction"; + ZodFirstPartyTypeKind2["ZodLazy"] = "ZodLazy"; + ZodFirstPartyTypeKind2["ZodLiteral"] = "ZodLiteral"; + ZodFirstPartyTypeKind2["ZodEnum"] = "ZodEnum"; + ZodFirstPartyTypeKind2["ZodEffects"] = "ZodEffects"; + ZodFirstPartyTypeKind2["ZodNativeEnum"] = "ZodNativeEnum"; + ZodFirstPartyTypeKind2["ZodOptional"] = "ZodOptional"; + ZodFirstPartyTypeKind2["ZodNullable"] = "ZodNullable"; + ZodFirstPartyTypeKind2["ZodDefault"] = "ZodDefault"; + ZodFirstPartyTypeKind2["ZodCatch"] = "ZodCatch"; + ZodFirstPartyTypeKind2["ZodPromise"] = "ZodPromise"; + ZodFirstPartyTypeKind2["ZodBranded"] = "ZodBranded"; + ZodFirstPartyTypeKind2["ZodPipeline"] = "ZodPipeline"; + ZodFirstPartyTypeKind2["ZodReadonly"] = "ZodReadonly"; +})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); +var instanceOfType = (cls, params = { + message: `Input not instance of ${cls.name}` +}) => custom((data) => data instanceof cls, params); +var stringType = ZodString.create; +var numberType = ZodNumber.create; +var nanType = ZodNaN.create; +var bigIntType = ZodBigInt.create; +var booleanType = ZodBoolean.create; +var dateType = ZodDate.create; +var symbolType = ZodSymbol.create; +var undefinedType = ZodUndefined.create; +var nullType = ZodNull.create; +var anyType = ZodAny.create; +var unknownType = ZodUnknown.create; +var neverType = ZodNever.create; +var voidType = ZodVoid.create; +var arrayType = ZodArray.create; +var objectType = ZodObject.create; +var strictObjectType = ZodObject.strictCreate; +var unionType = ZodUnion.create; +var discriminatedUnionType = ZodDiscriminatedUnion.create; +var intersectionType = ZodIntersection.create; +var tupleType = ZodTuple.create; +var recordType = ZodRecord.create; +var mapType = ZodMap.create; +var setType = ZodSet.create; +var functionType = ZodFunction.create; +var lazyType = ZodLazy.create; +var literalType = ZodLiteral.create; +var enumType = ZodEnum.create; +var nativeEnumType = ZodNativeEnum.create; +var promiseType = ZodPromise.create; +var effectsType = ZodEffects.create; +var optionalType = ZodOptional.create; +var nullableType = ZodNullable.create; +var preprocessType = ZodEffects.createWithPreprocess; +var pipelineType = ZodPipeline.create; +var ostring = () => stringType().optional(); +var onumber = () => numberType().optional(); +var oboolean = () => booleanType().optional(); +var coerce = { + string: (arg) => ZodString.create({ ...arg, coerce: true }), + number: (arg) => ZodNumber.create({ ...arg, coerce: true }), + boolean: (arg) => ZodBoolean.create({ + ...arg, + coerce: true + }), + bigint: (arg) => ZodBigInt.create({ ...arg, coerce: true }), + date: (arg) => ZodDate.create({ ...arg, coerce: true }) +}; +var NEVER = INVALID; +var z = /* @__PURE__ */ Object.freeze({ + __proto__: null, + defaultErrorMap: errorMap, + setErrorMap, + getErrorMap, + makeIssue, + EMPTY_PATH, + addIssueToContext, + ParseStatus, + INVALID, + DIRTY, + OK, + isAborted, + isDirty, + isValid, + isAsync, + get util() { + return util; + }, + get objectUtil() { + return objectUtil; + }, + ZodParsedType, + getParsedType, + ZodType, + datetimeRegex, + ZodString, + ZodNumber, + ZodBigInt, + ZodBoolean, + ZodDate, + ZodSymbol, + ZodUndefined, + ZodNull, + ZodAny, + ZodUnknown, + ZodNever, + ZodVoid, + ZodArray, + ZodObject, + ZodUnion, + ZodDiscriminatedUnion, + ZodIntersection, + ZodTuple, + ZodRecord, + ZodMap, + ZodSet, + ZodFunction, + ZodLazy, + ZodLiteral, + ZodEnum, + ZodNativeEnum, + ZodPromise, + ZodEffects, + ZodTransformer: ZodEffects, + ZodOptional, + ZodNullable, + ZodDefault, + ZodCatch, + ZodNaN, + BRAND, + ZodBranded, + ZodPipeline, + ZodReadonly, + custom, + Schema: ZodType, + ZodSchema: ZodType, + late, + get ZodFirstPartyTypeKind() { + return ZodFirstPartyTypeKind; + }, + coerce, + any: anyType, + array: arrayType, + bigint: bigIntType, + boolean: booleanType, + date: dateType, + discriminatedUnion: discriminatedUnionType, + effect: effectsType, + "enum": enumType, + "function": functionType, + "instanceof": instanceOfType, + intersection: intersectionType, + lazy: lazyType, + literal: literalType, + map: mapType, + nan: nanType, + nativeEnum: nativeEnumType, + never: neverType, + "null": nullType, + nullable: nullableType, + number: numberType, + object: objectType, + oboolean, + onumber, + optional: optionalType, + ostring, + pipeline: pipelineType, + preprocess: preprocessType, + promise: promiseType, + record: recordType, + set: setType, + strictObject: strictObjectType, + string: stringType, + symbol: symbolType, + transformer: effectsType, + tuple: tupleType, + "undefined": undefinedType, + union: unionType, + unknown: unknownType, + "void": voidType, + NEVER, + ZodIssueCode, + quotelessJson, + ZodError +}); + +// src/const/graph.ts +var EXPLICIT_EDGE_SOURCES = [ + "typed_link", + "tag_note", + "list_note", + "dendron_note", + "johnny_decimal_note", + "dataview_note", + "date_note", + "folder_note", + "regex_note" + // TODO: "zetel_note", // Can date_notes do this already? +]; +var SIMPLE_EDGE_SORT_FIELDS = [ + // The order they were added to the graph + // Hidden because I don't think anyone really cares about that order + // "graph", + "basename", + "path", + "field", + // Whether the edge is explicit or not + // Uses source and implied_kind as tie-breakers for explicit == true and false, respectively + "explicit" +]; +var COMPLEX_EDGE_SORT_FIELD_PREFIXES = ["neighbour-field"]; + +// src/graph/MyMultiGraph.ts +var import_graphology = __toESM(require_graphology_umd_min()); + +// src/utils/result.ts +var succ = (data) => ({ + ok: true, + data +}); +var fail = (error) => ({ + ok: false, + error +}); +var graph_build_fail = (error) => fail(error); + +// src/graph/objectify_mappers.ts +var objectify_edge_mapper = (cb) => (edge_id, attr2, source_id, target_id, source_attr, target_attr, undirected) => cb({ + id: edge_id, + attr: attr2, + source_id, + target_id, + source_attr, + target_attr, + undirected +}); +var objectify_edge = objectify_edge_mapper((e) => e); + +// src/graph/utils.ts +var is_self_loop = (edge) => edge.source_id === edge.target_id; +var stringify_node = (node_id, node_attr, options) => { + var _a, _b; + if (((_a = options == null ? void 0 : options.show_node_options) == null ? void 0 : _a.alias) && ((_b = node_attr.aliases) == null ? void 0 : _b.length)) { + return node_attr.aliases.at(0); + } else if (options == null ? void 0 : options.trim_basename_delimiter) { + return Paths.drop_ext(node_id).split("/").pop().split(options.trim_basename_delimiter).last(); + } else { + return Paths.show(node_id, options == null ? void 0 : options.show_node_options); + } +}; +var sorters = { + path: (order) => (a, b) => a.target_id.localeCompare(b.target_id) * order, + basename: (order) => (a, b) => { + const [a_field, b_field] = [ + Paths.drop_folder(a.target_id), + Paths.drop_folder(b.target_id) + ]; + return a_field.localeCompare(b_field) * order; + }, + field: (order) => (a, b) => { + var _a, _b; + const [a_field, b_field] = [ + (_a = a.attr.field) != null ? _a : "null", + (_b = b.attr.field) != null ? _b : "null" + ]; + return a_field.localeCompare(b_field) * order; + } +}; +var get_edge_sorter = (sort, graph) => { + switch (sort.field) { + case "path": { + return sorters.path(sort.order); + } + case "basename": { + return sorters.basename(sort.order); + } + case "field": { + return sorters.field(sort.order); + } + case "explicit": { + return (a, b) => { + if (a.attr.explicit === true && b.attr.explicit === true) { + return a.attr.source.localeCompare(b.attr.source) * sort.order; + } else if (a.attr.explicit === false && b.attr.explicit === false) { + return a.attr.implied_kind.localeCompare(b.attr.implied_kind) * sort.order; + } else { + return a.attr.explicit ? sort.order : -sort.order; + } + }; + } + default: { + if (!COMPLEX_EDGE_SORT_FIELD_PREFIXES.some( + (f) => sort.field.startsWith(f + ":") + )) { + throw new Error(`Invalid sort field: ${sort.field}`); + } + switch (sort.field.split(":")[0]) { + case "neighbour": + case "neighbour-field": { + const field = sort.field.split(":", 2).at(1); + const cache = {}; + return (a, b) => { + var _a, _b, _c, _d; + const [a_neighbour, b_neighbour] = [ + (_b = cache[_a = a.target_id]) != null ? _b : cache[_a] = graph.get_out_edges(a.target_id).filter((e) => has_edge_attrs(e, { field })).at(0), + (_d = cache[_c = b.target_id]) != null ? _d : cache[_c] = graph.get_out_edges(b.target_id).filter((e) => has_edge_attrs(e, { field })).at(0) + ]; + if (!a_neighbour || !b_neighbour) { + return a_neighbour ? -sort.order : b_neighbour ? sort.order : 0; + } else { + return sorters.path(sort.order)( + a_neighbour, + b_neighbour + ); + } + }; + } + default: { + return (_a, _b) => sort.order; + } + } + } + } +}; +var has_edge_attrs = (edge, attrs) => { + var _a; + return attrs === void 0 || [ + attrs.field === void 0 || edge.attr.field === attrs.field, + attrs.explicit === void 0 || edge.attr.explicit === attrs.explicit, + attrs.$or_fields === void 0 || attrs.$or_fields.includes((_a = edge.attr.field) != null ? _a : "null"), + attrs.$or_target_ids === void 0 || attrs.$or_target_ids.includes(edge.target_id) + ].every(Boolean); +}; + +// src/graph/MyMultiGraph.ts +var EDGE_ATTRIBUTES = [ + "field", + "explicit", + "source", + "implied_kind", + "round" +]; +var BCGraph = class extends import_graphology.MultiGraph { + constructor(input) { + var _a, _b; + super(); + /** Uniquely identify an edge based on its: + * - source_id + * - target_id + * - field + */ + this.make_edge_id = (source_id, target_id, attr2) => `${source_id}|${attr2.field}|${target_id}`; + // NOTE: These fields shouldn't actually dedupe an edge... I think what the user would consider an edge to be the same + // even if it was added for different reasons, but still to and from the same nodes, using the same field. + // Consider the commands/freeze-crumbs/index.md note as an example. If these fields were included, the implied relations would still show + // even tho there are now frozen real relations serving the exact same purpose. + // |${attr.explicit ? "explicit|" + attr.source : "implied|" + attr.implied_kind} + /** Return true if the edge was added. + * Won't be added if it already exists (based on it's {@link this.make_edge_id}), + * or if it's target_node has ingore_in_edges */ + this.safe_add_directed_edge = (source_id, target_id, attr2) => { + if (this.getNodeAttribute(target_id, "ignore_in_edges")) { + log.debug( + `ignore-in-edge > ${source_id} -${attr2.field}-> ${target_id}` + ); + return false; + } else if (this.getNodeAttribute(source_id, "ignore_out_edges")) { + log.debug( + `ignore-out-edge > ${source_id} -${attr2.field}-> ${target_id}` + ); + return false; + } + const edge_id = this.make_edge_id(source_id, target_id, attr2); + if (!this.hasDirectedEdge(edge_id)) { + this.addDirectedEdgeWithKey(edge_id, source_id, target_id, attr2); + return true; + } else { + return false; + } + }; + /** safely returns [] if node_id and !hasNode(node_id) */ + this.get_in_edges = (node_id) => node_id ? this.hasNode(node_id) ? this.mapInEdges(node_id, objectify_edge) : [] : this.mapInEdges(objectify_edge); + /** safely returns [] if node_id and !hasNode(node_id) */ + this.get_out_edges = (node_id) => node_id ? this.hasNode(node_id) ? this.mapOutEdges(node_id, objectify_edge) : [] : this.mapOutEdges(objectify_edge); + if (input) { + (_a = input.nodes) == null ? void 0 : _a.forEach( + ({ id, attr: attr2 }) => this.safe_add_node(id, attr2) + ); + (_b = input.edges) == null ? void 0 : _b.forEach((edge) => { + this.safe_add_node(edge.source_id, { resolved: true }); + this.safe_add_node(edge.target_id, { resolved: true }); + this.safe_add_directed_edge( + edge.source_id, + edge.target_id, + edge.attr + ); + }); + } + } + safe_add_node(id, attr2) { + try { + this.addNode(id, attr2); + return true; + } catch (error) { + return false; + } + } + /** Upsert a node by it's id (path). If it exists, patch attr, else addNode */ + upsert_node(id, attr2) { + if (this.hasNode(id)) { + Object.keys(attr2).forEach((key) => { + this.setNodeAttribute( + id, + key, + attr2[key] + ); + }); + } else { + this.addNode(id, attr2); + } + } + safe_rename_node(old_id, new_id) { + const exists = { + old: this.hasNode(old_id), + new: this.hasNode(new_id) + }; + if (!exists.old) { + return fail({ exists, message: "old_id doesn't exist" }); + } else if (exists.new) { + return fail({ exists, message: "new_id already exists" }); + } else { + this.addNode(new_id, this.getNodeAttributes(old_id)); + const old_edges = { + in: this.get_in_edges(old_id), + out: this.get_out_edges(old_id) + }; + this.dropNode(old_id); + old_edges.in.forEach((old_in_edge) => { + is_self_loop(old_in_edge) ? this.safe_add_directed_edge( + new_id, + new_id, + old_in_edge.attr + ) : this.safe_add_directed_edge( + old_in_edge.source_id, + new_id, + old_in_edge.attr + ); + }); + old_edges.out.forEach((old_out_edge) => { + !is_self_loop(old_out_edge) && this.safe_add_directed_edge( + new_id, + old_out_edge.target_id, + old_out_edge.attr + ); + }); + } + return succ({ exists }); + } +}; + +// src/utils/edge_fields.ts +var resolve_field_group_labels = (edge_field_groups, field_group_labels) => remove_duplicates( + edge_field_groups.filter((group) => field_group_labels.includes(group.label)).flatMap((group) => group.fields) +); + +// src/utils/url.ts +var url_search_params = (obj, options) => { + const { delimiter } = Object.assign({ delimiter: " " }, options); + let params = ""; + for (const key in obj) { + params += `${key}=${obj[key]}${delimiter}`; + } + params = params.slice(0, -1); + if ((options == null ? void 0 : options.trim_lone_param) && Object.keys(obj).length === 1) { + params = params.split("=", 2)[1]; + } + return params; +}; + +// src/utils/mermaid.ts +var MERMAID_DIRECTIONS = ["LR", "RL", "TB", "BT"]; +var MERMAID_RENDERER = ["dagre", "elk"]; +var MERMAID_CURVE_STYLES = [ + "basis", + "bumpX", + "bumpY", + "cardinal", + "catmullRom", + "linear", + "monotoneX", + "monotoneY", + "natural", + "step", + "stepAfter", + "stepBefore" +]; +var build_arrow = (e) => e.attr.explicit ? "-->" : "-.->"; +var build_attrs = (attr2, show_attributes) => { + const params = (show_attributes == null ? void 0 : show_attributes.length) ? url_search_params(untyped_pick(attr2, show_attributes), { + trim_lone_param: true + }) : null; + return (params == null ? void 0 : params.length) ? `|"${params}"|` : ""; +}; +var from_edges = (edges, config) => { + var _a, _b, _c, _d, _e; + const resolved = Object.assign( + { direction: "LR", kind: "flowchart" }, + remove_nullish_keys( + config != null ? config : {} + ) + ); + const flowchart_init = remove_nullish_keys({ + curve: resolved.curve_style, + defaultRenderer: resolved.renderer + }); + const lines = [ + // NOTE: Regardless of kind, the below field should always be flowchart + `%%{ init: { "flowchart": ${JSON.stringify(flowchart_init)} } }%%`, + `${resolved.kind} ${resolved.direction}` + ]; + const node_map = remove_duplicates_by( + // NOTE: This is _pretty_ inefficient, but necessary. + // If we just take all unique target_ids, we miss source nodes that don't have any incoming edges. + edges.flatMap((e) => [ + { path: e.source_id, attr: e.source_attr }, + { path: e.target_id, attr: e.target_attr } + ]), + (n2) => n2.path + ).reduce( + (map, node, i) => { + var _a2, _b2; + return map.set(node.path, { + i, + attr: node.attr, + label: (_b2 = (_a2 = resolved.get_node_label) == null ? void 0 : _a2.call(resolved, node.path, node.attr)) != null ? _b2 : node.path + }); + }, + /* @__PURE__ */ new Map() + ); + node_map.forEach((node) => { + lines.push(` ${node.i}("${node.label}")`); + }); + lines.push(""); + const mermaid_edges = []; + for (const edge of edges) { + const [source_i, target_i] = [ + node_map.get(edge.source_id).i, + node_map.get(edge.target_id).i + ]; + const opposing_edge_i = resolved.collapse_opposing_edges !== false ? mermaid_edges.findIndex( + (existing) => ( + // NOTE: This is pretty intense, all opposing edges will collapse, because now there's no direction semantics + target_i === existing.source_i && source_i === existing.target_i + ) + ) : -1; + if (opposing_edge_i === -1) { + mermaid_edges.push({ + source_i, + target_i, + arrow: build_arrow(edge), + attr: edge.attr, + collapsed_attr: Object.fromEntries( + (_b = (_a = resolved.show_attributes) == null ? void 0 : _a.map((attr2) => { + var _a2; + return [ + attr2, + /* @__PURE__ */ new Set([ + // @ts-ignore: If the property is not in the object, it will be undefined + (_a2 = edge.attr[attr2]) != null ? _a2 : "_" + ]) + ]; + })) != null ? _b : [] + ) + }); + } else { + const existing = mermaid_edges[opposing_edge_i]; + existing.arrow = edge.attr.explicit || existing.attr.explicit ? "---" : "-.-"; + (_c = resolved.show_attributes) == null ? void 0 : _c.forEach((attr2) => { + var _a2; + existing.collapsed_attr[attr2].add( + // @ts-ignore: If the property is not in the object, it will be undefined + (_a2 = edge.attr[attr2]) != null ? _a2 : "_" + ); + }); + } + } + mermaid_edges.forEach(({ arrow, collapsed_attr, source_i, target_i }) => { + const attrs = build_attrs( + Object.fromEntries( + Object.entries(collapsed_attr).map(([key, set]) => [ + key, + [...set.values()].join("|") + ]) + ), + resolved.show_attributes + ); + lines.push(` ${source_i} ${arrow}${attrs} ${target_i}`); + }); + lines.push(""); + const active_note_i = resolved.active_node_id ? (_d = node_map.get(resolved.active_node_id)) == null ? void 0 : _d.i : void 0; + if (active_note_i !== void 0) { + lines.push(` class ${active_note_i} BC-active-node`); + } + switch ((_e = resolved.click) == null ? void 0 : _e.method) { + case "class": { + const nodes = [...node_map.values()]; + if (nodes.length) { + lines.push( + ` class ${nodes.filter((n2) => n2.i !== active_note_i).map((n2) => n2.i)} internal-link` + ); + } + const unresolved_nodes = nodes.filter((n2) => !n2.attr.resolved); + if (unresolved_nodes.length) { + lines.push( + ` class ${unresolved_nodes.map((n2) => n2.i)} is-unresolved` + ); + } + break; + } + case "href": { + node_map.forEach((node, path) => { + var _a2; + lines.push( + ` click ${node.i} "${(_a2 = resolved.click) == null ? void 0 : _a2.getter(path, node.attr)}"` + ); + }); + break; + } + case "callback": { + node_map.forEach((node) => { + var _a2; + lines.push( + ` click ${node.i} call ${(_a2 = resolved.click) == null ? void 0 : _a2.callback_name}()` + ); + }); + break; + } + } + return lines.join("\n"); +}; +var _encode = (code) => { + const bytes = new TextEncoder().encode(code); + return btoa(String.fromCharCode(...bytes)); +}; +var to_image_link = (code) => `https://mermaid.ink/img/${_encode(code)}`; +var to_live_edit_link = (code) => { + const state = { + code, + // NOTE: For some reason, having both true doesn't trigger the initial render? + autoSync: false, + updateDiagram: true, + mermaid: { theme: "default" } + }; + const encoded = _encode(JSON.stringify(state, void 0, 2)); + return `https://mermaid.live/edit#base64:${encoded}`; +}; +var Mermaid = { + from_edges, + to_image_link, + to_live_edit_link, + RENDERERS: MERMAID_RENDERER, + DIRECTIONS: MERMAID_DIRECTIONS, + CURVE_STYLES: MERMAID_CURVE_STYLES +}; + +// src/utils/zod.ts +var not_string_msg = (field, received) => `Expected a string (text), but got: \`${received}\` (${typeof received}). _Try wrapping the value in quotes._ +**Example**: \`${field}: "${received}"\``; +var invalid_enum_msg = (field, options, received) => `Expected one of the following options: ${quote_join(options, "`", ", or ")}, but got: \`${received}\`. +**Example**: \`${field}: ${options[0]}\``; +var not_array_msg = (field, options, received) => `This field is now expected to be a YAML list (array), but got: \`${received}\` (${typeof received}). _Try wrapping it in square brackets._ +**Example**: \`${field}: [${options.slice(0, 2).join(", ")}]\`, or possibly: \`${field}: [${received}]\``; +var dynamic_enum_schema = (options, field) => z.string().superRefine((received, ctx) => { + if (options.includes(received)) { + return true; + } else { + ctx.addIssue({ + options, + received, + code: "invalid_enum_value", + // NOTE: Leave the default path on _this_ object, but pass the override into the error message + message: invalid_enum_msg( + field != null ? field : ctx.path.join("."), + options, + received + ) + }); + return false; + } +}); +var dynamic_enum_array_schema = (field, options, received) => z.array(dynamic_enum_schema(options), { + invalid_type_error: not_array_msg(field, options, received) +}); +var zod = { + error: { + not_string: not_string_msg, + invalid_enum: invalid_enum_msg, + not_array: not_array_msg + }, + schema: { + dynamic_enum: dynamic_enum_schema, + dynamic_enum_array: dynamic_enum_array_schema + } +}; + +// src/codeblocks/schema.ts +var FIELDS = [ + "type", + "title", + "start-note", + "fields", + "field-groups", + "depth", + "flat", + "collapse", + "merge-fields", + "dataview-from", + "content", + "sort", + "field-prefix", + "show-attributes", + "mermaid-direction", + "mermaid-renderer", + "mermaid-curve" +]; +var BOOLEANS = [true, false]; +var build2 = (input, data) => { + var _a, _b, _c, _d, _e, _f, _g, _h; + const field_labels = data.edge_fields.map((f) => f.label); + const group_labels = data.field_groups.map((f) => f.label); + return z.object({ + title: z.string({ + message: zod.error.not_string("title", input["title"]) + }).optional(), + "start-note": z.string({ + message: zod.error.not_string( + "start-note", + input["start-note"] + ) + }).optional(), + "dataview-from": z.string({ + message: zod.error.not_string( + "dataview-from", + input["dataview-from"] + ) + }).optional(), + flat: z.boolean({ + message: zod.error.invalid_enum( + "flat", + BOOLEANS, + input["flat"] + ) + }).default(false), + collapse: z.boolean({ + message: zod.error.invalid_enum( + "collapse", + BOOLEANS, + input["collapse"] + ) + }).default(false), + "merge-fields": z.boolean({ + message: zod.error.invalid_enum( + "merge-fields", + BOOLEANS, + input["merge-fields"] + ) + }).default(true), + content: z.enum(["open", "closed"], { + message: zod.error.invalid_enum( + "content", + ["open", "closed"], + input["content"] + ) + }).optional(), + type: z.enum(["tree", "mermaid", "markmap"], { + message: zod.error.invalid_enum( + "type", + ["tree", "mermaid", "markmap"], + input["type"] + ) + }).default("tree"), + "mermaid-renderer": z.enum(Mermaid.RENDERERS, { + message: zod.error.invalid_enum( + "mermaid-renderer", + Mermaid.RENDERERS, + input["mermaid-renderer"] + ) + }).optional(), + "mermaid-direction": z.enum(Mermaid.DIRECTIONS, { + message: zod.error.invalid_enum( + "mermaid-direction", + Mermaid.DIRECTIONS, + input["mermaid-direction"] + ) + }).optional(), + "mermaid-curve": z.enum(Mermaid.CURVE_STYLES, { + message: zod.error.invalid_enum( + "mermaid-curve", + Mermaid.CURVE_STYLES, + input["mermaid-curve"] + ) + }).optional(), + "show-attributes": z.array(z.enum(EDGE_ATTRIBUTES), { + message: zod.error.not_array( + "show-attributes", + EDGE_ATTRIBUTES, + input["show-attributes"] + ) + }).optional(), + fields: zod.schema.dynamic_enum_array("fields", field_labels, input["fields"]).optional(), + "field-groups": zod.schema.dynamic_enum_array( + "field-groups", + group_labels, + input["field-groups"] + ).optional(), + depth: z.array( + z.number({ + invalid_type_error: `Expected a number, but got: \`${input["depth"]}\` (${typeof input["depth"]}). _Try using a number (integer)._ +**Example**: \`depth: [0]\`, or \`depth: [0, 3]\`` + }).min( + 0, + `Minimum depth cannot be less than \`0\`, but got: \`${input["depth"]}\` _Try using a non-negative number (greater than or equal to zero \`0\`)._ +**Example**: \`depth: [0]\`, or possibly: \`depth: [${typeof input["depth"] === "number" ? -1 * input["depth"] : input["depth"]}\`]` + ), + { + invalid_type_error: `Expected a YAML list (array) of one or two numbers, but got: \`${input["depth"]}\` (${typeof input["depth"]}). _Try wrapping it in square brackets._ +**Example**: \`depth: [0]\`, or \`depth: [0, 3]\`, or possibly: \`depth: [${input["depth"]}]\`` + } + ).min( + 1, + `At least one item is required, but got: \`[${input["depth"]}]\`. _Try adding a number to the list._ +**Example**: \`depth: [0]\`, or \`depth: [0, 3]\`` + ).max( + 2, + // NOTE: I _could_ do something like: + // or possibly \`depth: [${(input["depth"])?.slice(0, 2).join(", ")}]\` + // But even that mess isn't safe. What if it's a string or something without join? + `Maximum of two items allowed, but got: \`[${input["depth"]}]\`. _Try removing one of the numbers._ +**Example**: \`depth: [${(_b = (_a = input["depth"]) == null ? void 0 : _a[0]) != null ? _b : 0}]\`, or possibly \`depth: [${(_d = (_c = input["depth"]) == null ? void 0 : _c[0]) != null ? _d : 0}, 3]\`` + ).transform((v) => { + if (v.length === 1) + return [v[0], Infinity]; + else + return v; + }).refine((v) => v[0] <= v[1], { + message: `Minimum depth cannot be greater than maximum depth. _Try swapping the numbers._ +**Example**: \`depth: [0, 3]\`, or possibly: \`depth: [${(_f = (_e = input["depth"]) == null ? void 0 : _e[1]) != null ? _f : 0}, ${(_h = (_g = input["depth"]) == null ? void 0 : _g[0]) != null ? _h : 3}]\`` + }).default([0, Infinity]), + sort: z.preprocess( + (v) => { + if (typeof v === "string") { + const [field, order] = v.split(" "); + return { field, order: order != null ? order : "asc" }; + } else { + return v; + } + }, + z.object({ + // TODO: Use a custom zod schema to retain string template literals here + // https://github.com/colinhacks/zod?tab=readme-ov-file#custom-schemas + field: zod.schema.dynamic_enum( + [ + ...SIMPLE_EDGE_SORT_FIELDS, + ...data.edge_fields.map( + (f) => `neighbour-field:${f.label}` + ) + ], + "sort" + ), + order: z.union( + [ + z.enum(["asc", "desc"]), + // Something very weird happening... + // If a note has two codeblocks, the one that gets rendered first seems to override config in the other? + // So when the `sort` field of the second comes in for parsing, + // It's already been transformed, and so sort.order is a number, not a string... + z.literal(1), + z.literal(-1) + ], + { + // SOURCE: https://github.com/colinhacks/zod/issues/117#issuecomment-1595801389 + errorMap: (_err, ctx) => ({ + message: zod.error.invalid_enum( + "sort.order", + ["asc", "desc"], + ctx.data + ) + }) + } + ).transform( + (v) => v === "asc" ? 1 : v === "desc" ? -1 : v + ) + }) + ).default({ + order: 1, + field: "basename" + }) + }).passthrough().default({}).transform((options) => { + if (options["field-groups"]) { + const field_labels2 = resolve_field_group_labels( + data.field_groups, + options["field-groups"] + ); + if (options.fields) { + options.fields = remove_duplicates( + options.fields.concat(field_labels2) + ); + } else { + options.fields = field_labels2; + } + } + return options; + }).superRefine((options, ctx) => { + if (options["mermaid-curve"] && options["mermaid-renderer"]) { + ctx.addIssue({ + code: "custom", + path: ["mermaid-curve"], + message: `Cannot specify both a mermaid curve and a renderer. _Try removing one of the fields._ +**Example**: \`mermaid-curve: ${options["mermaid-curve"]}\`, or \`mermaid-renderer: ${options["mermaid-renderer"]}\`` + }); + return false; + } + return true; + }); +}; +var CodeblockSchema = { + FIELDS, + build: build2 +}; + +// src/codeblocks/index.ts +var parse_source = (source, data) => { + var _a; + const errors = []; + let yaml; + try { + yaml = (_a = (0, import_obsidian.parseYaml)(source)) != null ? _a : {}; + log.debug("Codeblock > parsed_yaml >", yaml); + } catch (error) { + log.error("Codeblock > parse_source > ", error); + errors.push({ + path: "yaml", + code: "invalid_yaml", + message: "Invalid codeblock YAML. Check the console for more information (press `Ctrl + Shift + I` to open the console)." + }); + return { parsed: null, errors }; + } + const parsed = CodeblockSchema.build(yaml, data).safeParse(yaml); + if (!parsed.success) { + errors.push( + ...remove_duplicates_by( + parsed.error.issues, + (issue) => issue.path.join(".") + ).map((issue) => ({ + message: issue.message, + code: "invalid_field_value", + path: issue.path.map((key) => typeof key === "number" ? key + 1 : key).join(" > ") + })) + ); + return { + errors, + parsed: null + }; + } + const invalid_fields = Object.keys(parsed.data).filter( + (key) => !CodeblockSchema.FIELDS.includes(key) + ); + if (invalid_fields.length) { + errors.push({ + path: "yaml", + code: "invalid_yaml", + message: `The following is not a valid codeblock field: \`${invalid_fields[0]}\`. Valid options are: ${quote_join(CodeblockSchema.FIELDS, "`", ", or ")}` + }); + } + return { parsed: parsed.data, errors }; +}; +var postprocess_options = (source_path, parsed, errors, plugin) => { + var _a; + let file_path = source_path; + if (parsed["start-note"]) { + const normalised = Paths.normalise( + Paths.ensure_ext(parsed["start-note"], "md") + ); + const start_file = plugin.app.metadataCache.getFirstLinkpathDest( + normalised, + file_path + ); + if (start_file) { + file_path = start_file.path; + } else { + errors.push({ + path: "start-note", + code: "invalid_field_value", + message: `Could not find note \`${normalised}\` in your vault. Try a different path.` + }); + } + } + if (parsed["dataview-from"]) { + try { + const pages = (_a = dataview_plugin.get_api(plugin.app)) == null ? void 0 : _a.pages(parsed["dataview-from"]); + parsed["dataview-from-paths"] = pages == null ? void 0 : pages.map( + (page) => page.file.path + ); + } catch (error) { + errors.push({ + path: "dataview-from", + code: "invalid_field_value", + message: `Input \`${parsed["dataview-from"]}\` is not a valid Dataview query. +You can use \`app.plugins.plugins.dataview.api.pages("")\` to test your query in the console (press \`Ctrl + Shift + I\` to open the console).` + }); + } + } + return { options: parsed, file_path }; +}; +var active_codeblocks = /* @__PURE__ */ new Map(); +var register = (codeBlock) => { + active_codeblocks.set(codeBlock.id, codeBlock); +}; +var unregister = (codeBlock) => { + active_codeblocks.delete(codeBlock.id); +}; +var update_all = () => { + for (const codeBlock of active_codeblocks.values()) { + void codeBlock.update(); + } +}; +var Codeblocks = { + parse_source, + postprocess_options, + register, + unregister, + update_all +}; + +// src/graph/traverse.ts +var breadth_first = (graph, start_node, callback, edge_filter) => { + const visited_edge_ids = /* @__PURE__ */ new Set(); + const stack = graph.get_out_edges(start_node).map((edge) => ({ edge, depth: 0 })).filter((item) => !edge_filter || edge_filter(item)); + while (stack.length > 0) { + const item = stack.shift(); + if (visited_edge_ids.has(item.edge.id)) + continue; + else + visited_edge_ids.add(item.edge.id); + callback(item); + graph.get_out_edges(item.edge.target_id).map((out_edge) => ({ edge: out_edge, depth: item.depth + 1 })).filter((out_item) => !edge_filter || edge_filter(out_item)).forEach((item2) => stack.push(item2)); + } +}; +var gather_items = (graph, start_node, edge_filter) => { + const items = []; + breadth_first(graph, start_node, (item) => items.push(item), edge_filter); + return items; +}; +var MAX_DEPTH = 100; +var build_tree = (graph, source_id, { depth, max_depth }, edge_filter, visited_edge_ids = /* @__PURE__ */ new Set()) => { + depth != null ? depth : depth = 0; + max_depth != null ? max_depth : max_depth = MAX_DEPTH; + const tree = []; + if (depth <= max_depth) { + for (const edge of graph.get_out_edges(source_id).filter((edge2) => !edge_filter || edge_filter(edge2, depth))) { + if (visited_edge_ids.has(edge.id)) + continue; + else + visited_edge_ids.add(edge.id); + const children2 = build_tree( + graph, + edge.target_id, + { depth: depth + 1, max_depth }, + edge_filter, + visited_edge_ids + ); + tree.push({ edge, depth, children: children2 }); + } + } + return tree; +}; +var flatten_tree = (tree) => { + const traversal_items = []; + tree.forEach(({ edge, depth, children: children2 }) => { + traversal_items.push({ edge, depth }); + traversal_items.push(...flatten_tree(children2)); + }); + return traversal_items; +}; +var tree_to_all_paths = (tree) => { + const paths = []; + tree.forEach(({ edge, children: children2 }) => { + if (children2.length === 0) { + paths.push([edge]); + } else { + const child_paths = tree_to_all_paths(children2); + child_paths.forEach((path) => paths.push([edge, ...path])); + } + }); + return paths; +}; +var sort_edge_tree = (tree, sorter) => { + tree.forEach((nested_path) => { + nested_path.children = sort_edge_tree(nested_path.children, sorter); + }); + return tree.sort((a, b) => sorter(a.edge, b.edge)); +}; +var get_transitive_chain_target_ids = (graph, start_node, chain, edge_filter) => { + const target_ids = []; + Traverse.breadth_first( + graph, + start_node, + (item) => { + if (item.depth === chain.length - 1) { + target_ids.push(item.edge.target_id); + } + }, + (item) => ( + // Ensures we don't go over the chain length ("max_depth") + chain[item.depth] && // Check if the edge has the attrs we're looking for + has_edge_attrs(item.edge, chain[item.depth]) && (!edge_filter || edge_filter(item)) + ) + ); + return target_ids; +}; +var Traverse = { + breadth_first, + gather_items, + build_tree, + flatten_tree, + tree_to_all_paths, + sort_edge_tree, + get_transitive_chain_target_ids +}; + +// src/utils/links.ts +var resolve_to_absolute_path = (app, relative_path, source_path) => { + const folder = app.fileManager.getNewFileParent(source_path, relative_path); + return Paths.build(folder.path, Paths.basename(relative_path), "md"); +}; +var ify = (path, display, options) => { + switch (options.link_kind) { + case "none": { + return display; + } + case "wiki": { + const no_ext = Paths.drop_ext(path); + return display === path ? `[[${no_ext}]]` : `[[${no_ext}|${display}]]`; + } + case "markdown": { + return display === path ? `[${path}](${path})` : `[${display}](${path})`; + } + } +}; +var Links = { + ify, + resolve_to_absolute_path +}; + +// src/commands/list_index/index.ts +var ListIndex; +((ListIndex2) => { + ListIndex2.DEFAULT_OPTIONS = { + fields: [], + indent: "\\t", + link_kind: "wiki", + show_attributes: [], + field_group_labels: [], + edge_sort_id: { + order: 1, + field: "basename" + }, + show_node_options: { + ext: false, + alias: true, + folder: false + } + }; + ListIndex2.edge_tree_to_list_index = (tree, options) => { + let index = ""; + const real_indent = options.indent.replace(/\\t/g, " "); + tree.forEach(({ children: children2, depth, edge }) => { + const display = stringify_node(edge.target_id, edge.target_attr, { + show_node_options: options.show_node_options + }); + const link = Links.ify(edge.target_id, display, { + link_kind: options.link_kind + }); + const attr2 = options.show_attributes.length ? ` (${url_search_params( + untyped_pick(edge.attr, options.show_attributes), + { trim_lone_param: true } + )})` : ""; + index += real_indent.repeat(depth) + `- ${link}${attr2} +`; + index += (0, ListIndex2.edge_tree_to_list_index)(children2, options); + }); + return index; + }; + ListIndex2.build = (graph, start_node, options) => (0, ListIndex2.edge_tree_to_list_index)( + Traverse.sort_edge_tree( + Traverse.build_tree( + graph, + start_node, + options, + (e) => has_edge_attrs(e, { $or_fields: options.fields }) + ), + get_edge_sorter(options.edge_sort_id, graph) + ), + options + ); +})(ListIndex || (ListIndex = {})); + +// src/const/settings.ts +var DEFAULT_EDGE_SORT_ID = { field: "basename", order: 1 }; +var DEFAULT_SHOW_NODE_OPTIONS = { + ext: false, + folder: false, + alias: false +}; +var DEFAULT_SETTINGS = { + is_dirty: false, + edge_fields: [ + { label: "up" }, + { label: "down" }, + { label: "same" }, + { label: "next" }, + { label: "prev" } + ], + edge_field_groups: [ + { + label: "ups", + fields: ["up"] + }, + { + label: "downs", + fields: ["down"] + }, + { + label: "sames", + fields: ["same"] + }, + { + label: "nexts", + fields: ["next"] + }, + { + label: "prevs", + fields: ["prev"] + } + ], + implied_relations: { + transitive: [ + { + name: "", + rounds: 1, + chain: [{ field: "up" }], + close_field: "down", + close_reversed: true + }, + { + name: "", + rounds: 1, + chain: [{ field: "down" }], + close_field: "up", + close_reversed: true + }, + { + name: "", + rounds: 1, + chain: [{ field: "same" }], + close_field: "same", + close_reversed: true + }, + { + name: "", + rounds: 1, + chain: [{ field: "next" }], + close_field: "prev", + close_reversed: true + }, + { + name: "", + rounds: 1, + chain: [{ field: "prev" }], + close_field: "next", + close_reversed: true + } + ] + }, + explicit_edge_sources: { + typed_link: {}, + list_note: { + // Disabled by default + default_neighbour_field: "" + }, + tag_note: { + default_field: "up" + }, + regex_note: { + default_field: "up" + }, + dendron_note: { + enabled: false, + delimiter: ".", + default_field: "up", + display_trimmed: false + }, + johnny_decimal_note: { + enabled: false, + delimiter: ".", + default_field: "up" + }, + date_note: { + enabled: false, + date_format: "yyyy-MM-dd", + default_field: "next", + stretch_to_existing: false + } + }, + views: { + page: { + all: { + sticky: false, + readable_line_width: true + }, + trail: { + enabled: true, + format: "grid", + selection: "all", + default_depth: 999, + no_path_message: "", + show_controls: true, + merge_fields: false, + field_group_labels: ["ups"], + show_node_options: { ...DEFAULT_SHOW_NODE_OPTIONS } + }, + prev_next: { + enabled: true, + show_node_options: { ...DEFAULT_SHOW_NODE_OPTIONS }, + field_group_labels: { + prev: ["prevs"], + next: ["nexts"] + } + } + }, + side: { + matrix: { + collapse: false, + edge_sort_id: { ...DEFAULT_EDGE_SORT_ID }, + show_node_options: { ...DEFAULT_SHOW_NODE_OPTIONS }, + show_attributes: ["source", "implied_kind", "round"], + field_group_labels: ["ups", "downs", "sames", "nexts", "prevs"] + }, + tree: { + collapse: false, + show_attributes: [], + merge_fields: false, + field_group_labels: ["downs"], + edge_sort_id: { ...DEFAULT_EDGE_SORT_ID }, + show_node_options: { ...DEFAULT_SHOW_NODE_OPTIONS } + } + }, + codeblocks: { + show_node_options: { ...DEFAULT_SHOW_NODE_OPTIONS } + } + }, + commands: { + rebuild_graph: { + notify: true, + trigger: { + note_save: false, + layout_change: false + } + }, + list_index: { + default_options: ListIndex.DEFAULT_OPTIONS + }, + freeze_implied_edges: { + default_options: { + destination: "frontmatter" + } + }, + thread: { + default_options: { + destination: "frontmatter", + target_path_template: "{{source.folder}}/{{attr.field}} {{source.basename}}" + } + } + }, + suggestors: { + edge_field: { + enabled: false, + trigger: "." + } + }, + debug: { + level: "INFO" + } +}; + +// src/const/views.ts +var VIEW_IDS = { + matrix: "bc-matrix-view", + tree: "bc-tree-view" +}; + +// src/const/metadata_fields.ts +var METADATA_FIELDS_MAP = { + "BC-tag-note-tag": { + property_type: "text" + }, + "BC-tag-note-field": { + property_type: "text" + }, + "BC-tag-note-exact": { + property_type: "checkbox" + }, + // + "BC-regex-note-regex": { + property_type: "text" + }, + "BC-regex-note-flags": { + property_type: "text" + }, + "BC-regex-note-field": { + property_type: "text" + }, + // + "BC-folder-note-field": { + property_type: "text" + }, + "BC-folder-note-recurse": { + property_type: "checkbox" + }, + // + "BC-list-note-field": { + property_type: "text" + }, + "BC-list-note-neighbour-field": { + property_type: "text" + }, + "BC-list-note-exclude-index": { + property_type: "checkbox" + }, + // + "BC-dendron-note-field": { + property_type: "text" + }, + // + "BC-johnny-decimal-note-field": { + property_type: "text" + }, + // + "BC-dataview-note-query": { + property_type: "text" + }, + "BC-dataview-note-field": { + property_type: "text" + }, + // + "BC-ignore-in-edges": { + property_type: "checkbox" + }, + "BC-ignore-out-edges": { + property_type: "checkbox" + } +}; +var META_ALIAS = { + "tag-note-tag": "BC-tag-note-tag", + "tag-note-field": "BC-tag-note-field", + "tag-note-exact": "BC-tag-note-exact", + // + "regex-note-regex": "BC-regex-note-regex", + "regex-note-flags": "BC-regex-note-flags", + "regex-note-field": "BC-regex-note-field", + // + "folder-note-field": "BC-folder-note-field", + "folder-note-recurse": "BC-folder-note-recurse", + // + "list-note-field": "BC-list-note-field", + "list-note-neighbour-field": "BC-list-note-neighbour-field", + "list-note-exclude-index": "BC-list-note-exclude-index", + // + "dendron-note-field": "BC-dendron-note-field", + // + "johnny-decimal-note-field": "BC-johnny-decimal-note-field", + // + "dataview-note-query": "BC-dataview-note-query", + "dataview-note-field": "BC-dataview-note-field", + // + "ignore-in-edges": "BC-ignore-in-edges", + "ignore-out-edges": "BC-ignore-out-edges" +}; + +// src/utils/timer.ts +var Timer = class { + constructor() { + this.start = performance.now(); + } + elapsed() { + return performance.now() - this.start; + } + elapsed_str(digits = 0) { + return this.elapsed().toFixed(digits); + } + reset() { + this.start = performance.now(); + } + elapsedMessage(action, reset = false) { + const msg = `${action} took ${this.elapsed_str(2)}ms`; + if (reset) + this.reset(); + return msg; + } +}; + +// src/graph/builders/explicit/dataview_note.ts +var import_obsidian2 = require("obsidian"); +var get_dataview_note_info = (plugin, metadata, path) => { + if (!metadata) { + return fail(void 0); + } + const query = metadata[META_ALIAS["dataview-note-query"]]; + if (!query) { + return fail(void 0); + } else if (typeof query !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: "dataview-note-query is not a string" + }); + } + const field = metadata[META_ALIAS["dataview-note-field"]]; + if (!field) { + return fail(void 0); + } else if (typeof field !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: "dataview-note-field is not a string" + }); + } else if (!plugin.settings.edge_fields.find((f) => f.label === field)) { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `dataview-note-field is not a valid field: '${field}'` + }); + } + return succ({ + field, + query + }); +}; +var _add_explicit_edges_dataview_note = (graph, plugin, all_files) => { + var _a, _b; + const errors = []; + (_a = all_files.obsidian) == null ? void 0 : _a.forEach( + ({ file: dataview_note_file, cache: dataview_note_cache }) => { + if (!dataview_note_cache) + return; + const dataview_note_info = get_dataview_note_info( + plugin, + dataview_note_cache == null ? void 0 : dataview_note_cache.frontmatter, + dataview_note_file.path + ); + if (!dataview_note_info.ok) { + if (dataview_note_info.error) + errors.push(dataview_note_info.error); + return; + } else { + new import_obsidian2.Notice( + "dataview-notes are not implemented without Dataview enabled" + ); + } + } + ); + (_b = all_files.dataview) == null ? void 0 : _b.forEach((dataview_note_page) => { + const dataview_note_path = dataview_note_page.file.path; + const dataview_note_info = get_dataview_note_info( + plugin, + dataview_note_page, + dataview_note_path + ); + if (!dataview_note_info.ok) { + if (dataview_note_info.error) + errors.push(dataview_note_info.error); + return; + } + const { field, query } = dataview_note_info.data; + let pages = []; + try { + pages = dataview_plugin.get_api().pages(query, dataview_note_path).values; + } catch (error) { + log.warn( + "dataview-note > DV API error:", + error instanceof Error ? error.message : error + ); + return errors.push({ + code: "invalid_field_value", + path: dataview_note_path, + message: `dataview-note-query is not a valid dataview query: '${query}'` + }); + } + pages.forEach((page) => { + graph.safe_add_directed_edge( + dataview_note_page.file.path, + page.file.path, + { + field, + explicit: true, + source: "dataview_note" + } + ); + }); + }); + return { errors }; +}; // node_modules/luxon/src/errors.js var LuxonError = class extends Error { @@ -12932,8 +15246,8 @@ var InvalidDurationError = class extends LuxonError { var ConflictingSpecificationError = class extends LuxonError { }; var InvalidUnitError = class extends LuxonError { - constructor(unit2) { - super(`Invalid unit ${unit2}`); + constructor(unit) { + super(`Invalid unit ${unit}`); } }; var InvalidArgumentError = class extends LuxonError { @@ -13096,6 +15410,1147 @@ var DATETIME_HUGE_WITH_SECONDS = { timeZoneName: l }; +// node_modules/luxon/src/zone.js +var Zone = class { + /** + * The type of zone + * @abstract + * @type {string} + */ + get type() { + throw new ZoneIsAbstractError(); + } + /** + * The name of this zone. + * @abstract + * @type {string} + */ + get name() { + throw new ZoneIsAbstractError(); + } + get ianaName() { + return this.name; + } + /** + * Returns whether the offset is known to be fixed for the whole year. + * @abstract + * @type {boolean} + */ + get isUniversal() { + throw new ZoneIsAbstractError(); + } + /** + * Returns the offset's common name (such as EST) at the specified timestamp + * @abstract + * @param {number} ts - Epoch milliseconds for which to get the name + * @param {Object} opts - Options to affect the format + * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'. + * @param {string} opts.locale - What locale to return the offset name in. + * @return {string} + */ + offsetName(ts, opts) { + throw new ZoneIsAbstractError(); + } + /** + * Returns the offset's value as a string + * @abstract + * @param {number} ts - Epoch milliseconds for which to get the offset + * @param {string} format - What style of offset to return. + * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively + * @return {string} + */ + formatOffset(ts, format) { + throw new ZoneIsAbstractError(); + } + /** + * Return the offset in minutes for this zone at the specified timestamp. + * @abstract + * @param {number} ts - Epoch milliseconds for which to compute the offset + * @return {number} + */ + offset(ts) { + throw new ZoneIsAbstractError(); + } + /** + * Return whether this Zone is equal to another zone + * @abstract + * @param {Zone} otherZone - the zone to compare + * @return {boolean} + */ + equals(otherZone) { + throw new ZoneIsAbstractError(); + } + /** + * Return whether this Zone is valid. + * @abstract + * @type {boolean} + */ + get isValid() { + throw new ZoneIsAbstractError(); + } +}; + +// node_modules/luxon/src/zones/systemZone.js +var singleton = null; +var SystemZone = class _SystemZone extends Zone { + /** + * Get a singleton instance of the local zone + * @return {SystemZone} + */ + static get instance() { + if (singleton === null) { + singleton = new _SystemZone(); + } + return singleton; + } + /** @override **/ + get type() { + return "system"; + } + /** @override **/ + get name() { + return new Intl.DateTimeFormat().resolvedOptions().timeZone; + } + /** @override **/ + get isUniversal() { + return false; + } + /** @override **/ + offsetName(ts, { format, locale }) { + return parseZoneInfo(ts, format, locale); + } + /** @override **/ + formatOffset(ts, format) { + return formatOffset(this.offset(ts), format); + } + /** @override **/ + offset(ts) { + return -new Date(ts).getTimezoneOffset(); + } + /** @override **/ + equals(otherZone) { + return otherZone.type === "system"; + } + /** @override **/ + get isValid() { + return true; + } +}; + +// node_modules/luxon/src/zones/IANAZone.js +var dtfCache = {}; +function makeDTF(zone) { + if (!dtfCache[zone]) { + dtfCache[zone] = new Intl.DateTimeFormat("en-US", { + hour12: false, + timeZone: zone, + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + era: "short" + }); + } + return dtfCache[zone]; +} +var typeToPos = { + year: 0, + month: 1, + day: 2, + era: 3, + hour: 4, + minute: 5, + second: 6 +}; +function hackyOffset(dtf, date) { + const formatted = dtf.format(date).replace(/\u200E/g, ""), parsed = /(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(formatted), [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed; + return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond]; +} +function partsOffset(dtf, date) { + const formatted = dtf.formatToParts(date); + const filled = []; + for (let i = 0; i < formatted.length; i++) { + const { type, value } = formatted[i]; + const pos = typeToPos[type]; + if (type === "era") { + filled[pos] = value; + } else if (!isUndefined(pos)) { + filled[pos] = parseInt(value, 10); + } + } + return filled; +} +var ianaZoneCache = {}; +var IANAZone = class _IANAZone extends Zone { + /** + * @param {string} name - Zone name + * @return {IANAZone} + */ + static create(name) { + if (!ianaZoneCache[name]) { + ianaZoneCache[name] = new _IANAZone(name); + } + return ianaZoneCache[name]; + } + /** + * Reset local caches. Should only be necessary in testing scenarios. + * @return {void} + */ + static resetCache() { + ianaZoneCache = {}; + dtfCache = {}; + } + /** + * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that. + * @param {string} s - The string to check validity on + * @example IANAZone.isValidSpecifier("America/New_York") //=> true + * @example IANAZone.isValidSpecifier("Sport~~blorp") //=> false + * @deprecated This method returns false for some valid IANA names. Use isValidZone instead. + * @return {boolean} + */ + static isValidSpecifier(s2) { + return this.isValidZone(s2); + } + /** + * Returns whether the provided string identifies a real zone + * @param {string} zone - The string to check + * @example IANAZone.isValidZone("America/New_York") //=> true + * @example IANAZone.isValidZone("Fantasia/Castle") //=> false + * @example IANAZone.isValidZone("Sport~~blorp") //=> false + * @return {boolean} + */ + static isValidZone(zone) { + if (!zone) { + return false; + } + try { + new Intl.DateTimeFormat("en-US", { timeZone: zone }).format(); + return true; + } catch (e) { + return false; + } + } + constructor(name) { + super(); + this.zoneName = name; + this.valid = _IANAZone.isValidZone(name); + } + /** @override **/ + get type() { + return "iana"; + } + /** @override **/ + get name() { + return this.zoneName; + } + /** @override **/ + get isUniversal() { + return false; + } + /** @override **/ + offsetName(ts, { format, locale }) { + return parseZoneInfo(ts, format, locale, this.name); + } + /** @override **/ + formatOffset(ts, format) { + return formatOffset(this.offset(ts), format); + } + /** @override **/ + offset(ts) { + const date = new Date(ts); + if (isNaN(date)) + return NaN; + const dtf = makeDTF(this.name); + let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date); + if (adOrBc === "BC") { + year = -Math.abs(year) + 1; + } + const adjustedHour = hour === 24 ? 0 : hour; + const asUTC = objToLocalTS({ + year, + month, + day, + hour: adjustedHour, + minute, + second, + millisecond: 0 + }); + let asTS = +date; + const over = asTS % 1e3; + asTS -= over >= 0 ? over : 1e3 + over; + return (asUTC - asTS) / (60 * 1e3); + } + /** @override **/ + equals(otherZone) { + return otherZone.type === "iana" && otherZone.name === this.name; + } + /** @override **/ + get isValid() { + return this.valid; + } +}; + +// node_modules/luxon/src/impl/locale.js +var intlLFCache = {}; +function getCachedLF(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let dtf = intlLFCache[key]; + if (!dtf) { + dtf = new Intl.ListFormat(locString, opts); + intlLFCache[key] = dtf; + } + return dtf; +} +var intlDTCache = {}; +function getCachedDTF(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let dtf = intlDTCache[key]; + if (!dtf) { + dtf = new Intl.DateTimeFormat(locString, opts); + intlDTCache[key] = dtf; + } + return dtf; +} +var intlNumCache = {}; +function getCachedINF(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let inf = intlNumCache[key]; + if (!inf) { + inf = new Intl.NumberFormat(locString, opts); + intlNumCache[key] = inf; + } + return inf; +} +var intlRelCache = {}; +function getCachedRTF(locString, opts = {}) { + const { base, ...cacheKeyOpts } = opts; + const key = JSON.stringify([locString, cacheKeyOpts]); + let inf = intlRelCache[key]; + if (!inf) { + inf = new Intl.RelativeTimeFormat(locString, opts); + intlRelCache[key] = inf; + } + return inf; +} +var sysLocaleCache = null; +function systemLocale() { + if (sysLocaleCache) { + return sysLocaleCache; + } else { + sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale; + return sysLocaleCache; + } +} +var weekInfoCache = {}; +function getCachedWeekInfo(locString) { + let data = weekInfoCache[locString]; + if (!data) { + const locale = new Intl.Locale(locString); + data = "getWeekInfo" in locale ? locale.getWeekInfo() : locale.weekInfo; + weekInfoCache[locString] = data; + } + return data; +} +function parseLocaleString(localeStr) { + const xIndex = localeStr.indexOf("-x-"); + if (xIndex !== -1) { + localeStr = localeStr.substring(0, xIndex); + } + const uIndex = localeStr.indexOf("-u-"); + if (uIndex === -1) { + return [localeStr]; + } else { + let options; + let selectedStr; + try { + options = getCachedDTF(localeStr).resolvedOptions(); + selectedStr = localeStr; + } catch (e) { + const smaller = localeStr.substring(0, uIndex); + options = getCachedDTF(smaller).resolvedOptions(); + selectedStr = smaller; + } + const { numberingSystem, calendar } = options; + return [selectedStr, numberingSystem, calendar]; + } +} +function intlConfigString(localeStr, numberingSystem, outputCalendar) { + if (outputCalendar || numberingSystem) { + if (!localeStr.includes("-u-")) { + localeStr += "-u"; + } + if (outputCalendar) { + localeStr += `-ca-${outputCalendar}`; + } + if (numberingSystem) { + localeStr += `-nu-${numberingSystem}`; + } + return localeStr; + } else { + return localeStr; + } +} +function mapMonths(f) { + const ms = []; + for (let i = 1; i <= 12; i++) { + const dt = DateTime.utc(2009, i, 1); + ms.push(f(dt)); + } + return ms; +} +function mapWeekdays(f) { + const ms = []; + for (let i = 1; i <= 7; i++) { + const dt = DateTime.utc(2016, 11, 13 + i); + ms.push(f(dt)); + } + return ms; +} +function listStuff(loc, length, englishFn, intlFn) { + const mode = loc.listingMode(); + if (mode === "error") { + return null; + } else if (mode === "en") { + return englishFn(length); + } else { + return intlFn(length); + } +} +function supportsFastNumbers(loc) { + if (loc.numberingSystem && loc.numberingSystem !== "latn") { + return false; + } else { + return loc.numberingSystem === "latn" || !loc.locale || loc.locale.startsWith("en") || new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === "latn"; + } +} +var PolyNumberFormatter = class { + constructor(intl, forceSimple, opts) { + this.padTo = opts.padTo || 0; + this.floor = opts.floor || false; + const { padTo, floor, ...otherOpts } = opts; + if (!forceSimple || Object.keys(otherOpts).length > 0) { + const intlOpts = { useGrouping: false, ...opts }; + if (opts.padTo > 0) + intlOpts.minimumIntegerDigits = opts.padTo; + this.inf = getCachedINF(intl, intlOpts); + } + } + format(i) { + if (this.inf) { + const fixed = this.floor ? Math.floor(i) : i; + return this.inf.format(fixed); + } else { + const fixed = this.floor ? Math.floor(i) : roundTo(i, 3); + return padStart(fixed, this.padTo); + } + } +}; +var PolyDateFormatter = class { + constructor(dt, intl, opts) { + this.opts = opts; + this.originalZone = void 0; + let z2 = void 0; + if (this.opts.timeZone) { + this.dt = dt; + } else if (dt.zone.type === "fixed") { + const gmtOffset = -1 * (dt.offset / 60); + const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`; + if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) { + z2 = offsetZ; + this.dt = dt; + } else { + z2 = "UTC"; + this.dt = dt.offset === 0 ? dt : dt.setZone("UTC").plus({ minutes: dt.offset }); + this.originalZone = dt.zone; + } + } else if (dt.zone.type === "system") { + this.dt = dt; + } else if (dt.zone.type === "iana") { + this.dt = dt; + z2 = dt.zone.name; + } else { + z2 = "UTC"; + this.dt = dt.setZone("UTC").plus({ minutes: dt.offset }); + this.originalZone = dt.zone; + } + const intlOpts = { ...this.opts }; + intlOpts.timeZone = intlOpts.timeZone || z2; + this.dtf = getCachedDTF(intl, intlOpts); + } + format() { + if (this.originalZone) { + return this.formatToParts().map(({ value }) => value).join(""); + } + return this.dtf.format(this.dt.toJSDate()); + } + formatToParts() { + const parts = this.dtf.formatToParts(this.dt.toJSDate()); + if (this.originalZone) { + return parts.map((part) => { + if (part.type === "timeZoneName") { + const offsetName = this.originalZone.offsetName(this.dt.ts, { + locale: this.dt.locale, + format: this.opts.timeZoneName + }); + return { + ...part, + value: offsetName + }; + } else { + return part; + } + }); + } + return parts; + } + resolvedOptions() { + return this.dtf.resolvedOptions(); + } +}; +var PolyRelFormatter = class { + constructor(intl, isEnglish, opts) { + this.opts = { style: "long", ...opts }; + if (!isEnglish && hasRelative()) { + this.rtf = getCachedRTF(intl, opts); + } + } + format(count, unit) { + if (this.rtf) { + return this.rtf.format(count, unit); + } else { + return formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== "long"); + } + } + formatToParts(count, unit) { + if (this.rtf) { + return this.rtf.formatToParts(count, unit); + } else { + return []; + } + } +}; +var fallbackWeekSettings = { + firstDay: 1, + minimalDays: 4, + weekend: [6, 7] +}; +var Locale = class _Locale { + static fromOpts(opts) { + return _Locale.create( + opts.locale, + opts.numberingSystem, + opts.outputCalendar, + opts.weekSettings, + opts.defaultToEN + ); + } + static create(locale, numberingSystem, outputCalendar, weekSettings, defaultToEN = false) { + const specifiedLocale = locale || Settings.defaultLocale; + const localeR = specifiedLocale || (defaultToEN ? "en-US" : systemLocale()); + const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem; + const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar; + const weekSettingsR = validateWeekSettings(weekSettings) || Settings.defaultWeekSettings; + return new _Locale(localeR, numberingSystemR, outputCalendarR, weekSettingsR, specifiedLocale); + } + static resetCache() { + sysLocaleCache = null; + intlDTCache = {}; + intlNumCache = {}; + intlRelCache = {}; + } + static fromObject({ locale, numberingSystem, outputCalendar, weekSettings } = {}) { + return _Locale.create(locale, numberingSystem, outputCalendar, weekSettings); + } + constructor(locale, numbering, outputCalendar, weekSettings, specifiedLocale) { + const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale); + this.locale = parsedLocale; + this.numberingSystem = numbering || parsedNumberingSystem || null; + this.outputCalendar = outputCalendar || parsedOutputCalendar || null; + this.weekSettings = weekSettings; + this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar); + this.weekdaysCache = { format: {}, standalone: {} }; + this.monthsCache = { format: {}, standalone: {} }; + this.meridiemCache = null; + this.eraCache = {}; + this.specifiedLocale = specifiedLocale; + this.fastNumbersCached = null; + } + get fastNumbers() { + if (this.fastNumbersCached == null) { + this.fastNumbersCached = supportsFastNumbers(this); + } + return this.fastNumbersCached; + } + listingMode() { + const isActuallyEn = this.isEnglish(); + const hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === "latn") && (this.outputCalendar === null || this.outputCalendar === "gregory"); + return isActuallyEn && hasNoWeirdness ? "en" : "intl"; + } + clone(alts) { + if (!alts || Object.getOwnPropertyNames(alts).length === 0) { + return this; + } else { + return _Locale.create( + alts.locale || this.specifiedLocale, + alts.numberingSystem || this.numberingSystem, + alts.outputCalendar || this.outputCalendar, + validateWeekSettings(alts.weekSettings) || this.weekSettings, + alts.defaultToEN || false + ); + } + } + redefaultToEN(alts = {}) { + return this.clone({ ...alts, defaultToEN: true }); + } + redefaultToSystem(alts = {}) { + return this.clone({ ...alts, defaultToEN: false }); + } + months(length, format = false) { + return listStuff(this, length, months, () => { + const intl = format ? { month: length, day: "numeric" } : { month: length }, formatStr = format ? "format" : "standalone"; + if (!this.monthsCache[formatStr][length]) { + this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, "month")); + } + return this.monthsCache[formatStr][length]; + }); + } + weekdays(length, format = false) { + return listStuff(this, length, weekdays, () => { + const intl = format ? { weekday: length, year: "numeric", month: "long", day: "numeric" } : { weekday: length }, formatStr = format ? "format" : "standalone"; + if (!this.weekdaysCache[formatStr][length]) { + this.weekdaysCache[formatStr][length] = mapWeekdays( + (dt) => this.extract(dt, intl, "weekday") + ); + } + return this.weekdaysCache[formatStr][length]; + }); + } + meridiems() { + return listStuff( + this, + void 0, + () => meridiems, + () => { + if (!this.meridiemCache) { + const intl = { hour: "numeric", hourCycle: "h12" }; + this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map( + (dt) => this.extract(dt, intl, "dayperiod") + ); + } + return this.meridiemCache; + } + ); + } + eras(length) { + return listStuff(this, length, eras, () => { + const intl = { era: length }; + if (!this.eraCache[length]) { + this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map( + (dt) => this.extract(dt, intl, "era") + ); + } + return this.eraCache[length]; + }); + } + extract(dt, intlOpts, field) { + const df = this.dtFormatter(dt, intlOpts), results = df.formatToParts(), matching = results.find((m) => m.type.toLowerCase() === field); + return matching ? matching.value : null; + } + numberFormatter(opts = {}) { + return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts); + } + dtFormatter(dt, intlOpts = {}) { + return new PolyDateFormatter(dt, this.intl, intlOpts); + } + relFormatter(opts = {}) { + return new PolyRelFormatter(this.intl, this.isEnglish(), opts); + } + listFormatter(opts = {}) { + return getCachedLF(this.intl, opts); + } + isEnglish() { + return this.locale === "en" || this.locale.toLowerCase() === "en-us" || new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us"); + } + getWeekSettings() { + if (this.weekSettings) { + return this.weekSettings; + } else if (!hasLocaleWeekInfo()) { + return fallbackWeekSettings; + } else { + return getCachedWeekInfo(this.locale); + } + } + getStartOfWeek() { + return this.getWeekSettings().firstDay; + } + getMinDaysInFirstWeek() { + return this.getWeekSettings().minimalDays; + } + getWeekendDays() { + return this.getWeekSettings().weekend; + } + equals(other) { + return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar; + } +}; + +// node_modules/luxon/src/zones/fixedOffsetZone.js +var singleton2 = null; +var FixedOffsetZone = class _FixedOffsetZone extends Zone { + /** + * Get a singleton instance of UTC + * @return {FixedOffsetZone} + */ + static get utcInstance() { + if (singleton2 === null) { + singleton2 = new _FixedOffsetZone(0); + } + return singleton2; + } + /** + * Get an instance with a specified offset + * @param {number} offset - The offset in minutes + * @return {FixedOffsetZone} + */ + static instance(offset2) { + return offset2 === 0 ? _FixedOffsetZone.utcInstance : new _FixedOffsetZone(offset2); + } + /** + * Get an instance of FixedOffsetZone from a UTC offset string, like "UTC+6" + * @param {string} s - The offset string to parse + * @example FixedOffsetZone.parseSpecifier("UTC+6") + * @example FixedOffsetZone.parseSpecifier("UTC+06") + * @example FixedOffsetZone.parseSpecifier("UTC-6:00") + * @return {FixedOffsetZone} + */ + static parseSpecifier(s2) { + if (s2) { + const r = s2.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i); + if (r) { + return new _FixedOffsetZone(signedOffset(r[1], r[2])); + } + } + return null; + } + constructor(offset2) { + super(); + this.fixed = offset2; + } + /** @override **/ + get type() { + return "fixed"; + } + /** @override **/ + get name() { + return this.fixed === 0 ? "UTC" : `UTC${formatOffset(this.fixed, "narrow")}`; + } + get ianaName() { + if (this.fixed === 0) { + return "Etc/UTC"; + } else { + return `Etc/GMT${formatOffset(-this.fixed, "narrow")}`; + } + } + /** @override **/ + offsetName() { + return this.name; + } + /** @override **/ + formatOffset(ts, format) { + return formatOffset(this.fixed, format); + } + /** @override **/ + get isUniversal() { + return true; + } + /** @override **/ + offset() { + return this.fixed; + } + /** @override **/ + equals(otherZone) { + return otherZone.type === "fixed" && otherZone.fixed === this.fixed; + } + /** @override **/ + get isValid() { + return true; + } +}; + +// node_modules/luxon/src/zones/invalidZone.js +var InvalidZone = class extends Zone { + constructor(zoneName) { + super(); + this.zoneName = zoneName; + } + /** @override **/ + get type() { + return "invalid"; + } + /** @override **/ + get name() { + return this.zoneName; + } + /** @override **/ + get isUniversal() { + return false; + } + /** @override **/ + offsetName() { + return null; + } + /** @override **/ + formatOffset() { + return ""; + } + /** @override **/ + offset() { + return NaN; + } + /** @override **/ + equals() { + return false; + } + /** @override **/ + get isValid() { + return false; + } +}; + +// node_modules/luxon/src/impl/zoneUtil.js +function normalizeZone(input, defaultZone2) { + let offset2; + if (isUndefined(input) || input === null) { + return defaultZone2; + } else if (input instanceof Zone) { + return input; + } else if (isString(input)) { + const lowered = input.toLowerCase(); + if (lowered === "default") + return defaultZone2; + else if (lowered === "local" || lowered === "system") + return SystemZone.instance; + else if (lowered === "utc" || lowered === "gmt") + return FixedOffsetZone.utcInstance; + else + return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input); + } else if (isNumber(input)) { + return FixedOffsetZone.instance(input); + } else if (typeof input === "object" && "offset" in input && typeof input.offset === "function") { + return input; + } else { + return new InvalidZone(input); + } +} + +// node_modules/luxon/src/settings.js +var now = () => Date.now(); +var defaultZone = "system"; +var defaultLocale = null; +var defaultNumberingSystem = null; +var defaultOutputCalendar = null; +var twoDigitCutoffYear = 60; +var throwOnInvalid; +var defaultWeekSettings = null; +var Settings = class { + /** + * Get the callback for returning the current timestamp. + * @type {function} + */ + static get now() { + return now; + } + /** + * Set the callback for returning the current timestamp. + * The function should return a number, which will be interpreted as an Epoch millisecond count + * @type {function} + * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future + * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time + */ + static set now(n2) { + now = n2; + } + /** + * Set the default time zone to create DateTimes in. Does not affect existing instances. + * Use the value "system" to reset this value to the system's time zone. + * @type {string} + */ + static set defaultZone(zone) { + defaultZone = zone; + } + /** + * Get the default time zone object currently used to create DateTimes. Does not affect existing instances. + * The default value is the system's time zone (the one set on the machine that runs this code). + * @type {Zone} + */ + static get defaultZone() { + return normalizeZone(defaultZone, SystemZone.instance); + } + /** + * Get the default locale to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static get defaultLocale() { + return defaultLocale; + } + /** + * Set the default locale to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static set defaultLocale(locale) { + defaultLocale = locale; + } + /** + * Get the default numbering system to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static get defaultNumberingSystem() { + return defaultNumberingSystem; + } + /** + * Set the default numbering system to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static set defaultNumberingSystem(numberingSystem) { + defaultNumberingSystem = numberingSystem; + } + /** + * Get the default output calendar to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static get defaultOutputCalendar() { + return defaultOutputCalendar; + } + /** + * Set the default output calendar to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static set defaultOutputCalendar(outputCalendar) { + defaultOutputCalendar = outputCalendar; + } + /** + * @typedef {Object} WeekSettings + * @property {number} firstDay + * @property {number} minimalDays + * @property {number[]} weekend + */ + /** + * @return {WeekSettings|null} + */ + static get defaultWeekSettings() { + return defaultWeekSettings; + } + /** + * Allows overriding the default locale week settings, i.e. the start of the week, the weekend and + * how many days are required in the first week of a year. + * Does not affect existing instances. + * + * @param {WeekSettings|null} weekSettings + */ + static set defaultWeekSettings(weekSettings) { + defaultWeekSettings = validateWeekSettings(weekSettings); + } + /** + * Get the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century. + * @type {number} + */ + static get twoDigitCutoffYear() { + return twoDigitCutoffYear; + } + /** + * Set the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century. + * @type {number} + * @example Settings.twoDigitCutoffYear = 0 // cut-off year is 0, so all 'yy' are interpreted as current century + * @example Settings.twoDigitCutoffYear = 50 // '49' -> 1949; '50' -> 2050 + * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50 + * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50 + */ + static set twoDigitCutoffYear(cutoffYear) { + twoDigitCutoffYear = cutoffYear % 100; + } + /** + * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals + * @type {boolean} + */ + static get throwOnInvalid() { + return throwOnInvalid; + } + /** + * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals + * @type {boolean} + */ + static set throwOnInvalid(t) { + throwOnInvalid = t; + } + /** + * Reset Luxon's global caches. Should only be necessary in testing scenarios. + * @return {void} + */ + static resetCaches() { + Locale.resetCache(); + IANAZone.resetCache(); + } +}; + +// node_modules/luxon/src/impl/invalid.js +var Invalid = class { + constructor(reason, explanation) { + this.reason = reason; + this.explanation = explanation; + } + toMessage() { + if (this.explanation) { + return `${this.reason}: ${this.explanation}`; + } else { + return this.reason; + } + } +}; + +// node_modules/luxon/src/impl/conversions.js +var nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; +var leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]; +function unitOutOfRange(unit, value) { + return new Invalid( + "unit out of range", + `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid` + ); +} +function dayOfWeek(year, month, day) { + const d = new Date(Date.UTC(year, month - 1, day)); + if (year < 100 && year >= 0) { + d.setUTCFullYear(d.getUTCFullYear() - 1900); + } + const js = d.getUTCDay(); + return js === 0 ? 7 : js; +} +function computeOrdinal(year, month, day) { + return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1]; +} +function uncomputeOrdinal(year, ordinal) { + const table = isLeapYear(year) ? leapLadder : nonLeapLadder, month0 = table.findIndex((i) => i < ordinal), day = ordinal - table[month0]; + return { month: month0 + 1, day }; +} +function isoWeekdayToLocal(isoWeekday, startOfWeek) { + return (isoWeekday - startOfWeek + 7) % 7 + 1; +} +function gregorianToWeek(gregObj, minDaysInFirstWeek = 4, startOfWeek = 1) { + const { year, month, day } = gregObj, ordinal = computeOrdinal(year, month, day), weekday = isoWeekdayToLocal(dayOfWeek(year, month, day), startOfWeek); + let weekNumber = Math.floor((ordinal - weekday + 14 - minDaysInFirstWeek) / 7), weekYear; + if (weekNumber < 1) { + weekYear = year - 1; + weekNumber = weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek); + } else if (weekNumber > weeksInWeekYear(year, minDaysInFirstWeek, startOfWeek)) { + weekYear = year + 1; + weekNumber = 1; + } else { + weekYear = year; + } + return { weekYear, weekNumber, weekday, ...timeObject(gregObj) }; +} +function weekToGregorian(weekData, minDaysInFirstWeek = 4, startOfWeek = 1) { + const { weekYear, weekNumber, weekday } = weekData, weekdayOfJan4 = isoWeekdayToLocal(dayOfWeek(weekYear, 1, minDaysInFirstWeek), startOfWeek), yearInDays = daysInYear(weekYear); + let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 7 + minDaysInFirstWeek, year; + if (ordinal < 1) { + year = weekYear - 1; + ordinal += daysInYear(year); + } else if (ordinal > yearInDays) { + year = weekYear + 1; + ordinal -= daysInYear(weekYear); + } else { + year = weekYear; + } + const { month, day } = uncomputeOrdinal(year, ordinal); + return { year, month, day, ...timeObject(weekData) }; +} +function gregorianToOrdinal(gregData) { + const { year, month, day } = gregData; + const ordinal = computeOrdinal(year, month, day); + return { year, ordinal, ...timeObject(gregData) }; +} +function ordinalToGregorian(ordinalData) { + const { year, ordinal } = ordinalData; + const { month, day } = uncomputeOrdinal(year, ordinal); + return { year, month, day, ...timeObject(ordinalData) }; +} +function usesLocalWeekValues(obj, loc) { + const hasLocaleWeekData = !isUndefined(obj.localWeekday) || !isUndefined(obj.localWeekNumber) || !isUndefined(obj.localWeekYear); + if (hasLocaleWeekData) { + const hasIsoWeekData = !isUndefined(obj.weekday) || !isUndefined(obj.weekNumber) || !isUndefined(obj.weekYear); + if (hasIsoWeekData) { + throw new ConflictingSpecificationError( + "Cannot mix locale-based week fields with ISO-based week fields" + ); + } + if (!isUndefined(obj.localWeekday)) + obj.weekday = obj.localWeekday; + if (!isUndefined(obj.localWeekNumber)) + obj.weekNumber = obj.localWeekNumber; + if (!isUndefined(obj.localWeekYear)) + obj.weekYear = obj.localWeekYear; + delete obj.localWeekday; + delete obj.localWeekNumber; + delete obj.localWeekYear; + return { + minDaysInFirstWeek: loc.getMinDaysInFirstWeek(), + startOfWeek: loc.getStartOfWeek() + }; + } else { + return { minDaysInFirstWeek: 4, startOfWeek: 1 }; + } +} +function hasInvalidWeekData(obj, minDaysInFirstWeek = 4, startOfWeek = 1) { + const validYear = isInteger(obj.weekYear), validWeek = integerBetween( + obj.weekNumber, + 1, + weeksInWeekYear(obj.weekYear, minDaysInFirstWeek, startOfWeek) + ), validWeekday = integerBetween(obj.weekday, 1, 7); + if (!validYear) { + return unitOutOfRange("weekYear", obj.weekYear); + } else if (!validWeek) { + return unitOutOfRange("week", obj.weekNumber); + } else if (!validWeekday) { + return unitOutOfRange("weekday", obj.weekday); + } else + return false; +} +function hasInvalidOrdinalData(obj) { + const validYear = isInteger(obj.year), validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year)); + if (!validYear) { + return unitOutOfRange("year", obj.year); + } else if (!validOrdinal) { + return unitOutOfRange("ordinal", obj.ordinal); + } else + return false; +} +function hasInvalidGregorianData(obj) { + const validYear = isInteger(obj.year), validMonth = integerBetween(obj.month, 1, 12), validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month)); + if (!validYear) { + return unitOutOfRange("year", obj.year); + } else if (!validMonth) { + return unitOutOfRange("month", obj.month); + } else if (!validDay) { + return unitOutOfRange("day", obj.day); + } else + return false; +} +function hasInvalidTimeData(obj) { + const { hour, minute, second, millisecond } = obj; + const validHour = integerBetween(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0, validMinute = integerBetween(minute, 0, 59), validSecond = integerBetween(second, 0, 59), validMillisecond = integerBetween(millisecond, 0, 999); + if (!validHour) { + return unitOutOfRange("hour", hour); + } else if (!validMinute) { + return unitOutOfRange("minute", minute); + } else if (!validSecond) { + return unitOutOfRange("second", second); + } else if (!validMillisecond) { + return unitOutOfRange("millisecond", millisecond); + } else + return false; +} + // node_modules/luxon/src/impl/util.js function isUndefined(o) { return typeof o === "undefined"; @@ -13119,6 +16574,13 @@ function hasRelative() { return false; } } +function hasLocaleWeekInfo() { + try { + return typeof Intl !== "undefined" && !!Intl.Locale && ("weekInfo" in Intl.Locale.prototype || "getWeekInfo" in Intl.Locale.prototype); + } catch (e) { + return false; + } +} function maybeArray(thing) { return Array.isArray(thing) ? thing : [thing]; } @@ -13138,19 +16600,35 @@ function bestBy(arr, by, compare) { }, null)[1]; } function pick(obj, keys) { - return keys.reduce((a2, k) => { - a2[k] = obj[k]; - return a2; + return keys.reduce((a, k) => { + a[k] = obj[k]; + return a; }, {}); } function hasOwnProperty(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } +function validateWeekSettings(settings) { + if (settings == null) { + return null; + } else if (typeof settings !== "object") { + throw new InvalidArgumentError("Week settings must be an object"); + } else { + if (!integerBetween(settings.firstDay, 1, 7) || !integerBetween(settings.minimalDays, 1, 7) || !Array.isArray(settings.weekend) || settings.weekend.some((v) => !integerBetween(v, 1, 7))) { + throw new InvalidArgumentError("Invalid week settings"); + } + return { + firstDay: settings.firstDay, + minimalDays: settings.minimalDays, + weekend: Array.from(settings.weekend) + }; + } +} function integerBetween(thing, bottom, top) { return isInteger(thing) && thing >= bottom && thing <= top; } -function floorMod(x4, n2) { - return x4 - n2 * Math.floor(x4 / n2); +function floorMod(x, n2) { + return x - n2 * Math.floor(x / n2); } function padStart(input, n2 = 2) { const isNeg = input < 0; @@ -13184,9 +16662,9 @@ function parseMillis(fraction) { return Math.floor(f); } } -function roundTo(number3, digits, towardZero = false) { +function roundTo(number, digits, towardZero = false) { const factor = 10 ** digits, rounder = towardZero ? Math.trunc : Math.round; - return rounder(number3 * factor) / factor; + return rounder(number * factor) / factor; } function isLeapYear(year) { return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); @@ -13214,21 +16692,26 @@ function objToLocalTS(obj) { ); if (obj.year < 100 && obj.year >= 0) { d = new Date(d); - d.setUTCFullYear(d.getUTCFullYear() - 1900); + d.setUTCFullYear(obj.year, obj.month - 1, obj.day); } return +d; } -function weeksInWeekYear(weekYear) { - const p1 = (weekYear + Math.floor(weekYear / 4) - Math.floor(weekYear / 100) + Math.floor(weekYear / 400)) % 7, last = weekYear - 1, p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7; - return p1 === 4 || p2 === 3 ? 53 : 52; +function firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) { + const fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek); + return -fwdlw + minDaysInFirstWeek - 1; +} +function weeksInWeekYear(weekYear, minDaysInFirstWeek = 4, startOfWeek = 1) { + const weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek); + const weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek); + return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7; } function untruncateYear(year) { if (year > 99) { return year; } else - return year > 60 ? 1900 + year : 2e3 + year; + return year > Settings.twoDigitCutoffYear ? 1900 + year : 2e3 + year; } -function parseZoneInfo(ts, offsetFormat, locale2, timeZone = null) { +function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) { const date = new Date(ts), intlOpts = { hourCycle: "h23", year: "numeric", @@ -13241,7 +16724,7 @@ function parseZoneInfo(ts, offsetFormat, locale2, timeZone = null) { intlOpts.timeZone = timeZone; } const modified = { timeZoneName: offsetFormat, ...intlOpts }; - const parsed = new Intl.DateTimeFormat(locale2, modified).formatToParts(date).find((m2) => m2.type.toLowerCase() === "timezonename"); + const parsed = new Intl.DateTimeFormat(locale, modified).formatToParts(date).find((m) => m.type.toLowerCase() === "timezonename"); return parsed ? parsed.value : null; } function signedOffset(offHourStr, offMinuteStr) { @@ -13270,9 +16753,9 @@ function normalizeObject(obj, normalizer) { } return normalized; } -function formatOffset(offset2, format2) { +function formatOffset(offset2, format) { const hours = Math.trunc(Math.abs(offset2 / 60)), minutes = Math.trunc(Math.abs(offset2 % 60)), sign = offset2 >= 0 ? "+" : "-"; - switch (format2) { + switch (format) { case "short": return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`; case "narrow": @@ -13280,13 +16763,12 @@ function formatOffset(offset2, format2) { case "techie": return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`; default: - throw new RangeError(`Value format ${format2} is out of range for property format`); + throw new RangeError(`Value format ${format} is out of range for property format`); } } function timeObject(obj) { return pick(obj, ["hour", "minute", "second", "millisecond"]); } -var ianaRegex = /[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/; // node_modules/luxon/src/impl/english.js var monthsLong = [ @@ -13387,7 +16869,7 @@ function monthForDateTime(dt, length) { function eraForDateTime(dt, length) { return eras(length)[dt.year < 0 ? 0 : 1]; } -function formatRelativeTime(unit2, count2, numeric = "always", narrow = false) { +function formatRelativeTime(unit, count, numeric = "always", narrow = false) { const units = { years: ["year", "yr."], quarters: ["quarter", "qtr."], @@ -13398,20 +16880,20 @@ function formatRelativeTime(unit2, count2, numeric = "always", narrow = false) { minutes: ["minute", "min."], seconds: ["second", "sec."] }; - const lastable = ["hours", "minutes", "seconds"].indexOf(unit2) === -1; + const lastable = ["hours", "minutes", "seconds"].indexOf(unit) === -1; if (numeric === "auto" && lastable) { - const isDay = unit2 === "days"; - switch (count2) { + const isDay = unit === "days"; + switch (count) { case 1: - return isDay ? "tomorrow" : `next ${units[unit2][0]}`; + return isDay ? "tomorrow" : `next ${units[unit][0]}`; case -1: - return isDay ? "yesterday" : `last ${units[unit2][0]}`; + return isDay ? "yesterday" : `last ${units[unit][0]}`; case 0: - return isDay ? "today" : `this ${units[unit2][0]}`; + return isDay ? "today" : `this ${units[unit][0]}`; default: } } - const isInPast = Object.is(count2, -0) || count2 < 0, fmtValue = Math.abs(count2), singular = fmtValue === 1, lilUnits = units[unit2], fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit2][0] : unit2; + const isInPast = Object.is(count, -0) || count < 0, fmtValue = Math.abs(count), singular = fmtValue === 1, lilUnits = units[unit], fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit; return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`; } @@ -13449,45 +16931,45 @@ var macroTokenToFormatOpts = { FFF: DATETIME_FULL_WITH_SECONDS, FFFF: DATETIME_HUGE_WITH_SECONDS }; -var Formatter = class { - static create(locale2, opts = {}) { - return new Formatter(locale2, opts); +var Formatter = class _Formatter { + static create(locale, opts = {}) { + return new _Formatter(locale, opts); } static parseFormat(fmt) { let current = null, currentFull = "", bracketed = false; const splits = []; for (let i = 0; i < fmt.length; i++) { - const c3 = fmt.charAt(i); - if (c3 === "'") { + const c = fmt.charAt(i); + if (c === "'") { if (currentFull.length > 0) { - splits.push({ literal: bracketed, val: currentFull }); + splits.push({ literal: bracketed || /^\s+$/.test(currentFull), val: currentFull }); } current = null; currentFull = ""; bracketed = !bracketed; } else if (bracketed) { - currentFull += c3; - } else if (c3 === current) { - currentFull += c3; + currentFull += c; + } else if (c === current) { + currentFull += c; } else { if (currentFull.length > 0) { - splits.push({ literal: false, val: currentFull }); + splits.push({ literal: /^\s+$/.test(currentFull), val: currentFull }); } - currentFull = c3; - current = c3; + currentFull = c; + current = c; } } if (currentFull.length > 0) { - splits.push({ literal: bracketed, val: currentFull }); + splits.push({ literal: bracketed || /^\s+$/.test(currentFull), val: currentFull }); } return splits; } static macroTokenToFormatOpts(token) { return macroTokenToFormatOpts[token]; } - constructor(locale2, formatOpts) { + constructor(locale, formatOpts) { this.opts = formatOpts; - this.loc = locale2; + this.loc = locale; this.systemLoc = null; } formatWithSystemDefault(dt, opts) { @@ -13497,17 +16979,21 @@ var Formatter = class { const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts }); return df.format(); } - formatDateTime(dt, opts = {}) { - const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts }); - return df.format(); + dtFormatter(dt, opts = {}) { + return this.loc.dtFormatter(dt, { ...this.opts, ...opts }); } - formatDateTimeParts(dt, opts = {}) { - const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts }); - return df.formatToParts(); + formatDateTime(dt, opts) { + return this.dtFormatter(dt, opts).format(); } - resolvedOptions(dt, opts = {}) { - const df = this.loc.dtFormatter(dt, { ...this.opts, ...opts }); - return df.resolvedOptions(); + formatDateTimeParts(dt, opts) { + return this.dtFormatter(dt, opts).formatToParts(); + } + formatInterval(interval, opts) { + const df = this.dtFormatter(interval.start, opts); + return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate()); + } + resolvedOptions(dt, opts) { + return this.dtFormatter(dt, opts).resolvedOptions(); } num(n2, p = 0) { if (this.opts.forceSimple) { @@ -13529,7 +17015,7 @@ var Formatter = class { standalone ? { weekday: length } : { weekday: length, month: "long", day: "numeric" }, "weekday" ), maybeMacro = (token) => { - const formatOpts = Formatter.macroTokenToFormatOpts(token); + const formatOpts = _Formatter.macroTokenToFormatOpts(token); if (formatOpts) { return this.formatWithSystemDefault(dt, formatOpts); } else { @@ -13638,6 +17124,14 @@ var Formatter = class { return this.num(dt.weekNumber); case "WW": return this.num(dt.weekNumber, 2); + case "n": + return this.num(dt.localWeekNumber); + case "nn": + return this.num(dt.localWeekNumber, 2); + case "ii": + return this.num(dt.localWeekYear.toString().slice(-2), 2); + case "iiii": + return this.num(dt.localWeekYear, 4); case "o": return this.num(dt.ordinal); case "ooo": @@ -13654,7 +17148,7 @@ var Formatter = class { return maybeMacro(token); } }; - return stringifyTokens(Formatter.parseFormat(fmt), tokenToString); + return stringifyTokens(_Formatter.parseFormat(fmt), tokenToString); } formatDurationFromString(dur, fmt) { const tokenToField = (token) => { @@ -13685,7 +17179,7 @@ var Formatter = class { } else { return token; } - }, tokens = Formatter.parseFormat(fmt), realTokens = tokens.reduce( + }, tokens = _Formatter.parseFormat(fmt), realTokens = tokens.reduce( (found, { literal, val }) => literal ? found : found.concat(val), [] ), collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t)); @@ -13693,898 +17187,16 @@ var Formatter = class { } }; -// node_modules/luxon/src/impl/invalid.js -var Invalid = class { - constructor(reason, explanation) { - this.reason = reason; - this.explanation = explanation; - } - toMessage() { - if (this.explanation) { - return `${this.reason}: ${this.explanation}`; - } else { - return this.reason; - } - } -}; - -// node_modules/luxon/src/zone.js -var Zone = class { - /** - * The type of zone - * @abstract - * @type {string} - */ - get type() { - throw new ZoneIsAbstractError(); - } - /** - * The name of this zone. - * @abstract - * @type {string} - */ - get name() { - throw new ZoneIsAbstractError(); - } - get ianaName() { - return this.name; - } - /** - * Returns whether the offset is known to be fixed for the whole year. - * @abstract - * @type {boolean} - */ - get isUniversal() { - throw new ZoneIsAbstractError(); - } - /** - * Returns the offset's common name (such as EST) at the specified timestamp - * @abstract - * @param {number} ts - Epoch milliseconds for which to get the name - * @param {Object} opts - Options to affect the format - * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'. - * @param {string} opts.locale - What locale to return the offset name in. - * @return {string} - */ - offsetName(ts, opts) { - throw new ZoneIsAbstractError(); - } - /** - * Returns the offset's value as a string - * @abstract - * @param {number} ts - Epoch milliseconds for which to get the offset - * @param {string} format - What style of offset to return. - * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively - * @return {string} - */ - formatOffset(ts, format2) { - throw new ZoneIsAbstractError(); - } - /** - * Return the offset in minutes for this zone at the specified timestamp. - * @abstract - * @param {number} ts - Epoch milliseconds for which to compute the offset - * @return {number} - */ - offset(ts) { - throw new ZoneIsAbstractError(); - } - /** - * Return whether this Zone is equal to another zone - * @abstract - * @param {Zone} otherZone - the zone to compare - * @return {boolean} - */ - equals(otherZone) { - throw new ZoneIsAbstractError(); - } - /** - * Return whether this Zone is valid. - * @abstract - * @type {boolean} - */ - get isValid() { - throw new ZoneIsAbstractError(); - } -}; - -// node_modules/luxon/src/zones/systemZone.js -var singleton = null; -var SystemZone = class extends Zone { - /** - * Get a singleton instance of the local zone - * @return {SystemZone} - */ - static get instance() { - if (singleton === null) { - singleton = new SystemZone(); - } - return singleton; - } - /** @override **/ - get type() { - return "system"; - } - /** @override **/ - get name() { - return new Intl.DateTimeFormat().resolvedOptions().timeZone; - } - /** @override **/ - get isUniversal() { - return false; - } - /** @override **/ - offsetName(ts, { format: format2, locale: locale2 }) { - return parseZoneInfo(ts, format2, locale2); - } - /** @override **/ - formatOffset(ts, format2) { - return formatOffset(this.offset(ts), format2); - } - /** @override **/ - offset(ts) { - return -new Date(ts).getTimezoneOffset(); - } - /** @override **/ - equals(otherZone) { - return otherZone.type === "system"; - } - /** @override **/ - get isValid() { - return true; - } -}; - -// node_modules/luxon/src/zones/IANAZone.js -var dtfCache = {}; -function makeDTF(zone) { - if (!dtfCache[zone]) { - dtfCache[zone] = new Intl.DateTimeFormat("en-US", { - hour12: false, - timeZone: zone, - year: "numeric", - month: "2-digit", - day: "2-digit", - hour: "2-digit", - minute: "2-digit", - second: "2-digit", - era: "short" - }); - } - return dtfCache[zone]; -} -var typeToPos = { - year: 0, - month: 1, - day: 2, - era: 3, - hour: 4, - minute: 5, - second: 6 -}; -function hackyOffset(dtf, date) { - const formatted = dtf.format(date).replace(/\u200E/g, ""), parsed = /(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(formatted), [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed; - return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond]; -} -function partsOffset(dtf, date) { - const formatted = dtf.formatToParts(date); - const filled = []; - for (let i = 0; i < formatted.length; i++) { - const { type: type2, value } = formatted[i]; - const pos = typeToPos[type2]; - if (type2 === "era") { - filled[pos] = value; - } else if (!isUndefined(pos)) { - filled[pos] = parseInt(value, 10); - } - } - return filled; -} -var ianaZoneCache = {}; -var IANAZone = class extends Zone { - /** - * @param {string} name - Zone name - * @return {IANAZone} - */ - static create(name) { - if (!ianaZoneCache[name]) { - ianaZoneCache[name] = new IANAZone(name); - } - return ianaZoneCache[name]; - } - /** - * Reset local caches. Should only be necessary in testing scenarios. - * @return {void} - */ - static resetCache() { - ianaZoneCache = {}; - dtfCache = {}; - } - /** - * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that. - * @param {string} s - The string to check validity on - * @example IANAZone.isValidSpecifier("America/New_York") //=> true - * @example IANAZone.isValidSpecifier("Sport~~blorp") //=> false - * @deprecated This method returns false for some valid IANA names. Use isValidZone instead. - * @return {boolean} - */ - static isValidSpecifier(s2) { - return this.isValidZone(s2); - } - /** - * Returns whether the provided string identifies a real zone - * @param {string} zone - The string to check - * @example IANAZone.isValidZone("America/New_York") //=> true - * @example IANAZone.isValidZone("Fantasia/Castle") //=> false - * @example IANAZone.isValidZone("Sport~~blorp") //=> false - * @return {boolean} - */ - static isValidZone(zone) { - if (!zone) { - return false; - } - try { - new Intl.DateTimeFormat("en-US", { timeZone: zone }).format(); - return true; - } catch (e) { - return false; - } - } - constructor(name) { - super(); - this.zoneName = name; - this.valid = IANAZone.isValidZone(name); - } - /** @override **/ - get type() { - return "iana"; - } - /** @override **/ - get name() { - return this.zoneName; - } - /** @override **/ - get isUniversal() { - return false; - } - /** @override **/ - offsetName(ts, { format: format2, locale: locale2 }) { - return parseZoneInfo(ts, format2, locale2, this.name); - } - /** @override **/ - formatOffset(ts, format2) { - return formatOffset(this.offset(ts), format2); - } - /** @override **/ - offset(ts) { - const date = new Date(ts); - if (isNaN(date)) - return NaN; - const dtf = makeDTF(this.name); - let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date); - if (adOrBc === "BC") { - year = -Math.abs(year) + 1; - } - const adjustedHour = hour === 24 ? 0 : hour; - const asUTC = objToLocalTS({ - year, - month, - day, - hour: adjustedHour, - minute, - second, - millisecond: 0 - }); - let asTS = +date; - const over = asTS % 1e3; - asTS -= over >= 0 ? over : 1e3 + over; - return (asUTC - asTS) / (60 * 1e3); - } - /** @override **/ - equals(otherZone) { - return otherZone.type === "iana" && otherZone.name === this.name; - } - /** @override **/ - get isValid() { - return this.valid; - } -}; - -// node_modules/luxon/src/zones/fixedOffsetZone.js -var singleton2 = null; -var FixedOffsetZone = class extends Zone { - /** - * Get a singleton instance of UTC - * @return {FixedOffsetZone} - */ - static get utcInstance() { - if (singleton2 === null) { - singleton2 = new FixedOffsetZone(0); - } - return singleton2; - } - /** - * Get an instance with a specified offset - * @param {number} offset - The offset in minutes - * @return {FixedOffsetZone} - */ - static instance(offset2) { - return offset2 === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset2); - } - /** - * Get an instance of FixedOffsetZone from a UTC offset string, like "UTC+6" - * @param {string} s - The offset string to parse - * @example FixedOffsetZone.parseSpecifier("UTC+6") - * @example FixedOffsetZone.parseSpecifier("UTC+06") - * @example FixedOffsetZone.parseSpecifier("UTC-6:00") - * @return {FixedOffsetZone} - */ - static parseSpecifier(s2) { - if (s2) { - const r = s2.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i); - if (r) { - return new FixedOffsetZone(signedOffset(r[1], r[2])); - } - } - return null; - } - constructor(offset2) { - super(); - this.fixed = offset2; - } - /** @override **/ - get type() { - return "fixed"; - } - /** @override **/ - get name() { - return this.fixed === 0 ? "UTC" : `UTC${formatOffset(this.fixed, "narrow")}`; - } - get ianaName() { - if (this.fixed === 0) { - return "Etc/UTC"; - } else { - return `Etc/GMT${formatOffset(-this.fixed, "narrow")}`; - } - } - /** @override **/ - offsetName() { - return this.name; - } - /** @override **/ - formatOffset(ts, format2) { - return formatOffset(this.fixed, format2); - } - /** @override **/ - get isUniversal() { - return true; - } - /** @override **/ - offset() { - return this.fixed; - } - /** @override **/ - equals(otherZone) { - return otherZone.type === "fixed" && otherZone.fixed === this.fixed; - } - /** @override **/ - get isValid() { - return true; - } -}; - -// node_modules/luxon/src/zones/invalidZone.js -var InvalidZone = class extends Zone { - constructor(zoneName) { - super(); - this.zoneName = zoneName; - } - /** @override **/ - get type() { - return "invalid"; - } - /** @override **/ - get name() { - return this.zoneName; - } - /** @override **/ - get isUniversal() { - return false; - } - /** @override **/ - offsetName() { - return null; - } - /** @override **/ - formatOffset() { - return ""; - } - /** @override **/ - offset() { - return NaN; - } - /** @override **/ - equals() { - return false; - } - /** @override **/ - get isValid() { - return false; - } -}; - -// node_modules/luxon/src/impl/zoneUtil.js -function normalizeZone(input, defaultZone2) { - let offset2; - if (isUndefined(input) || input === null) { - return defaultZone2; - } else if (input instanceof Zone) { - return input; - } else if (isString(input)) { - const lowered = input.toLowerCase(); - if (lowered === "local" || lowered === "system") - return defaultZone2; - else if (lowered === "utc" || lowered === "gmt") - return FixedOffsetZone.utcInstance; - else - return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input); - } else if (isNumber(input)) { - return FixedOffsetZone.instance(input); - } else if (typeof input === "object" && input.offset && typeof input.offset === "number") { - return input; - } else { - return new InvalidZone(input); - } -} - -// node_modules/luxon/src/settings.js -var now = () => Date.now(); -var defaultZone = "system"; -var defaultLocale = null; -var defaultNumberingSystem = null; -var defaultOutputCalendar = null; -var throwOnInvalid; -var Settings = class { - /** - * Get the callback for returning the current timestamp. - * @type {function} - */ - static get now() { - return now; - } - /** - * Set the callback for returning the current timestamp. - * The function should return a number, which will be interpreted as an Epoch millisecond count - * @type {function} - * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future - * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time - */ - static set now(n2) { - now = n2; - } - /** - * Set the default time zone to create DateTimes in. Does not affect existing instances. - * Use the value "system" to reset this value to the system's time zone. - * @type {string} - */ - static set defaultZone(zone) { - defaultZone = zone; - } - /** - * Get the default time zone object currently used to create DateTimes. Does not affect existing instances. - * The default value is the system's time zone (the one set on the machine that runs this code). - * @type {Zone} - */ - static get defaultZone() { - return normalizeZone(defaultZone, SystemZone.instance); - } - /** - * Get the default locale to create DateTimes with. Does not affect existing instances. - * @type {string} - */ - static get defaultLocale() { - return defaultLocale; - } - /** - * Set the default locale to create DateTimes with. Does not affect existing instances. - * @type {string} - */ - static set defaultLocale(locale2) { - defaultLocale = locale2; - } - /** - * Get the default numbering system to create DateTimes with. Does not affect existing instances. - * @type {string} - */ - static get defaultNumberingSystem() { - return defaultNumberingSystem; - } - /** - * Set the default numbering system to create DateTimes with. Does not affect existing instances. - * @type {string} - */ - static set defaultNumberingSystem(numberingSystem) { - defaultNumberingSystem = numberingSystem; - } - /** - * Get the default output calendar to create DateTimes with. Does not affect existing instances. - * @type {string} - */ - static get defaultOutputCalendar() { - return defaultOutputCalendar; - } - /** - * Set the default output calendar to create DateTimes with. Does not affect existing instances. - * @type {string} - */ - static set defaultOutputCalendar(outputCalendar) { - defaultOutputCalendar = outputCalendar; - } - /** - * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals - * @type {boolean} - */ - static get throwOnInvalid() { - return throwOnInvalid; - } - /** - * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals - * @type {boolean} - */ - static set throwOnInvalid(t) { - throwOnInvalid = t; - } - /** - * Reset Luxon's global caches. Should only be necessary in testing scenarios. - * @return {void} - */ - static resetCaches() { - Locale.resetCache(); - IANAZone.resetCache(); - } -}; - -// node_modules/luxon/src/impl/locale.js -var intlLFCache = {}; -function getCachedLF(locString, opts = {}) { - const key = JSON.stringify([locString, opts]); - let dtf = intlLFCache[key]; - if (!dtf) { - dtf = new Intl.ListFormat(locString, opts); - intlLFCache[key] = dtf; - } - return dtf; -} -var intlDTCache = {}; -function getCachedDTF(locString, opts = {}) { - const key = JSON.stringify([locString, opts]); - let dtf = intlDTCache[key]; - if (!dtf) { - dtf = new Intl.DateTimeFormat(locString, opts); - intlDTCache[key] = dtf; - } - return dtf; -} -var intlNumCache = {}; -function getCachedINF(locString, opts = {}) { - const key = JSON.stringify([locString, opts]); - let inf = intlNumCache[key]; - if (!inf) { - inf = new Intl.NumberFormat(locString, opts); - intlNumCache[key] = inf; - } - return inf; -} -var intlRelCache = {}; -function getCachedRTF(locString, opts = {}) { - const { base, ...cacheKeyOpts } = opts; - const key = JSON.stringify([locString, cacheKeyOpts]); - let inf = intlRelCache[key]; - if (!inf) { - inf = new Intl.RelativeTimeFormat(locString, opts); - intlRelCache[key] = inf; - } - return inf; -} -var sysLocaleCache = null; -function systemLocale() { - if (sysLocaleCache) { - return sysLocaleCache; - } else { - sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale; - return sysLocaleCache; - } -} -function parseLocaleString(localeStr) { - const uIndex = localeStr.indexOf("-u-"); - if (uIndex === -1) { - return [localeStr]; - } else { - let options; - const smaller = localeStr.substring(0, uIndex); - try { - options = getCachedDTF(localeStr).resolvedOptions(); - } catch (e) { - options = getCachedDTF(smaller).resolvedOptions(); - } - const { numberingSystem, calendar } = options; - return [smaller, numberingSystem, calendar]; - } -} -function intlConfigString(localeStr, numberingSystem, outputCalendar) { - if (outputCalendar || numberingSystem) { - localeStr += "-u"; - if (outputCalendar) { - localeStr += `-ca-${outputCalendar}`; - } - if (numberingSystem) { - localeStr += `-nu-${numberingSystem}`; - } - return localeStr; - } else { - return localeStr; - } -} -function mapMonths(f) { - const ms = []; - for (let i = 1; i <= 12; i++) { - const dt = DateTime.utc(2016, i, 1); - ms.push(f(dt)); - } - return ms; -} -function mapWeekdays(f) { - const ms = []; - for (let i = 1; i <= 7; i++) { - const dt = DateTime.utc(2016, 11, 13 + i); - ms.push(f(dt)); - } - return ms; -} -function listStuff(loc, length, defaultOK, englishFn, intlFn) { - const mode = loc.listingMode(defaultOK); - if (mode === "error") { - return null; - } else if (mode === "en") { - return englishFn(length); - } else { - return intlFn(length); - } -} -function supportsFastNumbers(loc) { - if (loc.numberingSystem && loc.numberingSystem !== "latn") { - return false; - } else { - return loc.numberingSystem === "latn" || !loc.locale || loc.locale.startsWith("en") || new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === "latn"; - } -} -var PolyNumberFormatter = class { - constructor(intl, forceSimple, opts) { - this.padTo = opts.padTo || 0; - this.floor = opts.floor || false; - const { padTo, floor, ...otherOpts } = opts; - if (!forceSimple || Object.keys(otherOpts).length > 0) { - const intlOpts = { useGrouping: false, ...opts }; - if (opts.padTo > 0) - intlOpts.minimumIntegerDigits = opts.padTo; - this.inf = getCachedINF(intl, intlOpts); - } - } - format(i) { - if (this.inf) { - const fixed = this.floor ? Math.floor(i) : i; - return this.inf.format(fixed); - } else { - const fixed = this.floor ? Math.floor(i) : roundTo(i, 3); - return padStart(fixed, this.padTo); - } - } -}; -var PolyDateFormatter = class { - constructor(dt, intl, opts) { - this.opts = opts; - let z; - if (dt.zone.isUniversal) { - const gmtOffset = -1 * (dt.offset / 60); - const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`; - if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) { - z = offsetZ; - this.dt = dt; - } else { - z = "UTC"; - if (opts.timeZoneName) { - this.dt = dt; - } else { - this.dt = dt.offset === 0 ? dt : DateTime.fromMillis(dt.ts + dt.offset * 60 * 1e3); - } - } - } else if (dt.zone.type === "system") { - this.dt = dt; - } else { - this.dt = dt; - z = dt.zone.name; - } - const intlOpts = { ...this.opts }; - if (z) { - intlOpts.timeZone = z; - } - this.dtf = getCachedDTF(intl, intlOpts); - } - format() { - return this.dtf.format(this.dt.toJSDate()); - } - formatToParts() { - return this.dtf.formatToParts(this.dt.toJSDate()); - } - resolvedOptions() { - return this.dtf.resolvedOptions(); - } -}; -var PolyRelFormatter = class { - constructor(intl, isEnglish, opts) { - this.opts = { style: "long", ...opts }; - if (!isEnglish && hasRelative()) { - this.rtf = getCachedRTF(intl, opts); - } - } - format(count2, unit2) { - if (this.rtf) { - return this.rtf.format(count2, unit2); - } else { - return formatRelativeTime(unit2, count2, this.opts.numeric, this.opts.style !== "long"); - } - } - formatToParts(count2, unit2) { - if (this.rtf) { - return this.rtf.formatToParts(count2, unit2); - } else { - return []; - } - } -}; -var Locale = class { - static fromOpts(opts) { - return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN); - } - static create(locale2, numberingSystem, outputCalendar, defaultToEN = false) { - const specifiedLocale = locale2 || Settings.defaultLocale; - const localeR = specifiedLocale || (defaultToEN ? "en-US" : systemLocale()); - const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem; - const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar; - return new Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale); - } - static resetCache() { - sysLocaleCache = null; - intlDTCache = {}; - intlNumCache = {}; - intlRelCache = {}; - } - static fromObject({ locale: locale2, numberingSystem, outputCalendar } = {}) { - return Locale.create(locale2, numberingSystem, outputCalendar); - } - constructor(locale2, numbering, outputCalendar, specifiedLocale) { - const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale2); - this.locale = parsedLocale; - this.numberingSystem = numbering || parsedNumberingSystem || null; - this.outputCalendar = outputCalendar || parsedOutputCalendar || null; - this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar); - this.weekdaysCache = { format: {}, standalone: {} }; - this.monthsCache = { format: {}, standalone: {} }; - this.meridiemCache = null; - this.eraCache = {}; - this.specifiedLocale = specifiedLocale; - this.fastNumbersCached = null; - } - get fastNumbers() { - if (this.fastNumbersCached == null) { - this.fastNumbersCached = supportsFastNumbers(this); - } - return this.fastNumbersCached; - } - listingMode() { - const isActuallyEn = this.isEnglish(); - const hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === "latn") && (this.outputCalendar === null || this.outputCalendar === "gregory"); - return isActuallyEn && hasNoWeirdness ? "en" : "intl"; - } - clone(alts) { - if (!alts || Object.getOwnPropertyNames(alts).length === 0) { - return this; - } else { - return Locale.create( - alts.locale || this.specifiedLocale, - alts.numberingSystem || this.numberingSystem, - alts.outputCalendar || this.outputCalendar, - alts.defaultToEN || false - ); - } - } - redefaultToEN(alts = {}) { - return this.clone({ ...alts, defaultToEN: true }); - } - redefaultToSystem(alts = {}) { - return this.clone({ ...alts, defaultToEN: false }); - } - months(length, format2 = false, defaultOK = true) { - return listStuff(this, length, defaultOK, months, () => { - const intl = format2 ? { month: length, day: "numeric" } : { month: length }, formatStr = format2 ? "format" : "standalone"; - if (!this.monthsCache[formatStr][length]) { - this.monthsCache[formatStr][length] = mapMonths((dt) => this.extract(dt, intl, "month")); - } - return this.monthsCache[formatStr][length]; - }); - } - weekdays(length, format2 = false, defaultOK = true) { - return listStuff(this, length, defaultOK, weekdays, () => { - const intl = format2 ? { weekday: length, year: "numeric", month: "long", day: "numeric" } : { weekday: length }, formatStr = format2 ? "format" : "standalone"; - if (!this.weekdaysCache[formatStr][length]) { - this.weekdaysCache[formatStr][length] = mapWeekdays( - (dt) => this.extract(dt, intl, "weekday") - ); - } - return this.weekdaysCache[formatStr][length]; - }); - } - meridiems(defaultOK = true) { - return listStuff( - this, - void 0, - defaultOK, - () => meridiems, - () => { - if (!this.meridiemCache) { - const intl = { hour: "numeric", hourCycle: "h12" }; - this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map( - (dt) => this.extract(dt, intl, "dayperiod") - ); - } - return this.meridiemCache; - } - ); - } - eras(length, defaultOK = true) { - return listStuff(this, length, defaultOK, eras, () => { - const intl = { era: length }; - if (!this.eraCache[length]) { - this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map( - (dt) => this.extract(dt, intl, "era") - ); - } - return this.eraCache[length]; - }); - } - extract(dt, intlOpts, field) { - const df = this.dtFormatter(dt, intlOpts), results = df.formatToParts(), matching = results.find((m2) => m2.type.toLowerCase() === field); - return matching ? matching.value : null; - } - numberFormatter(opts = {}) { - return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts); - } - dtFormatter(dt, intlOpts = {}) { - return new PolyDateFormatter(dt, this.intl, intlOpts); - } - relFormatter(opts = {}) { - return new PolyRelFormatter(this.intl, this.isEnglish(), opts); - } - listFormatter(opts = {}) { - return getCachedLF(this.intl, opts); - } - isEnglish() { - return this.locale === "en" || this.locale.toLowerCase() === "en-us" || new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us"); - } - equals(other) { - return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar; - } -}; - // node_modules/luxon/src/impl/regexParser.js +var ianaRegex = /[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/; function combineRegexes(...regexes) { const full = regexes.reduce((f, r) => f + r.source, ""); return RegExp(`^${full}$`); } function combineExtractors(...extractors) { - return (m2) => extractors.reduce( + return (m) => extractors.reduce( ([mergedVals, mergedZone, cursor], ex) => { - const [val, zone, next] = ex(m2, cursor); + const [val, zone, next] = ex(m, cursor); return [{ ...mergedVals, ...val }, zone || mergedZone, next]; }, [{}, null, 1] @@ -14594,10 +17206,10 @@ function parse(s2, ...patterns) { if (s2 == null) { return [null, null]; } - for (const [regex, extractor] of patterns) { - const m2 = regex.exec(s2); - if (m2) { - return extractor(m2); + for (const [regex2, extractor] of patterns) { + const m = regex2.exec(s2); + if (m) { + return extractor(m); } } return [null, null]; @@ -14628,8 +17240,8 @@ var sqlTimeRegex = RegExp( ); var sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`); function int(match2, pos, fallback) { - const m2 = match2[pos]; - return isUndefined(m2) ? fallback : parseInteger(m2); + const m = match2[pos]; + return isUndefined(m) ? fallback : parseInteger(m); } function extractISOYmd(match2, cursor) { const item = { @@ -14659,17 +17271,7 @@ function extractIANAZone(match2, cursor) { var isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`); var isoDuration = /^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/; function extractISODuration(match2) { - const [ - s2, - yearStr, - monthStr, - weekStr, - dayStr, - hourStr, - minuteStr, - secondStr, - millisecondsStr - ] = match2; + const [s2, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] = match2; const hasNegativePrefix = s2[0] === "-"; const negativeSeconds = secondStr && secondStr[0] === "-"; const maybeNegate = (num, force = false) => num !== void 0 && (force || num && hasNegativePrefix) ? -num : num; @@ -14822,7 +17424,7 @@ function parseSQL(s2) { } // node_modules/luxon/src/duration.js -var INVALID = "Invalid Duration"; +var INVALID2 = "Invalid Duration"; var lowOrderMatrix = { weeks: { days: 7, @@ -14919,23 +17521,43 @@ function clone(dur, alts, clear = false) { const conf = { values: clear ? alts.values : { ...dur.values, ...alts.values || {} }, loc: dur.loc.clone(alts.loc), - conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy + conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy, + matrix: alts.matrix || dur.matrix }; return new Duration(conf); } -function antiTrunc(n2) { - return n2 < 0 ? Math.floor(n2) : Math.ceil(n2); -} -function convert(matrix, fromMap, fromUnit, toMap, toUnit) { - const conv = matrix[toUnit][fromUnit], raw = fromMap[fromUnit] / conv, sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]), added = !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw); - toMap[toUnit] += added; - fromMap[fromUnit] -= added * conv; +function durationToMillis(matrix, vals) { + var _a; + let sum = (_a = vals.milliseconds) != null ? _a : 0; + for (const unit of reverseUnits.slice(1)) { + if (vals[unit]) { + sum += vals[unit] * matrix[unit]["milliseconds"]; + } + } + return sum; } function normalizeValues(matrix, vals) { - reverseUnits.reduce((previous, current) => { + const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1; + orderedUnits.reduceRight((previous, current) => { if (!isUndefined(vals[current])) { if (previous) { - convert(matrix, vals, previous, vals, current); + const previousVal = vals[previous] * factor; + const conv = matrix[current][previous]; + const rollUp = Math.floor(previousVal / conv); + vals[current] += rollUp * factor; + vals[previous] -= rollUp * conv * factor; + } + return current; + } else { + return previous; + } + }, null); + orderedUnits.reduce((previous, current) => { + if (!isUndefined(vals[current])) { + if (previous) { + const fraction = vals[previous] % 1; + vals[previous] -= fraction; + vals[current] += fraction * matrix[previous][current]; } return current; } else { @@ -14943,17 +17565,30 @@ function normalizeValues(matrix, vals) { } }, null); } -var Duration = class { +function removeZeroes(vals) { + const newVals = {}; + for (const [key, value] of Object.entries(vals)) { + if (value !== 0) { + newVals[key] = value; + } + } + return newVals; +} +var Duration = class _Duration { /** * @private */ constructor(config) { const accurate = config.conversionAccuracy === "longterm" || false; + let matrix = accurate ? accurateMatrix : casualMatrix; + if (config.matrix) { + matrix = config.matrix; + } this.values = config.values; this.loc = config.loc || Locale.create(); this.conversionAccuracy = accurate ? "longterm" : "casual"; this.invalid = config.invalid || null; - this.matrix = accurate ? accurateMatrix : casualMatrix; + this.matrix = matrix; this.isLuxonDuration = true; } /** @@ -14965,8 +17600,8 @@ var Duration = class { * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use * @return {Duration} */ - static fromMillis(count2, opts) { - return Duration.fromObject({ milliseconds: count2 }, opts); + static fromMillis(count, opts) { + return _Duration.fromObject({ milliseconds: count }, opts); } /** * Create a Duration from a JavaScript object with keys like 'years' and 'hours'. @@ -14984,7 +17619,8 @@ var Duration = class { * @param {Object} [opts=[]] - options for creating this Duration * @param {string} [opts.locale='en-US'] - the locale to use * @param {string} opts.numberingSystem - the numbering system to use - * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use + * @param {string} [opts.matrix=Object] - the custom conversion system to use * @return {Duration} */ static fromObject(obj, opts = {}) { @@ -14993,10 +17629,11 @@ var Duration = class { `Duration.fromObject: argument expected to be an object, got ${obj === null ? "null" : typeof obj}` ); } - return new Duration({ - values: normalizeObject(obj, Duration.normalizeUnit), + return new _Duration({ + values: normalizeObject(obj, _Duration.normalizeUnit), loc: Locale.fromObject(opts), - conversionAccuracy: opts.conversionAccuracy + conversionAccuracy: opts.conversionAccuracy, + matrix: opts.matrix }); } /** @@ -15011,11 +17648,11 @@ var Duration = class { */ static fromDurationLike(durationLike) { if (isNumber(durationLike)) { - return Duration.fromMillis(durationLike); - } else if (Duration.isDuration(durationLike)) { + return _Duration.fromMillis(durationLike); + } else if (_Duration.isDuration(durationLike)) { return durationLike; } else if (typeof durationLike === "object") { - return Duration.fromObject(durationLike); + return _Duration.fromObject(durationLike); } else { throw new InvalidArgumentError( `Unknown duration argument ${durationLike} of type ${typeof durationLike}` @@ -15028,7 +17665,8 @@ var Duration = class { * @param {Object} opts - options for parsing * @param {string} [opts.locale='en-US'] - the locale to use * @param {string} opts.numberingSystem - the numbering system to use - * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use + * @param {string} [opts.matrix=Object] - the preset conversion system to use * @see https://en.wikipedia.org/wiki/ISO_8601#Durations * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 } * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 } @@ -15038,9 +17676,9 @@ var Duration = class { static fromISO(text2, opts) { const [parsed] = parseISODuration(text2); if (parsed) { - return Duration.fromObject(parsed, opts); + return _Duration.fromObject(parsed, opts); } else { - return Duration.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); + return _Duration.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); } } /** @@ -15049,7 +17687,8 @@ var Duration = class { * @param {Object} opts - options for parsing * @param {string} [opts.locale='en-US'] - the locale to use * @param {string} opts.numberingSystem - the numbering system to use - * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use + * @param {string} [opts.matrix=Object] - the conversion system to use * @see https://en.wikipedia.org/wiki/ISO_8601#Times * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 } * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 } @@ -15061,9 +17700,9 @@ var Duration = class { static fromISOTime(text2, opts) { const [parsed] = parseISOTimeOnly(text2); if (parsed) { - return Duration.fromObject(parsed, opts); + return _Duration.fromObject(parsed, opts); } else { - return Duration.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); + return _Duration.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); } } /** @@ -15080,13 +17719,13 @@ var Duration = class { if (Settings.throwOnInvalid) { throw new InvalidDurationError(invalid); } else { - return new Duration({ invalid }); + return new _Duration({ invalid }); } } /** * @private */ - static normalizeUnit(unit2) { + static normalizeUnit(unit) { const normalized = { year: "years", years: "years", @@ -15106,9 +17745,9 @@ var Duration = class { seconds: "seconds", millisecond: "milliseconds", milliseconds: "milliseconds" - }[unit2 ? unit2.toLowerCase() : unit2]; + }[unit ? unit.toLowerCase() : unit]; if (!normalized) - throw new InvalidUnitError(unit2); + throw new InvalidUnitError(unit); return normalized; } /** @@ -15161,13 +17800,14 @@ var Duration = class { ...opts, floor: opts.round !== false && opts.floor !== false }; - return this.isValid ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID; + return this.isValid ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID2; } /** * Returns a string representation of a Duration with all units included. - * To modify its behavior use the `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant. - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat - * @param opts - On option object to override the formatting. Accepts the same keys as the options parameter of the native `Int.NumberFormat` constructor, as well as `listStyle`. + * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options + * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`. + * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor. * @example * ```js * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 }) @@ -15177,12 +17817,14 @@ var Duration = class { * ``` */ toHuman(opts = {}) { - const l2 = orderedUnits.map((unit2) => { - const val = this.values[unit2]; + if (!this.isValid) + return INVALID2; + const l2 = orderedUnits.map((unit) => { + const val = this.values[unit]; if (isUndefined(val)) { return null; } - return this.loc.numberFormatter({ style: "unit", unitDisplay: "long", ...opts, unit: unit2.slice(0, -1) }).format(val); + return this.loc.numberFormatter({ style: "unit", unitDisplay: "long", ...opts, unit: unit.slice(0, -1) }).format(val); }).filter((n2) => n2); return this.loc.listFormatter({ type: "conjunction", style: opts.listStyle || "narrow", ...opts }).format(l2); } @@ -15257,21 +17899,11 @@ var Duration = class { suppressSeconds: false, includePrefix: false, format: "extended", - ...opts + ...opts, + includeOffset: false }; - const value = this.shiftTo("hours", "minutes", "seconds", "milliseconds"); - let fmt = opts.format === "basic" ? "hhmm" : "hh:mm"; - if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) { - fmt += opts.format === "basic" ? "ss" : ":ss"; - if (!opts.suppressMilliseconds || value.milliseconds !== 0) { - fmt += ".SSS"; - } - } - let str = value.toFormat(fmt); - if (opts.includePrefix) { - str = "T" + str; - } - return str; + const dateTime = DateTime.fromMillis(millis, { zone: "UTC" }); + return dateTime.toISOTime(opts); } /** * Returns an ISO 8601 representation of this Duration appropriate for use in JSON. @@ -15287,12 +17919,25 @@ var Duration = class { toString() { return this.toISO(); } + /** + * Returns a string representation of this Duration appropriate for the REPL. + * @return {string} + */ + [Symbol.for("nodejs.util.inspect.custom")]() { + if (this.isValid) { + return `Duration { values: ${JSON.stringify(this.values)} }`; + } else { + return `Duration { Invalid, reason: ${this.invalidReason} }`; + } + } /** * Returns an milliseconds value of this Duration. * @return {number} */ toMillis() { - return this.as("milliseconds"); + if (!this.isValid) + return NaN; + return durationToMillis(this.matrix, this.values); } /** * Returns an milliseconds value of this Duration. Alias of {@link toMillis} @@ -15309,7 +17954,7 @@ var Duration = class { plus(duration) { if (!this.isValid) return this; - const dur = Duration.fromDurationLike(duration), result = {}; + const dur = _Duration.fromDurationLike(duration), result = {}; for (const k of orderedUnits) { if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) { result[k] = dur.get(k) + this.get(k); @@ -15325,14 +17970,14 @@ var Duration = class { minus(duration) { if (!this.isValid) return this; - const dur = Duration.fromDurationLike(duration); + const dur = _Duration.fromDurationLike(duration); return this.plus(dur.negate()); } /** * Scale this Duration by the specified amount. Return a newly-constructed Duration. * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number. * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 } - * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === "hour" ? x * 2 : x) //=> { hours: 2, minutes: 30 } + * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === "hours" ? x * 2 : x) //=> { hours: 2, minutes: 30 } * @return {Duration} */ mapUnits(fn) { @@ -15352,8 +17997,8 @@ var Duration = class { * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3 * @return {number} */ - get(unit2) { - return this[Duration.normalizeUnit(unit2)]; + get(unit) { + return this[_Duration.normalizeUnit(unit)]; } /** * "Set" the values of specified units. Return a newly-constructed Duration. @@ -15365,7 +18010,7 @@ var Duration = class { set(values) { if (!this.isValid) return this; - const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) }; + const mixed = { ...this.values, ...normalizeObject(values, _Duration.normalizeUnit) }; return clone(this, { values: mixed }); } /** @@ -15373,11 +18018,9 @@ var Duration = class { * @example dur.reconfigure({ locale: 'en-GB' }) * @return {Duration} */ - reconfigure({ locale: locale2, numberingSystem, conversionAccuracy } = {}) { - const loc = this.loc.clone({ locale: locale2, numberingSystem }), opts = { loc }; - if (conversionAccuracy) { - opts.conversionAccuracy = conversionAccuracy; - } + reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) { + const loc = this.loc.clone({ locale, numberingSystem }); + const opts = { loc, matrix, conversionAccuracy }; return clone(this, opts); } /** @@ -15388,13 +18031,22 @@ var Duration = class { * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5 * @return {number} */ - as(unit2) { - return this.isValid ? this.shiftTo(unit2).get(unit2) : NaN; + as(unit) { + return this.isValid ? this.shiftTo(unit).get(unit) : NaN; } /** * Reduce this Duration to its canonical representation in its current units. + * Assuming the overall value of the Duration is positive, this means: + * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example) + * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise + * the overall value would be negative, see third example) + * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example) + * + * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`. * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 } + * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 } * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 } + * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 } * @return {Duration} */ normalize() { @@ -15404,6 +18056,17 @@ var Duration = class { normalizeValues(this.matrix, vals); return clone(this, { values: vals }, true); } + /** + * Rescale units to its largest representation + * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 } + * @return {Duration} + */ + rescale() { + if (!this.isValid) + return this; + const vals = removeZeroes(this.normalize().shiftToAll().toObject()); + return clone(this, { values: vals }, true); + } /** * Convert this Duration into its representation in a different set of units. * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 } @@ -15415,7 +18078,7 @@ var Duration = class { if (units.length === 0) { return this; } - units = units.map((u) => Duration.normalizeUnit(u)); + units = units.map((u) => _Duration.normalizeUnit(u)); const built = {}, accumulated = {}, vals = this.toObject(); let lastUnit; for (const k of orderedUnits) { @@ -15432,11 +18095,6 @@ var Duration = class { const i = Math.trunc(own); built[k] = i; accumulated[k] = (own * 1e3 - i * 1e3) / 1e3; - for (const down in vals) { - if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) { - convert(this.matrix, vals, down, built, k); - } - } } else if (isNumber(vals[k])) { accumulated[k] = vals[k]; } @@ -15446,7 +18104,27 @@ var Duration = class { built[lastUnit] += key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key]; } } - return clone(this, { values: built }, true).normalize(); + normalizeValues(this.matrix, built); + return clone(this, { values: built }, true); + } + /** + * Shift this Duration to all available units. + * Same as shiftTo("years", "months", "weeks", "days", "hours", "minutes", "seconds", "milliseconds") + * @return {Duration} + */ + shiftToAll() { + if (!this.isValid) + return this; + return this.shiftTo( + "years", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ); } /** * Return the negative of this Duration. @@ -15575,22 +18253,22 @@ var Duration = class { }; // node_modules/luxon/src/interval.js -var INVALID2 = "Invalid Interval"; -function validateStartEnd(start2, end) { - if (!start2 || !start2.isValid) { +var INVALID3 = "Invalid Interval"; +function validateStartEnd(start, end) { + if (!start || !start.isValid) { return Interval.invalid("missing or invalid start"); } else if (!end || !end.isValid) { return Interval.invalid("missing or invalid end"); - } else if (end < start2) { + } else if (end < start) { return Interval.invalid( "end before start", - `The end of an interval must be after its start, but you had start=${start2.toISO()} and end=${end.toISO()}` + `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}` ); } else { return null; } } -var Interval = class { +var Interval = class _Interval { /** * @private */ @@ -15614,7 +18292,7 @@ var Interval = class { if (Settings.throwOnInvalid) { throw new InvalidIntervalError(invalid); } else { - return new Interval({ invalid }); + return new _Interval({ invalid }); } } /** @@ -15623,11 +18301,11 @@ var Interval = class { * @param {DateTime|Date|Object} end * @return {Interval} */ - static fromDateTimes(start2, end) { - const builtStart = friendlyDateTime(start2), builtEnd = friendlyDateTime(end); + static fromDateTimes(start, end) { + const builtStart = friendlyDateTime(start), builtEnd = friendlyDateTime(end); const validateError = validateStartEnd(builtStart, builtEnd); if (validateError == null) { - return new Interval({ + return new _Interval({ start: builtStart, end: builtEnd }); @@ -15641,9 +18319,9 @@ var Interval = class { * @param {Duration|Object|number} duration - the length of the Interval. * @return {Interval} */ - static after(start2, duration) { - const dur = Duration.fromDurationLike(duration), dt = friendlyDateTime(start2); - return Interval.fromDateTimes(dt, dt.plus(dur)); + static after(start, duration) { + const dur = Duration.fromDurationLike(duration), dt = friendlyDateTime(start); + return _Interval.fromDateTimes(dt, dt.plus(dur)); } /** * Create an Interval from an end DateTime and a Duration to extend backwards to. @@ -15653,7 +18331,7 @@ var Interval = class { */ static before(end, duration) { const dur = Duration.fromDurationLike(duration), dt = friendlyDateTime(end); - return Interval.fromDateTimes(dt.minus(dur), dt); + return _Interval.fromDateTimes(dt.minus(dur), dt); } /** * Create an Interval from an ISO 8601 string. @@ -15666,36 +18344,36 @@ var Interval = class { static fromISO(text2, opts) { const [s2, e] = (text2 || "").split("/", 2); if (s2 && e) { - let start2, startIsValid; + let start, startIsValid; try { - start2 = DateTime.fromISO(s2, opts); - startIsValid = start2.isValid; - } catch (e3) { + start = DateTime.fromISO(s2, opts); + startIsValid = start.isValid; + } catch (e2) { startIsValid = false; } let end, endIsValid; try { end = DateTime.fromISO(e, opts); endIsValid = end.isValid; - } catch (e3) { + } catch (e2) { endIsValid = false; } if (startIsValid && endIsValid) { - return Interval.fromDateTimes(start2, end); + return _Interval.fromDateTimes(start, end); } if (startIsValid) { const dur = Duration.fromISO(e, opts); if (dur.isValid) { - return Interval.after(start2, dur); + return _Interval.after(start, dur); } } else if (endIsValid) { const dur = Duration.fromISO(s2, opts); if (dur.isValid) { - return Interval.before(end, dur); + return _Interval.before(end, dur); } } } - return Interval.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); + return _Interval.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); } /** * Check if an object is an Interval. Works across context boundaries @@ -15745,29 +18423,38 @@ var Interval = class { * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in. * @return {number} */ - length(unit2 = "milliseconds") { - return this.isValid ? this.toDuration(...[unit2]).get(unit2) : NaN; + length(unit = "milliseconds") { + return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN; } /** * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part. * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day' * asks 'what dates are included in this interval?', not 'how many days long is this interval?' * @param {string} [unit='milliseconds'] - the unit of time to count. + * @param {Object} opts - options + * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; this operation will always use the locale of the start DateTime * @return {number} */ - count(unit2 = "milliseconds") { + count(unit = "milliseconds", opts) { if (!this.isValid) return NaN; - const start2 = this.start.startOf(unit2), end = this.end.startOf(unit2); - return Math.floor(end.diff(start2, unit2).get(unit2)) + 1; + const start = this.start.startOf(unit, opts); + let end; + if (opts == null ? void 0 : opts.useLocaleWeeks) { + end = this.end.reconfigure({ locale: start.locale }); + } else { + end = this.end; + } + end = end.startOf(unit, opts); + return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf()); } /** * Returns whether this Interval's start and end are both in the same unit of time * @param {string} unit - the unit of time to check sameness on * @return {boolean} */ - hasSame(unit2) { - return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit2) : false; + hasSame(unit) { + return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false; } /** * Return whether this Interval has the same start and end DateTimes. @@ -15813,10 +18500,10 @@ var Interval = class { * @param {DateTime} values.end - the ending DateTime * @return {Interval} */ - set({ start: start2, end } = {}) { + set({ start, end } = {}) { if (!this.isValid) return this; - return Interval.fromDateTimes(start2 || this.s, end || this.e); + return _Interval.fromDateTimes(start || this.s, end || this.e); } /** * Split this Interval at each of the specified DateTimes @@ -15826,11 +18513,11 @@ var Interval = class { splitAt(...dateTimes) { if (!this.isValid) return []; - const sorted = dateTimes.map(friendlyDateTime).filter((d) => this.contains(d)).sort(), results = []; + const sorted = dateTimes.map(friendlyDateTime).filter((d) => this.contains(d)).sort((a, b) => a.toMillis() - b.toMillis()), results = []; let { s: s2 } = this, i = 0; while (s2 < this.e) { const added = sorted[i] || this.e, next = +added > +this.e ? this.e : added; - results.push(Interval.fromDateTimes(s2, next)); + results.push(_Interval.fromDateTimes(s2, next)); s2 = next; i += 1; } @@ -15850,9 +18537,9 @@ var Interval = class { let { s: s2 } = this, idx = 1, next; const results = []; while (s2 < this.e) { - const added = this.start.plus(dur.mapUnits((x4) => x4 * idx)); + const added = this.start.plus(dur.mapUnits((x) => x * idx)); next = +added > +this.e ? this.e : added; - results.push(Interval.fromDateTimes(s2, next)); + results.push(_Interval.fromDateTimes(s2, next)); s2 = next; idx += 1; } @@ -15931,7 +18618,7 @@ var Interval = class { if (s2 >= e) { return null; } else { - return Interval.fromDateTimes(s2, e); + return _Interval.fromDateTimes(s2, e); } } /** @@ -15944,7 +18631,7 @@ var Interval = class { if (!this.isValid) return this; const s2 = this.s < other.s ? this.s : other.s, e = this.e > other.e ? this.e : other.e; - return Interval.fromDateTimes(s2, e); + return _Interval.fromDateTimes(s2, e); } /** * Merge an array of Intervals into a equivalent minimal set of Intervals. @@ -15953,7 +18640,7 @@ var Interval = class { * @return {Array} */ static merge(intervals) { - const [found, final] = intervals.sort((a2, b) => a2.s - b.s).reduce( + const [found, final] = intervals.sort((a, b) => a.s - b.s).reduce( ([sofar, current], item) => { if (!current) { return [sofar, item]; @@ -15976,23 +18663,23 @@ var Interval = class { * @return {Array} */ static xor(intervals) { - let start2 = null, currentCount = 0; + let start = null, currentCount = 0; const results = [], ends = intervals.map((i) => [ { time: i.s, type: "s" }, { time: i.e, type: "e" } - ]), flattened = Array.prototype.concat(...ends), arr = flattened.sort((a2, b) => a2.time - b.time); + ]), flattened = Array.prototype.concat(...ends), arr = flattened.sort((a, b) => a.time - b.time); for (const i of arr) { currentCount += i.type === "s" ? 1 : -1; if (currentCount === 1) { - start2 = i.time; + start = i.time; } else { - if (start2 && +start2 !== +i.time) { - results.push(Interval.fromDateTimes(start2, i.time)); + if (start && +start !== +i.time) { + results.push(_Interval.fromDateTimes(start, i.time)); } - start2 = null; + start = null; } } - return Interval.merge(results); + return _Interval.merge(results); } /** * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals. @@ -16000,7 +18687,7 @@ var Interval = class { * @return {Array} */ difference(...intervals) { - return Interval.xor([this].concat(intervals)).map((i) => this.intersection(i)).filter((i) => i && !i.isEmpty()); + return _Interval.xor([this].concat(intervals)).map((i) => this.intersection(i)).filter((i) => i && !i.isEmpty()); } /** * Returns a string representation of this Interval appropriate for debugging. @@ -16008,9 +18695,41 @@ var Interval = class { */ toString() { if (!this.isValid) - return INVALID2; + return INVALID3; return `[${this.s.toISO()} \u2013 ${this.e.toISO()})`; } + /** + * Returns a string representation of this Interval appropriate for the REPL. + * @return {string} + */ + [Symbol.for("nodejs.util.inspect.custom")]() { + if (this.isValid) { + return `Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`; + } else { + return `Interval { Invalid, reason: ${this.invalidReason} }`; + } + } + /** + * Returns a localized string representing this Interval. Accepts the same options as the + * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as + * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method + * is browser-specific, but in general it will return an appropriate representation of the + * Interval in the assigned locale. Defaults to the system's locale if no locale has been + * specified. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or + * Intl.DateTimeFormat constructor options. + * @param {Object} opts - Options to override the configuration of the start DateTime. + * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022 + * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022 + * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022 + * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM + * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p + * @return {string} + */ + toLocaleString(formatOpts = DATE_SHORT, opts = {}) { + return this.isValid ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this) : INVALID3; + } /** * Returns an ISO 8601-compliant string representation of this Interval. * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals @@ -16019,7 +18738,7 @@ var Interval = class { */ toISO(opts) { if (!this.isValid) - return INVALID2; + return INVALID3; return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`; } /** @@ -16030,7 +18749,7 @@ var Interval = class { */ toISODate() { if (!this.isValid) - return INVALID2; + return INVALID3; return `${this.s.toISODate()}/${this.e.toISODate()}`; } /** @@ -16042,19 +18761,23 @@ var Interval = class { */ toISOTime(opts) { if (!this.isValid) - return INVALID2; + return INVALID3; return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`; } /** - * Returns a string representation of this Interval formatted according to the specified format string. - * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime#toFormat} for details. - * @param {Object} opts - options - * @param {string} [opts.separator = ' – '] - a separator to place between the start and end representations + * Returns a string representation of this Interval formatted according to the specified format + * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible + * formatting tool. + * @param {string} dateFormat - The format string. This string formats the start and end time. + * See {@link DateTime#toFormat} for details. + * @param {Object} opts - Options. + * @param {string} [opts.separator = ' – '] - A separator to place between the start and end + * representations. * @return {string} */ toFormat(dateFormat, { separator = " \u2013 " } = {}) { if (!this.isValid) - return INVALID2; + return INVALID3; return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`; } /** @@ -16069,11 +18792,11 @@ var Interval = class { * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 } * @return {Duration} */ - toDuration(unit2, opts) { + toDuration(unit, opts) { if (!this.isValid) { return Duration.invalid(this.invalidReason); } - return this.e.diff(this.s, unit2, opts); + return this.e.diff(this.s, unit, opts); } /** * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes @@ -16083,7 +18806,7 @@ var Interval = class { * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 })) */ mapEndpoints(mapFn) { - return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e)); + return _Interval.fromDateTimes(mapFn(this.s), mapFn(this.e)); } }; @@ -16123,6 +18846,37 @@ var Info = class { static normalizeZone(input) { return normalizeZone(input, Settings.defaultZone); } + /** + * Get the weekday on which the week starts according to the given locale. + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.locObj=null] - an existing locale object to use + * @returns {number} the start of the week, 1 for Monday through 7 for Sunday + */ + static getStartOfWeek({ locale = null, locObj = null } = {}) { + return (locObj || Locale.create(locale)).getStartOfWeek(); + } + /** + * Get the minimum number of days necessary in a week before it is considered part of the next year according + * to the given locale. + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.locObj=null] - an existing locale object to use + * @returns {number} + */ + static getMinimumDaysInFirstWeek({ locale = null, locObj = null } = {}) { + return (locObj || Locale.create(locale)).getMinDaysInFirstWeek(); + } + /** + * Get the weekdays, which are considered the weekend according to the given locale + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.locObj=null] - an existing locale object to use + * @returns {number[]} an array of weekdays, 1 for Monday through 7 for Sunday + */ + static getWeekendWeekdays({ locale = null, locObj = null } = {}) { + return (locObj || Locale.create(locale)).getWeekendDays().slice(); + } /** * Return an array of standalone month names. * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat @@ -16140,8 +18894,8 @@ var Info = class { * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I' * @return {Array} */ - static months(length = "long", { locale: locale2 = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) { - return (locObj || Locale.create(locale2, numberingSystem, outputCalendar)).months(length); + static months(length = "long", { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) { + return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length); } /** * Return an array of format month names. @@ -16156,8 +18910,8 @@ var Info = class { * @param {string} [opts.outputCalendar='gregory'] - the calendar * @return {Array} */ - static monthsFormat(length = "long", { locale: locale2 = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) { - return (locObj || Locale.create(locale2, numberingSystem, outputCalendar)).months(length, true); + static monthsFormat(length = "long", { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) { + return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true); } /** * Return an array of standalone week names. @@ -16173,8 +18927,8 @@ var Info = class { * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين' * @return {Array} */ - static weekdays(length = "long", { locale: locale2 = null, numberingSystem = null, locObj = null } = {}) { - return (locObj || Locale.create(locale2, numberingSystem, null)).weekdays(length); + static weekdays(length = "long", { locale = null, numberingSystem = null, locObj = null } = {}) { + return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length); } /** * Return an array of format week names. @@ -16188,8 +18942,8 @@ var Info = class { * @param {string} [opts.locObj=null] - an existing locale object to use * @return {Array} */ - static weekdaysFormat(length = "long", { locale: locale2 = null, numberingSystem = null, locObj = null } = {}) { - return (locObj || Locale.create(locale2, numberingSystem, null)).weekdays(length, true); + static weekdaysFormat(length = "long", { locale = null, numberingSystem = null, locObj = null } = {}) { + return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true); } /** * Return an array of meridiems. @@ -16199,8 +18953,8 @@ var Info = class { * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ] * @return {Array} */ - static meridiems({ locale: locale2 = null } = {}) { - return Locale.create(locale2).meridiems(); + static meridiems({ locale = null } = {}) { + return Locale.create(locale).meridiems(); } /** * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian. @@ -16212,19 +18966,20 @@ var Info = class { * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ] * @return {Array} */ - static eras(length = "short", { locale: locale2 = null } = {}) { - return Locale.create(locale2, null, "gregory").eras(length); + static eras(length = "short", { locale = null } = {}) { + return Locale.create(locale, null, "gregory").eras(length); } /** * Return the set of available features in this environment. * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case. * Keys: * * `relative`: whether this environment supports relative time formatting - * @example Info.features() //=> { relative: false } + * * `localeWeek`: whether this environment supports different weekdays for the start of the week based on the locale + * @example Info.features() //=> { relative: false, localeWeek: true } * @return {Object} */ static features() { - return { relative: hasRelative() }; + return { relative: hasRelative(), localeWeek: hasLocaleWeekInfo() }; } }; @@ -16235,32 +18990,37 @@ function dayDiff(earlier, later) { } function highOrderDiffs(cursor, later, units) { const differs = [ - ["years", (a2, b) => b.year - a2.year], - ["quarters", (a2, b) => b.quarter - a2.quarter], - ["months", (a2, b) => b.month - a2.month + (b.year - a2.year) * 12], + ["years", (a, b) => b.year - a.year], + ["quarters", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4], + ["months", (a, b) => b.month - a.month + (b.year - a.year) * 12], [ "weeks", - (a2, b) => { - const days = dayDiff(a2, b); + (a, b) => { + const days = dayDiff(a, b); return (days - days % 7) / 7; } ], ["days", dayDiff] ]; const results = {}; + const earlier = cursor; let lowestOrder, highWater; - for (const [unit2, differ] of differs) { - if (units.indexOf(unit2) >= 0) { - lowestOrder = unit2; - let delta = differ(cursor, later); - highWater = cursor.plus({ [unit2]: delta }); + for (const [unit, differ] of differs) { + if (units.indexOf(unit) >= 0) { + lowestOrder = unit; + results[unit] = differ(cursor, later); + highWater = earlier.plus(results); if (highWater > later) { - cursor = cursor.plus({ [unit2]: delta - 1 }); - delta -= 1; + results[unit]--; + cursor = earlier.plus(results); + if (cursor > later) { + highWater = cursor; + results[unit]--; + cursor = earlier.plus(results); + } } else { cursor = highWater; } - results[unit2] = delta; } } return [cursor, results, highWater, lowestOrder]; @@ -16343,9 +19103,9 @@ function parseDigits(str) { value += hanidecChars.indexOf(str[i]); } else { for (const key in numberingSystemsUTF16) { - const [min3, max4] = numberingSystemsUTF16[key]; - if (code >= min3 && code <= max4) { - value += code - min3; + const [min, max] = numberingSystemsUTF16[key]; + if (code >= min && code <= max) { + value += code - min; } } } @@ -16361,8 +19121,8 @@ function digitRegex({ numberingSystem }, append2 = "") { // node_modules/luxon/src/impl/tokenParser.js var MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support"; -function intUnit(regex, post = (i) => i) { - return { regex, deser: ([s2]) => post(parseDigits(s2)) }; +function intUnit(regex2, post = (i) => i) { + return { regex: regex2, deser: ([s2]) => post(parseDigits(s2)) }; } var NBSP = String.fromCharCode(160); var spaceOrNBSP = `[ ${NBSP}]`; @@ -16383,25 +19143,25 @@ function oneOf(strings, startIndex) { }; } } -function offset(regex, groups) { - return { regex, deser: ([, h, m2]) => signedOffset(h, m2), groups }; +function offset(regex2, groups) { + return { regex: regex2, deser: ([, h, m]) => signedOffset(h, m), groups }; } -function simple(regex) { - return { regex, deser: ([s2]) => s2 }; +function simple(regex2) { + return { regex: regex2, deser: ([s2]) => s2 }; } function escapeToken(value) { return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); } function unitForToken(token, loc) { - const one2 = digitRegex(loc), two = digitRegex(loc, "{2}"), three = digitRegex(loc, "{3}"), four = digitRegex(loc, "{4}"), six = digitRegex(loc, "{6}"), oneOrTwo = digitRegex(loc, "{1,2}"), oneToThree = digitRegex(loc, "{1,3}"), oneToSix = digitRegex(loc, "{1,6}"), oneToNine = digitRegex(loc, "{1,9}"), twoToFour = digitRegex(loc, "{2,4}"), fourToSix = digitRegex(loc, "{4,6}"), literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s2]) => s2, literal: true }), unitate = (t) => { + const one = digitRegex(loc), two = digitRegex(loc, "{2}"), three = digitRegex(loc, "{3}"), four = digitRegex(loc, "{4}"), six = digitRegex(loc, "{6}"), oneOrTwo = digitRegex(loc, "{1,2}"), oneToThree = digitRegex(loc, "{1,3}"), oneToSix = digitRegex(loc, "{1,6}"), oneToNine = digitRegex(loc, "{1,9}"), twoToFour = digitRegex(loc, "{2,4}"), fourToSix = digitRegex(loc, "{4,6}"), literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s2]) => s2, literal: true }), unitate = (t) => { if (token.literal) { return literal(t); } switch (t.val) { case "G": - return oneOf(loc.eras("short", false), 0); + return oneOf(loc.eras("short"), 0); case "GG": - return oneOf(loc.eras("long", false), 0); + return oneOf(loc.eras("long"), 0); case "y": return intUnit(oneToSix); case "yy": @@ -16417,17 +19177,17 @@ function unitForToken(token, loc) { case "MM": return intUnit(two); case "MMM": - return oneOf(loc.months("short", true, false), 1); + return oneOf(loc.months("short", true), 1); case "MMMM": - return oneOf(loc.months("long", true, false), 1); + return oneOf(loc.months("long", true), 1); case "L": return intUnit(oneOrTwo); case "LL": return intUnit(two); case "LLL": - return oneOf(loc.months("short", false, false), 1); + return oneOf(loc.months("short", false), 1); case "LLLL": - return oneOf(loc.months("long", false, false), 1); + return oneOf(loc.months("long", false), 1); case "d": return intUnit(oneOrTwo); case "dd": @@ -16465,7 +19225,7 @@ function unitForToken(token, loc) { case "uu": return simple(oneOrTwo); case "uuu": - return intUnit(one2); + return intUnit(one); case "a": return oneOf(loc.meridiems(), 0); case "kkkk": @@ -16478,15 +19238,15 @@ function unitForToken(token, loc) { return intUnit(two); case "E": case "c": - return intUnit(one2); + return intUnit(one); case "EEE": - return oneOf(loc.weekdays("short", false, false), 1); + return oneOf(loc.weekdays("short", false), 1); case "EEEE": - return oneOf(loc.weekdays("long", false, false), 1); + return oneOf(loc.weekdays("long", false), 1); case "ccc": - return oneOf(loc.weekdays("short", true, false), 1); + return oneOf(loc.weekdays("short", true), 1); case "cccc": - return oneOf(loc.weekdays("long", true, false), 1); + return oneOf(loc.weekdays("long", true), 1); case "Z": case "ZZ": return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2); @@ -16494,15 +19254,17 @@ function unitForToken(token, loc) { return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2); case "z": return simple(/[a-z_+-/]{1,256}?/i); + case " ": + return simple(/[^\S\n\r]/); default: return literal(t); } }; - const unit2 = unitate(token) || { + const unit = unitate(token) || { invalidReason: MISSING_FTP }; - unit2.token = token; - return unit2; + unit.token = token; + return unit; } var partTypeStyleToTokenVal = { year: { @@ -16525,10 +19287,14 @@ var partTypeStyleToTokenVal = { }, dayperiod: "a", dayPeriod: "a", - hour: { + hour12: { numeric: "h", "2-digit": "hh" }, + hour24: { + numeric: "H", + "2-digit": "HH" + }, minute: { numeric: "m", "2-digit": "mm" @@ -16536,18 +19302,37 @@ var partTypeStyleToTokenVal = { second: { numeric: "s", "2-digit": "ss" + }, + timeZoneName: { + long: "ZZZZZ", + short: "ZZZ" } }; -function tokenForPart(part, locale2, formatOpts) { - const { type: type2, value } = part; - if (type2 === "literal") { +function tokenForPart(part, formatOpts, resolvedOpts) { + const { type, value } = part; + if (type === "literal") { + const isSpace = /^\s+$/.test(value); return { - literal: true, - val: value + literal: !isSpace, + val: isSpace ? " " : value }; } - const style = formatOpts[type2]; - let val = partTypeStyleToTokenVal[type2]; + const style = formatOpts[type]; + let actualType = type; + if (type === "hour") { + if (formatOpts.hour12 != null) { + actualType = formatOpts.hour12 ? "hour12" : "hour24"; + } else if (formatOpts.hourCycle != null) { + if (formatOpts.hourCycle === "h11" || formatOpts.hourCycle === "h12") { + actualType = "hour12"; + } else { + actualType = "hour24"; + } + } else { + actualType = resolvedOpts.hour12 ? "hour12" : "hour24"; + } + } + let val = partTypeStyleToTokenVal[actualType]; if (typeof val === "object") { val = val[style]; } @@ -16560,11 +19345,11 @@ function tokenForPart(part, locale2, formatOpts) { return void 0; } function buildRegex(units) { - const re2 = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, ""); - return [`^${re2}$`, units]; + const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, ""); + return [`^${re}$`, units]; } -function match(input, regex, handlers) { - const matches = input.match(regex); +function match(input, regex2, handlers) { + const matches = input.match(regex2); if (matches) { const all = {}; let matchIndex = 1; @@ -16659,155 +19444,51 @@ function getDummyDateTime() { } return dummyDateTimeCache; } -function maybeExpandMacroToken(token, locale2) { +function maybeExpandMacroToken(token, locale) { if (token.literal) { return token; } const formatOpts = Formatter.macroTokenToFormatOpts(token.val); - if (!formatOpts) { - return token; - } - const formatter = Formatter.create(locale2, formatOpts); - const parts = formatter.formatDateTimeParts(getDummyDateTime()); - const tokens = parts.map((p) => tokenForPart(p, locale2, formatOpts)); - if (tokens.includes(void 0)) { + const tokens = formatOptsToTokens(formatOpts, locale); + if (tokens == null || tokens.includes(void 0)) { return token; } return tokens; } -function expandMacroTokens(tokens, locale2) { - return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale2))); +function expandMacroTokens(tokens, locale) { + return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale))); } -function explainFromTokens(locale2, input, format2) { - const tokens = expandMacroTokens(Formatter.parseFormat(format2), locale2), units = tokens.map((t) => unitForToken(t, locale2)), disqualifyingUnit = units.find((t) => t.invalidReason); +function explainFromTokens(locale, input, format) { + const tokens = expandMacroTokens(Formatter.parseFormat(format), locale), units = tokens.map((t) => unitForToken(t, locale)), disqualifyingUnit = units.find((t) => t.invalidReason); if (disqualifyingUnit) { return { input, tokens, invalidReason: disqualifyingUnit.invalidReason }; } else { - const [regexString, handlers] = buildRegex(units), regex = RegExp(regexString, "i"), [rawMatches, matches] = match(input, regex, handlers), [result, zone, specificOffset] = matches ? dateTimeFromMatches(matches) : [null, null, void 0]; + const [regexString, handlers] = buildRegex(units), regex2 = RegExp(regexString, "i"), [rawMatches, matches] = match(input, regex2, handlers), [result, zone, specificOffset] = matches ? dateTimeFromMatches(matches) : [null, null, void 0]; if (hasOwnProperty(matches, "a") && hasOwnProperty(matches, "H")) { throw new ConflictingSpecificationError( "Can't include meridiem when specifying 24-hour format" ); } - return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset }; + return { input, tokens, regex: regex2, rawMatches, matches, result, zone, specificOffset }; } } -function parseFromTokens(locale2, input, format2) { - const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale2, input, format2); +function parseFromTokens(locale, input, format) { + const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format); return [result, zone, specificOffset, invalidReason]; } - -// node_modules/luxon/src/impl/conversions.js -var nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; -var leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]; -function unitOutOfRange(unit2, value) { - return new Invalid( - "unit out of range", - `you specified ${value} (of type ${typeof value}) as a ${unit2}, which is invalid` - ); -} -function dayOfWeek(year, month, day) { - const d = new Date(Date.UTC(year, month - 1, day)); - if (year < 100 && year >= 0) { - d.setUTCFullYear(d.getUTCFullYear() - 1900); +function formatOptsToTokens(formatOpts, locale) { + if (!formatOpts) { + return null; } - const js = d.getUTCDay(); - return js === 0 ? 7 : js; -} -function computeOrdinal(year, month, day) { - return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1]; -} -function uncomputeOrdinal(year, ordinal2) { - const table = isLeapYear(year) ? leapLadder : nonLeapLadder, month0 = table.findIndex((i) => i < ordinal2), day = ordinal2 - table[month0]; - return { month: month0 + 1, day }; -} -function gregorianToWeek(gregObj) { - const { year, month, day } = gregObj, ordinal2 = computeOrdinal(year, month, day), weekday = dayOfWeek(year, month, day); - let weekNumber = Math.floor((ordinal2 - weekday + 10) / 7), weekYear; - if (weekNumber < 1) { - weekYear = year - 1; - weekNumber = weeksInWeekYear(weekYear); - } else if (weekNumber > weeksInWeekYear(year)) { - weekYear = year + 1; - weekNumber = 1; - } else { - weekYear = year; - } - return { weekYear, weekNumber, weekday, ...timeObject(gregObj) }; -} -function weekToGregorian(weekData) { - const { weekYear, weekNumber, weekday } = weekData, weekdayOfJan4 = dayOfWeek(weekYear, 1, 4), yearInDays = daysInYear(weekYear); - let ordinal2 = weekNumber * 7 + weekday - weekdayOfJan4 - 3, year; - if (ordinal2 < 1) { - year = weekYear - 1; - ordinal2 += daysInYear(year); - } else if (ordinal2 > yearInDays) { - year = weekYear + 1; - ordinal2 -= daysInYear(weekYear); - } else { - year = weekYear; - } - const { month, day } = uncomputeOrdinal(year, ordinal2); - return { year, month, day, ...timeObject(weekData) }; -} -function gregorianToOrdinal(gregData) { - const { year, month, day } = gregData; - const ordinal2 = computeOrdinal(year, month, day); - return { year, ordinal: ordinal2, ...timeObject(gregData) }; -} -function ordinalToGregorian(ordinalData) { - const { year, ordinal: ordinal2 } = ordinalData; - const { month, day } = uncomputeOrdinal(year, ordinal2); - return { year, month, day, ...timeObject(ordinalData) }; -} -function hasInvalidWeekData(obj) { - const validYear = isInteger(obj.weekYear), validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)), validWeekday = integerBetween(obj.weekday, 1, 7); - if (!validYear) { - return unitOutOfRange("weekYear", obj.weekYear); - } else if (!validWeek) { - return unitOutOfRange("week", obj.week); - } else if (!validWeekday) { - return unitOutOfRange("weekday", obj.weekday); - } else - return false; -} -function hasInvalidOrdinalData(obj) { - const validYear = isInteger(obj.year), validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year)); - if (!validYear) { - return unitOutOfRange("year", obj.year); - } else if (!validOrdinal) { - return unitOutOfRange("ordinal", obj.ordinal); - } else - return false; -} -function hasInvalidGregorianData(obj) { - const validYear = isInteger(obj.year), validMonth = integerBetween(obj.month, 1, 12), validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month)); - if (!validYear) { - return unitOutOfRange("year", obj.year); - } else if (!validMonth) { - return unitOutOfRange("month", obj.month); - } else if (!validDay) { - return unitOutOfRange("day", obj.day); - } else - return false; -} -function hasInvalidTimeData(obj) { - const { hour, minute, second, millisecond } = obj; - const validHour = integerBetween(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0, validMinute = integerBetween(minute, 0, 59), validSecond = integerBetween(second, 0, 59), validMillisecond = integerBetween(millisecond, 0, 999); - if (!validHour) { - return unitOutOfRange("hour", hour); - } else if (!validMinute) { - return unitOutOfRange("minute", minute); - } else if (!validSecond) { - return unitOutOfRange("second", second); - } else if (!validMillisecond) { - return unitOutOfRange("millisecond", millisecond); - } else - return false; + const formatter = Formatter.create(locale, formatOpts); + const df = formatter.dtFormatter(getDummyDateTime()); + const parts = df.formatToParts(); + const resolvedOpts = df.resolvedOptions(); + return parts.map((p) => tokenForPart(p, formatOpts, resolvedOpts)); } // node_modules/luxon/src/datetime.js -var INVALID3 = "Invalid DateTime"; +var INVALID4 = "Invalid DateTime"; var MAX_DATE = 864e13; function unsupportedZone(zone) { return new Invalid("unsupported zone", `the zone "${zone.name}" is not supported`); @@ -16818,6 +19499,16 @@ function possiblyCachedWeekData(dt) { } return dt.weekData; } +function possiblyCachedLocalWeekData(dt) { + if (dt.localWeekData === null) { + dt.localWeekData = gregorianToWeek( + dt.c, + dt.loc.getMinDaysInFirstWeek(), + dt.loc.getStartOfWeek() + ); + } + return dt.localWeekData; +} function clone2(inst, alts) { const current = { ts: inst.ts, @@ -16859,7 +19550,7 @@ function objToTS(obj, offset2, zone) { return fixOffset(objToLocalTS(obj), offset2, zone); } function adjustTime(inst, dur) { - const oPre = inst.o, year = inst.c.year + Math.trunc(dur.years), month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3, c3 = { + const oPre = inst.o, year = inst.c.year + Math.trunc(dur.years), month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3, c = { ...inst.c, year, month, @@ -16874,7 +19565,7 @@ function adjustTime(inst, dur) { minutes: dur.minutes, seconds: dur.seconds, milliseconds: dur.milliseconds - }).as("milliseconds"), localTS = objToLocalTS(c3); + }).as("milliseconds"), localTS = objToLocalTS(c); let [ts, o] = fixOffset(localTS, oPre, inst.zone); if (millisToAdd !== 0) { ts += millisToAdd; @@ -16882,9 +19573,9 @@ function adjustTime(inst, dur) { } return { ts, o }; } -function parseDataToDateTime(parsed, parsedZone, opts, format2, text2, specificOffset) { +function parseDataToDateTime(parsed, parsedZone, opts, format, text2, specificOffset) { const { setZone, zone } = opts; - if (parsed && Object.keys(parsed).length !== 0) { + if (parsed && Object.keys(parsed).length !== 0 || parsedZone) { const interpretationZone = parsedZone || zone, inst = DateTime.fromObject(parsed, { ...opts, zone: interpretationZone, @@ -16893,70 +19584,70 @@ function parseDataToDateTime(parsed, parsedZone, opts, format2, text2, specificO return setZone ? inst : inst.setZone(zone); } else { return DateTime.invalid( - new Invalid("unparsable", `the input "${text2}" can't be parsed as ${format2}`) + new Invalid("unparsable", `the input "${text2}" can't be parsed as ${format}`) ); } } -function toTechFormat(dt, format2, allowZ = true) { +function toTechFormat(dt, format, allowZ = true) { return dt.isValid ? Formatter.create(Locale.create("en-US"), { allowZ, forceSimple: true - }).formatDateTimeFromString(dt, format2) : null; + }).formatDateTimeFromString(dt, format) : null; } function toISODate(o, extended) { const longFormat = o.c.year > 9999 || o.c.year < 0; - let c3 = ""; + let c = ""; if (longFormat && o.c.year >= 0) - c3 += "+"; - c3 += padStart(o.c.year, longFormat ? 6 : 4); + c += "+"; + c += padStart(o.c.year, longFormat ? 6 : 4); if (extended) { - c3 += "-"; - c3 += padStart(o.c.month); - c3 += "-"; - c3 += padStart(o.c.day); + c += "-"; + c += padStart(o.c.month); + c += "-"; + c += padStart(o.c.day); } else { - c3 += padStart(o.c.month); - c3 += padStart(o.c.day); + c += padStart(o.c.month); + c += padStart(o.c.day); } - return c3; + return c; } function toISOTime(o, extended, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone) { - let c3 = padStart(o.c.hour); + let c = padStart(o.c.hour); if (extended) { - c3 += ":"; - c3 += padStart(o.c.minute); - if (o.c.second !== 0 || !suppressSeconds) { - c3 += ":"; + c += ":"; + c += padStart(o.c.minute); + if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) { + c += ":"; } } else { - c3 += padStart(o.c.minute); + c += padStart(o.c.minute); } - if (o.c.second !== 0 || !suppressSeconds) { - c3 += padStart(o.c.second); + if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) { + c += padStart(o.c.second); if (o.c.millisecond !== 0 || !suppressMilliseconds) { - c3 += "."; - c3 += padStart(o.c.millisecond, 3); + c += "."; + c += padStart(o.c.millisecond, 3); } } if (includeOffset) { if (o.isOffsetFixed && o.offset === 0 && !extendedZone) { - c3 += "Z"; + c += "Z"; } else if (o.o < 0) { - c3 += "-"; - c3 += padStart(Math.trunc(-o.o / 60)); - c3 += ":"; - c3 += padStart(Math.trunc(-o.o % 60)); + c += "-"; + c += padStart(Math.trunc(-o.o / 60)); + c += ":"; + c += padStart(Math.trunc(-o.o % 60)); } else { - c3 += "+"; - c3 += padStart(Math.trunc(o.o / 60)); - c3 += ":"; - c3 += padStart(Math.trunc(o.o % 60)); + c += "+"; + c += padStart(Math.trunc(o.o / 60)); + c += ":"; + c += padStart(Math.trunc(o.o % 60)); } } if (extendedZone) { - c3 += "[" + o.zone.ianaName + "]"; + c += "[" + o.zone.ianaName + "]"; } - return c3; + return c; } var defaultUnitValues = { month: 1, @@ -16992,7 +19683,7 @@ var orderedWeekUnits = [ "millisecond" ]; var orderedOrdinalUnits = ["year", "ordinal", "hour", "minute", "second", "millisecond"]; -function normalizeUnit(unit2) { +function normalizeUnit(unit) { const normalized = { year: "year", years: "year", @@ -17018,11 +19709,26 @@ function normalizeUnit(unit2) { weekyear: "weekYear", weekyears: "weekYear", ordinal: "ordinal" - }[unit2.toLowerCase()]; + }[unit.toLowerCase()]; if (!normalized) - throw new InvalidUnitError(unit2); + throw new InvalidUnitError(unit); return normalized; } +function normalizeUnitWithLocalWeeks(unit) { + switch (unit.toLowerCase()) { + case "localweekday": + case "localweekdays": + return "localWeekday"; + case "localweeknumber": + case "localweeknumbers": + return "localWeekNumber"; + case "localweekyear": + case "localweekyears": + return "localWeekYear"; + default: + return normalizeUnit(unit); + } +} function quickDT(obj, opts) { const zone = normalizeZone(opts.zone, Settings.defaultZone), loc = Locale.fromObject(opts), tsNow = Settings.now(); let ts, o; @@ -17043,31 +19749,31 @@ function quickDT(obj, opts) { } return new DateTime({ ts, zone, loc, o }); } -function diffRelative(start2, end, opts) { - const round = isUndefined(opts.round) ? true : opts.round, format2 = (c3, unit2) => { - c3 = roundTo(c3, round || opts.calendary ? 0 : 2, true); +function diffRelative(start, end, opts) { + const round = isUndefined(opts.round) ? true : opts.round, format = (c, unit) => { + c = roundTo(c, round || opts.calendary ? 0 : 2, true); const formatter = end.loc.clone(opts).relFormatter(opts); - return formatter.format(c3, unit2); - }, differ = (unit2) => { + return formatter.format(c, unit); + }, differ = (unit) => { if (opts.calendary) { - if (!end.hasSame(start2, unit2)) { - return end.startOf(unit2).diff(start2.startOf(unit2), unit2).get(unit2); + if (!end.hasSame(start, unit)) { + return end.startOf(unit).diff(start.startOf(unit), unit).get(unit); } else return 0; } else { - return end.diff(start2, unit2).get(unit2); + return end.diff(start, unit).get(unit); } }; if (opts.unit) { - return format2(differ(opts.unit), opts.unit); + return format(differ(opts.unit), opts.unit); } - for (const unit2 of opts.units) { - const count2 = differ(unit2); - if (Math.abs(count2) >= 1) { - return format2(count2, unit2); + for (const unit of opts.units) { + const count = differ(unit); + if (Math.abs(count) >= 1) { + return format(count, unit); } } - return format2(start2 > end ? -0 : 0, opts.units[opts.units.length - 1]); + return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]); } function lastOpts(argList) { let opts = {}, args; @@ -17079,7 +19785,7 @@ function lastOpts(argList) { } return [opts, args]; } -var DateTime = class { +var DateTime = class _DateTime { /** * @access private */ @@ -17087,16 +19793,16 @@ var DateTime = class { const zone = config.zone || Settings.defaultZone; let invalid = config.invalid || (Number.isNaN(config.ts) ? new Invalid("invalid input") : null) || (!zone.isValid ? unsupportedZone(zone) : null); this.ts = isUndefined(config.ts) ? Settings.now() : config.ts; - let c3 = null, o = null; + let c = null, o = null; if (!invalid) { const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone); if (unchanged) { - [c3, o] = [config.old.c, config.old.o]; + [c, o] = [config.old.c, config.old.o]; } else { const ot = zone.offset(this.ts); - c3 = tsToObj(this.ts, ot); - invalid = Number.isNaN(c3.year) ? new Invalid("invalid input") : null; - c3 = invalid ? null : c3; + c = tsToObj(this.ts, ot); + invalid = Number.isNaN(c.year) ? new Invalid("invalid input") : null; + c = invalid ? null : c; o = invalid ? null : ot; } } @@ -17104,7 +19810,8 @@ var DateTime = class { this.loc = config.loc || Locale.create(); this.invalid = invalid; this.weekData = null; - this.c = c3; + this.localWeekData = null; + this.c = c; this.o = o; this.isLuxonDateTime = true; } @@ -17117,7 +19824,7 @@ var DateTime = class { * @return {DateTime} */ static now() { - return new DateTime({}); + return new _DateTime({}); } /** * Create a local DateTime @@ -17183,13 +19890,13 @@ var DateTime = class { static fromJSDate(date, options = {}) { const ts = isDate(date) ? date.valueOf() : NaN; if (Number.isNaN(ts)) { - return DateTime.invalid("invalid input"); + return _DateTime.invalid("invalid input"); } const zoneToUse = normalizeZone(options.zone, Settings.defaultZone); if (!zoneToUse.isValid) { - return DateTime.invalid(unsupportedZone(zoneToUse)); + return _DateTime.invalid(unsupportedZone(zoneToUse)); } - return new DateTime({ + return new _DateTime({ ts, zone: zoneToUse, loc: Locale.fromObject(options) @@ -17211,9 +19918,9 @@ var DateTime = class { `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}` ); } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) { - return DateTime.invalid("Timestamp out of range"); + return _DateTime.invalid("Timestamp out of range"); } else { - return new DateTime({ + return new _DateTime({ ts: milliseconds, zone: normalizeZone(options.zone, Settings.defaultZone), loc: Locale.fromObject(options) @@ -17234,7 +19941,7 @@ var DateTime = class { if (!isNumber(seconds)) { throw new InvalidArgumentError("fromSeconds requires a numerical input"); } else { - return new DateTime({ + return new _DateTime({ ts: seconds * 1e3, zone: normalizeZone(options.zone, Settings.defaultZone), loc: Locale.fromObject(options) @@ -17251,13 +19958,16 @@ var DateTime = class { * @param {number} obj.weekYear - an ISO week year * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday + * @param {number} obj.localWeekYear - a week year, according to the locale + * @param {number} obj.localWeekNumber - a week number, between 1 and 52 or 53, depending on the year, according to the locale + * @param {number} obj.localWeekday - a weekday, 1-7, where 1 is the first and 7 is the last day of the week, according to the locale * @param {number} obj.hour - hour of the day, 0-23 * @param {number} obj.minute - minute of the hour, 0-59 * @param {number} obj.second - second of the minute, 0-59 * @param {number} obj.millisecond - millisecond of the second, 0-999 * @param {Object} opts - options for creating this DateTime * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone() - * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} [opts.locale='system\'s locale'] - a locale to set on the resulting DateTime instance * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25' @@ -17267,15 +19977,19 @@ var DateTime = class { * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' }) * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' }) * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13' + * @example DateTime.fromObject({ localWeekYear: 2022, localWeekNumber: 1, localWeekday: 1 }, { locale: "en-US" }).toISODate() //=> '2021-12-26' * @return {DateTime} */ static fromObject(obj, opts = {}) { obj = obj || {}; const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone); if (!zoneToUse.isValid) { - return DateTime.invalid(unsupportedZone(zoneToUse)); + return _DateTime.invalid(unsupportedZone(zoneToUse)); } - const tsNow = Settings.now(), offsetProvis = !isUndefined(opts.specificOffset) ? opts.specificOffset : zoneToUse.offset(tsNow), normalized = normalizeObject(obj, normalizeUnit), containsOrdinal = !isUndefined(normalized.ordinal), containsGregorYear = !isUndefined(normalized.year), containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber, loc = Locale.fromObject(opts); + const loc = Locale.fromObject(opts); + const normalized = normalizeObject(obj, normalizeUnitWithLocalWeeks); + const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, loc); + const tsNow = Settings.now(), offsetProvis = !isUndefined(opts.specificOffset) ? opts.specificOffset : zoneToUse.offset(tsNow), containsOrdinal = !isUndefined(normalized.ordinal), containsGregorYear = !isUndefined(normalized.year), containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber; if ((containsGregor || containsOrdinal) && definiteWeekDef) { throw new ConflictingSpecificationError( "Can't mix weekYear/weekNumber units with year/month/day or ordinals" @@ -17289,7 +20003,7 @@ var DateTime = class { if (useWeekData) { units = orderedWeekUnits; defaultValues = defaultWeekUnitValues; - objNow = gregorianToWeek(objNow); + objNow = gregorianToWeek(objNow, minDaysInFirstWeek, startOfWeek); } else if (containsOrdinal) { units = orderedOrdinalUnits; defaultValues = defaultOrdinalUnitValues; @@ -17309,18 +20023,18 @@ var DateTime = class { normalized[u] = objNow[u]; } } - const higherOrderInvalid = useWeekData ? hasInvalidWeekData(normalized) : containsOrdinal ? hasInvalidOrdinalData(normalized) : hasInvalidGregorianData(normalized), invalid = higherOrderInvalid || hasInvalidTimeData(normalized); + const higherOrderInvalid = useWeekData ? hasInvalidWeekData(normalized, minDaysInFirstWeek, startOfWeek) : containsOrdinal ? hasInvalidOrdinalData(normalized) : hasInvalidGregorianData(normalized), invalid = higherOrderInvalid || hasInvalidTimeData(normalized); if (invalid) { - return DateTime.invalid(invalid); + return _DateTime.invalid(invalid); } - const gregorian = useWeekData ? weekToGregorian(normalized) : containsOrdinal ? ordinalToGregorian(normalized) : normalized, [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse), inst = new DateTime({ + const gregorian = useWeekData ? weekToGregorian(normalized, minDaysInFirstWeek, startOfWeek) : containsOrdinal ? ordinalToGregorian(normalized) : normalized, [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse), inst = new _DateTime({ ts: tsFinal, zone: zoneToUse, o: offsetFinal, loc }); if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) { - return DateTime.invalid( + return _DateTime.invalid( "mismatched weekday", `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}` ); @@ -17401,13 +20115,13 @@ var DateTime = class { if (isUndefined(text2) || isUndefined(fmt)) { throw new InvalidArgumentError("fromFormat requires an input string and a format"); } - const { locale: locale2 = null, numberingSystem = null } = opts, localeToUse = Locale.fromOpts({ - locale: locale2, + const { locale = null, numberingSystem = null } = opts, localeToUse = Locale.fromOpts({ + locale, numberingSystem, defaultToEN: true }), [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text2, fmt); if (invalid) { - return DateTime.invalid(invalid); + return _DateTime.invalid(invalid); } else { return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text2, specificOffset); } @@ -17416,7 +20130,7 @@ var DateTime = class { * @deprecated use fromFormat instead */ static fromString(text2, fmt, opts = {}) { - return DateTime.fromFormat(text2, fmt, opts); + return _DateTime.fromFormat(text2, fmt, opts); } /** * Create a DateTime from a SQL date, time, or datetime @@ -17444,7 +20158,7 @@ var DateTime = class { } /** * Create an invalid DateTime. - * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent + * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent. * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information * @return {DateTime} */ @@ -17456,7 +20170,7 @@ var DateTime = class { if (Settings.throwOnInvalid) { throw new InvalidDateTimeError(invalid); } else { - return new DateTime({ invalid }); + return new _DateTime({ invalid }); } } /** @@ -17467,6 +20181,27 @@ var DateTime = class { static isDateTime(o) { return o && o.isLuxonDateTime || false; } + /** + * Produce the format string for a set of options + * @param formatOpts + * @param localeOpts + * @returns {string} + */ + static parseFormatForOpts(formatOpts, localeOpts = {}) { + const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts)); + return !tokenList ? null : tokenList.map((t) => t ? t.val : null).join(""); + } + /** + * Produce the the fully expanded format token for the locale + * Does NOT quote characters, so quoted tokens will not round trip correctly + * @param fmt + * @param localeOpts + * @returns {string} + */ + static expandFormat(fmt, localeOpts = {}) { + const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts)); + return expanded.map((t) => t.val).join(""); + } // INFO /** * Get the value of unit. @@ -17475,8 +20210,8 @@ var DateTime = class { * @example DateTime.local(2017, 7, 4).get('day'); //=> 4 * @return {number} */ - get(unit2) { - return this[unit2]; + get(unit) { + return this[unit]; } /** * Returns whether the DateTime is valid. Invalid DateTimes occur when: @@ -17631,6 +20366,39 @@ var DateTime = class { get weekday() { return this.isValid ? possiblyCachedWeekData(this).weekday : NaN; } + /** + * Returns true if this date is on a weekend according to the locale, false otherwise + * @returns {boolean} + */ + get isWeekend() { + return this.isValid && this.loc.getWeekendDays().includes(this.weekday); + } + /** + * Get the day of the week according to the locale. + * 1 is the first day of the week and 7 is the last day of the week. + * If the locale assigns Sunday as the first day of the week, then a date which is a Sunday will return 1, + * @returns {number} + */ + get localWeekday() { + return this.isValid ? possiblyCachedLocalWeekData(this).weekday : NaN; + } + /** + * Get the week number of the week year according to the locale. Different locales assign week numbers differently, + * because the week can start on different days of the week (see localWeekday) and because a different number of days + * is required for a week to count as the first week of a year. + * @returns {number} + */ + get localWeekNumber() { + return this.isValid ? possiblyCachedLocalWeekData(this).weekNumber : NaN; + } + /** + * Get the week year according to the locale. Different locales assign week numbers (and therefor week years) + * differently, see localWeekNumber. + * @returns {number} + */ + get localWeekYear() { + return this.isValid ? possiblyCachedLocalWeekData(this).weekYear : NaN; + } /** * Get the ordinal (meaning the day of the year) * @example DateTime.local(2017, 5, 25).ordinal //=> 145 @@ -17732,6 +20500,36 @@ var DateTime = class { return this.offset > this.set({ month: 1, day: 1 }).offset || this.offset > this.set({ month: 5 }).offset; } } + /** + * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC + * in this DateTime's zone. During DST changes local time can be ambiguous, for example + * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`. + * This method will return both possible DateTimes if this DateTime's local time is ambiguous. + * @returns {DateTime[]} + */ + getPossibleOffsets() { + if (!this.isValid || this.isOffsetFixed) { + return [this]; + } + const dayMs = 864e5; + const minuteMs = 6e4; + const localTS = objToLocalTS(this.c); + const oEarlier = this.zone.offset(localTS - dayMs); + const oLater = this.zone.offset(localTS + dayMs); + const o1 = this.zone.offset(localTS - oEarlier * minuteMs); + const o2 = this.zone.offset(localTS - oLater * minuteMs); + if (o1 === o2) { + return [this]; + } + const ts1 = localTS - o1 * minuteMs; + const ts2 = localTS - o2 * minuteMs; + const c1 = tsToObj(ts1, o1); + const c2 = tsToObj(ts2, o2); + if (c1.hour === c2.hour && c1.minute === c2.minute && c1.second === c2.second && c1.millisecond === c2.millisecond) { + return [clone2(this, { ts: ts1 }), clone2(this, { ts: ts2 })]; + } + return [this]; + } /** * Returns true if this DateTime is in a leap year, false otherwise * @example DateTime.local(2016).isInLeapYear //=> true @@ -17769,6 +20567,19 @@ var DateTime = class { get weeksInWeekYear() { return this.isValid ? weeksInWeekYear(this.weekYear) : NaN; } + /** + * Returns the number of weeks in this DateTime's local week year + * @example DateTime.local(2020, 6, {locale: 'en-US'}).weeksInLocalWeekYear //=> 52 + * @example DateTime.local(2020, 6, {locale: 'de-DE'}).weeksInLocalWeekYear //=> 53 + * @type {number} + */ + get weeksInLocalWeekYear() { + return this.isValid ? weeksInWeekYear( + this.localWeekYear, + this.loc.getMinDaysInFirstWeek(), + this.loc.getStartOfWeek() + ) : NaN; + } /** * Returns the resolved Intl options for this DateTime. * This is useful in understanding the behavior of formatting methods @@ -17776,11 +20587,11 @@ var DateTime = class { * @return {Object} */ resolvedLocaleOptions(opts = {}) { - const { locale: locale2, numberingSystem, calendar } = Formatter.create( + const { locale, numberingSystem, calendar } = Formatter.create( this.loc.clone(opts), opts ).resolvedOptions(this); - return { locale: locale2, numberingSystem, outputCalendar: calendar }; + return { locale, numberingSystem, outputCalendar: calendar }; } // TRANSFORM /** @@ -17817,7 +20628,7 @@ var DateTime = class { if (zone.equals(this.zone)) { return this; } else if (!zone.isValid) { - return DateTime.invalid(unsupportedZone(zone)); + return _DateTime.invalid(unsupportedZone(zone)); } else { let newTS = this.ts; if (keepLocalTime || keepCalendarTime) { @@ -17834,8 +20645,8 @@ var DateTime = class { * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' }) * @return {DateTime} */ - reconfigure({ locale: locale2, numberingSystem, outputCalendar } = {}) { - const loc = this.loc.clone({ locale: locale2, numberingSystem, outputCalendar }); + reconfigure({ locale, numberingSystem, outputCalendar } = {}) { + const loc = this.loc.clone({ locale, numberingSystem, outputCalendar }); return clone2(this, { loc }); } /** @@ -17844,12 +20655,15 @@ var DateTime = class { * @example DateTime.local(2017, 5, 25).setLocale('en-GB') * @return {DateTime} */ - setLocale(locale2) { - return this.reconfigure({ locale: locale2 }); + setLocale(locale) { + return this.reconfigure({ locale }); } /** * "Set" the values of specified units. Returns a newly-constructed DateTime. * You can only set units with this method; for "setting" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}. + * + * This method also supports setting locale-based week units, i.e. `localWeekday`, `localWeekNumber` and `localWeekYear`. + * They cannot be mixed with ISO-week units like `weekday`. * @param {Object} values - a mapping of units to numbers * @example dt.set({ year: 2017 }) * @example dt.set({ hour: 8, minute: 30 }) @@ -17860,7 +20674,9 @@ var DateTime = class { set(values) { if (!this.isValid) return this; - const normalized = normalizeObject(values, normalizeUnit), settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday), containsOrdinal = !isUndefined(normalized.ordinal), containsGregorYear = !isUndefined(normalized.year), containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber; + const normalized = normalizeObject(values, normalizeUnitWithLocalWeeks); + const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, this.loc); + const settingWeekStuff = !isUndefined(normalized.weekYear) || !isUndefined(normalized.weekNumber) || !isUndefined(normalized.weekday), containsOrdinal = !isUndefined(normalized.ordinal), containsGregorYear = !isUndefined(normalized.year), containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber; if ((containsGregor || containsOrdinal) && definiteWeekDef) { throw new ConflictingSpecificationError( "Can't mix weekYear/weekNumber units with year/month/day or ordinals" @@ -17871,7 +20687,11 @@ var DateTime = class { } let mixed; if (settingWeekStuff) { - mixed = weekToGregorian({ ...gregorianToWeek(this.c), ...normalized }); + mixed = weekToGregorian( + { ...gregorianToWeek(this.c, minDaysInFirstWeek, startOfWeek), ...normalized }, + minDaysInFirstWeek, + startOfWeek + ); } else if (!isUndefined(normalized.ordinal)) { mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized }); } else { @@ -17917,6 +20737,8 @@ var DateTime = class { /** * "Set" this DateTime to the beginning of a unit of time. * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'. + * @param {Object} opts - options + * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01' * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01' * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays @@ -17924,10 +20746,10 @@ var DateTime = class { * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00' * @return {DateTime} */ - startOf(unit2) { + startOf(unit, { useLocaleWeeks = false } = {}) { if (!this.isValid) return this; - const o = {}, normalizedUnit = Duration.normalizeUnit(unit2); + const o = {}, normalizedUnit = Duration.normalizeUnit(unit); switch (normalizedUnit) { case "years": o.month = 1; @@ -17948,7 +20770,16 @@ var DateTime = class { break; } if (normalizedUnit === "weeks") { - o.weekday = 1; + if (useLocaleWeeks) { + const startOfWeek = this.loc.getStartOfWeek(); + const { weekday } = this; + if (weekday < startOfWeek) { + o.weekNumber = this.weekNumber - 1; + } + o.weekday = startOfWeek; + } else { + o.weekday = 1; + } } if (normalizedUnit === "quarters") { const q = Math.ceil(this.month / 3); @@ -17959,6 +20790,8 @@ var DateTime = class { /** * "Set" this DateTime to the end (meaning the last millisecond) of a unit of time * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'. + * @param {Object} opts - options + * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00' * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00' * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays @@ -17966,8 +20799,8 @@ var DateTime = class { * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00' * @return {DateTime} */ - endOf(unit2) { - return this.isValid ? this.plus({ [unit2]: 1 }).startOf(unit2).minus(1) : this; + endOf(unit, opts) { + return this.isValid ? this.plus({ [unit]: 1 }).startOf(unit, opts).minus(1) : this; } // OUTPUT /** @@ -17983,7 +20816,7 @@ var DateTime = class { * @return {string} */ toFormat(fmt, opts = {}) { - return this.isValid ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt) : INVALID3; + return this.isValid ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt) : INVALID4; } /** * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`. @@ -17995,8 +20828,8 @@ var DateTime = class { * @param {Object} opts - opts to override the configuration options on this DateTime * @example DateTime.now().toLocaleString(); //=> 4/20/2017 * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017' - * @example DateTime.now().toLocaleString({ locale: 'en-gb' }); //=> '20/04/2017' * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017' + * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022' * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM' * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM' * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20' @@ -18005,7 +20838,7 @@ var DateTime = class { * @return {string} */ toLocaleString(formatOpts = DATE_SHORT, opts = {}) { - return this.isValid ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this) : INVALID3; + return this.isValid ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this) : INVALID4; } /** * Returns an array of format "parts", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output. @@ -18029,7 +20862,7 @@ var DateTime = class { * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0 * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0 * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' - * @param {boolean} [opts.extendedZone=true] - add the time zone format extension + * @param {boolean} [opts.extendedZone=false] - add the time zone format extension * @param {string} [opts.format='extended'] - choose between the basic and extended format * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z' * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00' @@ -18038,7 +20871,7 @@ var DateTime = class { * @return {string} */ toISO({ - format: format2 = "extended", + format = "extended", suppressSeconds = false, suppressMilliseconds = false, includeOffset = true, @@ -18047,11 +20880,11 @@ var DateTime = class { if (!this.isValid) { return null; } - const ext = format2 === "extended"; - let c3 = toISODate(this, ext); - c3 += "T"; - c3 += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone); - return c3; + const ext = format === "extended"; + let c = toISODate(this, ext); + c += "T"; + c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone); + return c; } /** * Returns an ISO 8601-compliant string representation of this DateTime's date component @@ -18061,11 +20894,11 @@ var DateTime = class { * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525' * @return {string} */ - toISODate({ format: format2 = "extended" } = {}) { + toISODate({ format = "extended" } = {}) { if (!this.isValid) { return null; } - return toISODate(this, format2 === "extended"); + return toISODate(this, format === "extended"); } /** * Returns an ISO 8601-compliant string representation of this DateTime's week date @@ -18096,15 +20929,15 @@ var DateTime = class { includeOffset = true, includePrefix = false, extendedZone = false, - format: format2 = "extended" + format = "extended" } = {}) { if (!this.isValid) { return null; } - let c3 = includePrefix ? "T" : ""; - return c3 + toISOTime( + let c = includePrefix ? "T" : ""; + return c + toISOTime( this, - format2 === "extended", + format === "extended", suppressSeconds, suppressMilliseconds, includeOffset, @@ -18191,7 +21024,18 @@ var DateTime = class { * @return {string} */ toString() { - return this.isValid ? this.toISO() : INVALID3; + return this.isValid ? this.toISO() : INVALID4; + } + /** + * Returns a string representation of this DateTime appropriate for the REPL. + * @return {string} + */ + [Symbol.for("nodejs.util.inspect.custom")]() { + if (this.isValid) { + return `DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`; + } else { + return `DateTime { Invalid, reason: ${this.invalidReason} }`; + } } /** * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis} @@ -18276,12 +21120,12 @@ var DateTime = class { * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 } * @return {Duration} */ - diff(otherDateTime, unit2 = "milliseconds", opts = {}) { + diff(otherDateTime, unit = "milliseconds", opts = {}) { if (!this.isValid || !otherDateTime.isValid) { return Duration.invalid("created by diffing an invalid DateTime"); } const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts }; - const units = maybeArray(unit2).map(Duration.normalizeUnit), otherIsLater = otherDateTime.valueOf() > this.valueOf(), earlier = otherIsLater ? this : otherDateTime, later = otherIsLater ? otherDateTime : this, diffed = diff_default(earlier, later, units, durOpts); + const units = maybeArray(unit).map(Duration.normalizeUnit), otherIsLater = otherDateTime.valueOf() > this.valueOf(), earlier = otherIsLater ? this : otherDateTime, later = otherIsLater ? otherDateTime : this, diffed = diff_default(earlier, later, units, durOpts); return otherIsLater ? diffed.negate() : diffed; } /** @@ -18292,8 +21136,8 @@ var DateTime = class { * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use * @return {Duration} */ - diffNow(unit2 = "milliseconds", opts = {}) { - return this.diff(DateTime.now(), unit2, opts); + diffNow(unit = "milliseconds", opts = {}) { + return this.diff(_DateTime.now(), unit, opts); } /** * Return an Interval spanning between this DateTime and another DateTime @@ -18309,19 +21153,21 @@ var DateTime = class { * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed. * @param {DateTime} otherDateTime - the other DateTime * @param {string} unit - the unit of time to check sameness on + * @param {Object} opts - options + * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; only the locale of this DateTime is used * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day * @return {boolean} */ - hasSame(otherDateTime, unit2) { + hasSame(otherDateTime, unit, opts) { if (!this.isValid) return false; const inputMs = otherDateTime.valueOf(); const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true }); - return adjustedToZone.startOf(unit2) <= inputMs && inputMs <= adjustedToZone.endOf(unit2); + return adjustedToZone.startOf(unit, opts) <= inputMs && inputMs <= adjustedToZone.endOf(unit, opts); } /** * Equality check - * Two DateTimes are equal iff they represent the same millisecond, have the same zone and location, and are both valid. + * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid. * To compare just the millisecond values, use `+dt1 === +dt2`. * @param {DateTime} other - the other DateTime * @return {boolean} @@ -18350,18 +21196,18 @@ var DateTime = class { toRelative(options = {}) { if (!this.isValid) return null; - const base = options.base || DateTime.fromObject({}, { zone: this.zone }), padding = options.padding ? this < base ? -options.padding : options.padding : 0; + const base = options.base || _DateTime.fromObject({}, { zone: this.zone }), padding = options.padding ? this < base ? -options.padding : options.padding : 0; let units = ["years", "months", "days", "hours", "minutes", "seconds"]; - let unit2 = options.unit; + let unit = options.unit; if (Array.isArray(options.unit)) { units = options.unit; - unit2 = void 0; + unit = void 0; } return diffRelative(base, this.plus(padding), { ...options, numeric: "always", units, - unit: unit2 + unit }); } /** @@ -18380,7 +21226,7 @@ var DateTime = class { toRelativeCalendar(options = {}) { if (!this.isValid) return null; - return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, { + return diffRelative(options.base || _DateTime.fromObject({}, { zone: this.zone }), this, { ...options, numeric: "auto", units: ["years", "months", "days"], @@ -18393,7 +21239,7 @@ var DateTime = class { * @return {DateTime} the min DateTime, or undefined if called with no argument */ static min(...dateTimes) { - if (!dateTimes.every(DateTime.isDateTime)) { + if (!dateTimes.every(_DateTime.isDateTime)) { throw new InvalidArgumentError("min requires all arguments be DateTimes"); } return bestBy(dateTimes, (i) => i.valueOf(), Math.min); @@ -18404,7 +21250,7 @@ var DateTime = class { * @return {DateTime} the max DateTime, or undefined if called with no argument */ static max(...dateTimes) { - if (!dateTimes.every(DateTime.isDateTime)) { + if (!dateTimes.every(_DateTime.isDateTime)) { throw new InvalidArgumentError("max requires all arguments be DateTimes"); } return bestBy(dateTimes, (i) => i.valueOf(), Math.max); @@ -18418,8 +21264,8 @@ var DateTime = class { * @return {Object} */ static fromFormatExplain(text2, fmt, options = {}) { - const { locale: locale2 = null, numberingSystem = null } = options, localeToUse = Locale.fromOpts({ - locale: locale2, + const { locale = null, numberingSystem = null } = options, localeToUse = Locale.fromOpts({ + locale, numberingSystem, defaultToEN: true }); @@ -18429,7 +21275,7 @@ var DateTime = class { * @deprecated use fromFormatExplain instead */ static fromStringExplain(text2, fmt, options = {}) { - return DateTime.fromFormatExplain(text2, fmt, options); + return _DateTime.fromFormatExplain(text2, fmt, options); } // FORMAT PRESETS /** @@ -18601,871 +21447,2374 @@ function friendlyDateTime(dateTimeish) { } } -// src/AlternativeHierarchies/DateNotes.ts -function addDateNotesToGraph(plugin, frontms, mainG) { - const { settings } = plugin; - const { - addDateNotes, - dateNoteAddMonth, - dateNoteAddYear, - dateNoteFormat, - dateNoteField - } = settings; - if (!addDateNotes) - return; - const { regex } = DateTime.fromFormatExplain("", dateNoteFormat); - frontms.forEach((page) => { - const { file } = page; - const { day } = file; - if (!day || !regex.test(getDVBasename(file))) - return; - const today = getDVBasename(file); - const tomorrow = day.plus({ days: 1 }); - const tomStr = tomorrow.toFormat(dateNoteFormat); - populateMain( - settings, - mainG, - today, - dateNoteField, - tomStr, - 9999, - 9999, - true - ); - }); -} - -// src/AlternativeHierarchies/DendronNotes.ts -var getDendronParent = (dendron, splitter) => dendron.split(splitter).slice(0, -1).join(splitter); -function addDendronNotesToGraph(plugin, frontms, mainG) { - const { settings } = plugin; - const { addDendronNotes, dendronNoteDelimiter, dendronNoteField } = settings; - if (!addDendronNotes) - return; - for (const frontm of frontms) { - if (frontm[BC_IGNORE_DENDRON] || frontm[BC_IGNORE]) - continue; - let curr = getDVBasename(frontm.file); - let parent = getDendronParent(curr, dendronNoteDelimiter); - while (parent !== "") { - const parentFile = frontms.find( - (fm) => getDVBasename(fm.file) === parent - ); - if (!parentFile || parentFile[BC_IGNORE_DENDRON] !== true) { - populateMain( - settings, - mainG, - curr, - dendronNoteField, - parent, - 9999, - 9999, - true - ); - } - curr = parent; - parent = getDendronParent(parent, dendronNoteDelimiter); - } - } -} - -// src/AlternativeHierarchies/FolderNotes.ts -var import_obsidian6 = require("obsidian"); -var getSubsFromFolder = (folder) => { - const otherNotes = [], subFolders = []; - folder.children.forEach((tAbstract) => { - if (tAbstract instanceof import_obsidian6.TFile) - otherNotes.push(tAbstract); - else - subFolders.push(tAbstract); - }); - return { otherNotes, subFolders }; -}; -function addFolderNotesToGraph(plugin, folderNotes, frontms, mainG) { - const { settings } = plugin; - const { userHiers } = settings; - const fields = getFields(userHiers); - folderNotes.forEach((altFile) => { - const { file } = altFile; - const basename = getDVBasename(file); - const topFolderName = getFolderName(file); - const topFolder = app.vault.getAbstractFileByPath(topFolderName); - const targets = frontms.map((ff) => ff.file).filter( - (other) => getFolderName(other) === topFolderName && other.path !== file.path && !other[BC_IGNORE] - ).map(getDVBasename); - const field = altFile[BC_FOLDER_NOTE]; - if (typeof field !== "string" || !fields.includes(field)) - return; - targets.forEach((target) => { - const sourceOrder = getSourceOrder(altFile); - const targetOrder = getTargetOrder(frontms, basename); - populateMain( - settings, - mainG, - basename, - field, - target, - sourceOrder, - targetOrder, - true - ); - }); - if (altFile[BC_FOLDER_NOTE_SUBFOLDERS]) { - const subfolderField = altFile[BC_FOLDER_NOTE_SUBFOLDERS]; - if (typeof subfolderField !== "string" || !fields.includes(subfolderField)) - return; - const { subFolders } = getSubsFromFolder(topFolder); - subFolders.forEach((subFolder) => { - subFolder.children.forEach((child) => { - if (child instanceof import_obsidian6.TFile) { - const childBasename = getDVBasename(child); - populateMain( - settings, - mainG, - basename, - subfolderField, - childBasename, - 9999, - 9999, - true - ); - } - }); - }); - } - if (altFile[BC_FOLDER_NOTE_RECURSIVE]) { - const { subFolders } = getSubsFromFolder(topFolder); - const folderQueue = [...subFolders]; - let currFolder = folderQueue.shift(); - while (currFolder !== void 0) { - const { otherNotes, subFolders: subFolders2 } = getSubsFromFolder(currFolder); - const folderNote = currFolder.name; - const targets2 = otherNotes.map(getDVBasename); - const sourceOrder = 9999; - const targetOrder = 9999; - const parentFolderNote = currFolder.parent.name; - populateMain( - settings, - mainG, - parentFolderNote, - field, - folderNote, - sourceOrder, - targetOrder, - true - ); - targets2.forEach((target) => { - if (target === folderNote) - return; - const sourceOrder2 = 9999; - const targetOrder2 = 9999; - populateMain( - settings, - mainG, - folderNote, - field, - target, - sourceOrder2, - targetOrder2, - true - ); - }); - folderQueue.push(...subFolders2); - currFolder = folderQueue.shift(); - } - } - }); -} - -// src/AlternativeHierarchies/HierarchyNotes/HierarchyNotes.ts -async function getHierarchyNoteItems(file) { - const { listItems } = app.metadataCache.getFileCache(file); - if (!listItems) - return []; - const basename = getDVBasename(file); - const { hierarchyNoteIsParent } = getSettings(); - const lines = (await app.vault.cachedRead(file)).split("\n"); - const hierarchyNoteItems = []; - const afterBulletReg = new RegExp(/\s*[+*-]\s(.*$)/); - const dropWikiLinksReg = new RegExp(/\[\[(.*?)\]\]/); - const fieldReg = new RegExp(/(.*?)\[\[.*?\]\]/); - for (const item of listItems) { - const line = lines[item.position.start.line]; - const afterBulletCurr = afterBulletReg.exec(line)[1]; - const note = dropWikiLinksReg.exec(afterBulletCurr)[1]; - let field = fieldReg.exec(afterBulletCurr)[1].trim() || null; - const { parent } = item; - if (parent >= 0) { - const parentNote = lines[parent]; - const afterBulletParent = afterBulletReg.exec(parentNote)[1]; - const dropWikiParent = dropWikiLinksReg.exec(afterBulletParent)[1]; - hierarchyNoteItems.push({ - note, - parent: dropWikiParent, - field - }); - } else { - hierarchyNoteItems.push({ - note, - parent: hierarchyNoteIsParent ? basename : null, - field - }); - } - } - return hierarchyNoteItems; -} -function addHNsToGraph(settings, hnArr, mainG) { - const { HNUpField, userHiers } = settings; - const upFields = getFields(userHiers, "up"); - hnArr.forEach((hnItem, i) => { - var _a, _b; - const { note, field, parent } = hnItem; - const targetField = field != null ? field : HNUpField || upFields[0]; - const dir = (_a = getFieldInfo(userHiers, targetField)) == null ? void 0 : _a.fieldDir; - const oppDir = getOppDir(dir); - const oppField = getOppFields(userHiers, targetField, dir)[0]; - if (parent === null) { - const s2 = note; - const t = (_b = hnArr[i + 1]) == null ? void 0 : _b.note; - addNodesIfNot(mainG, [s2, t]); - addEdgeIfNot(mainG, s2, t, { dir: oppDir, field: oppField }); - } else { - addNodesIfNot(mainG, [note, parent]); - if (settings.showUpInJuggl) { - addEdgeIfNot(mainG, note, parent, { - dir, - field: targetField - }); - } - addEdgeIfNot(mainG, parent, note, { - dir: oppDir, - field: oppField - }); - } - }); -} - -// src/AlternativeHierarchies/JugglLinks.ts -async function getJugglLinks(plugin, files) { - const { settings, db } = plugin; - db.start2G("getJugglLinks"); - const { userHiers } = settings; - const typedLinksArr = await Promise.all( - files.map(async (file) => { - var _a, _b; - const jugglLink = { file, links: [] }; - const links = (_b = (_a = app.metadataCache.getFileCache(file)) == null ? void 0 : _a.links) != null ? _b : []; - const content = links.length ? await app.vault.cachedRead(file) : ""; - const lines = content.split("\n"); - links.forEach((link2) => { - var _a2, _b2, _c, _d, _e, _f, _g; - const lineNo = link2.position.start.line; - const line = lines[lineNo]; - const linksInLine = (_c = (_b2 = (_a2 = line.match(splitLinksRegex)) == null ? void 0 : _a2.map((link3) => link3.slice(2, link3.length - 2))) == null ? void 0 : _b2.map((innerText) => innerText.split("|")[0])) != null ? _c : []; - const typedLinkPrefix = (_e = (_d = app.plugins.plugins.juggl) == null ? void 0 : _d.settings.typedLinkPrefix) != null ? _e : "-"; - const parsedLinks = parseTypedLink(link2, line, typedLinkPrefix); - const field = (_g = (_f = parsedLinks == null ? void 0 : parsedLinks.properties) == null ? void 0 : _f.type) != null ? _g : ""; - if (field === "") - return; - const { fieldDir } = getFieldInfo(userHiers, field) || {}; - if (!fieldDir) - return; - jugglLink.links.push({ - dir: fieldDir, - field, - linksInLine - }); - }); - return jugglLink; - }) - ); - const allFields = getFields(userHiers); - const filteredLinks = typedLinksArr.map((jugglLink) => { - jugglLink.links = jugglLink.links.filter( - (link2) => allFields.includes(link2.field) - ); - return jugglLink; - }); - db.end2G({ filteredLinks }); - return filteredLinks; -} -function addJugglLinksToGraph(settings, jugglLinks, frontms, mainG) { - jugglLinks.forEach((jugglLink) => { - const { basename } = jugglLink.file; - jugglLink.links.forEach((link2) => { - const { dir, field, linksInLine } = link2; - if (dir === "") - return; - const sourceOrder = getTargetOrder(frontms, basename); - linksInLine.forEach((linkInLine) => { - const targetsOrder = getTargetOrder(frontms, linkInLine); - populateMain( - settings, - mainG, - basename, - field, - linkInLine, - sourceOrder, - targetsOrder - ); - }); - }); - }); -} - -// src/AlternativeHierarchies/LinkNotes.ts -function addLinkNotesToGraph(plugin, eligableAlts, frontms, mainG) { - const { settings } = plugin; - const { userHiers } = settings; - const fields = getFields(userHiers); - eligableAlts.forEach((altFile) => { - var _a, _b, _c, _d; - const linkNoteFile = altFile.file; - const linkNoteBasename = getDVBasename(linkNoteFile); - let field = altFile[BC_LINK_NOTE]; - if (typeof field !== "string" || !fields.includes(field)) - return; - const links = (_b = (_a = app.metadataCache.getFileCache(linkNoteFile)) == null ? void 0 : _a.links) == null ? void 0 : _b.map((l2) => l2.link.match(/[^#|]+/)[0]); - const embeds = (_d = (_c = app.metadataCache.getFileCache(linkNoteFile)) == null ? void 0 : _c.embeds) == null ? void 0 : _d.map((l2) => l2.link.match(/[^#|]+/)[0]); - const targets = [...links != null ? links : [], ...embeds != null ? embeds : []]; - for (const target of targets) { - const sourceOrder = getSourceOrder(altFile); - const targetOrder = getTargetOrder(frontms, linkNoteBasename); - populateMain( - settings, - mainG, - linkNoteBasename, - field, - target, - sourceOrder, - targetOrder, - true - ); - } - }); -} - -// src/AlternativeHierarchies/RegexNotes.ts -var import_loglevel7 = __toESM(require_loglevel()); -function addRegexNotesToGraph(plugin, eligableAlts, frontms, mainG) { - const { settings } = plugin; - const { userHiers, regexNoteField } = settings; - const fields = getFields(userHiers); - eligableAlts.forEach((altFile) => { - const regexNoteFile = altFile.file; - const regexNoteBasename = getDVBasename(regexNoteFile); - const regex = strToRegex(altFile[BC_REGEX_NOTE]); - (0, import_loglevel7.info)({ regex }); - let field = altFile[BC_REGEX_NOTE_FIELD]; - if (typeof field !== "string" || !fields.includes(field)) - field = regexNoteField || fields[0]; - const targets = []; - frontms.forEach((page) => { - if (page[BC_IGNORE]) - return; - const basename = getDVBasename(page.file); - if (basename !== regexNoteBasename && regex.test(basename)) - targets.push(basename); - }); - for (const target of targets) { - const sourceOrder = getSourceOrder(altFile); - const targetOrder = getTargetOrder(frontms, regexNoteBasename); - populateMain( - settings, - mainG, - regexNoteBasename, - field, - target, - sourceOrder, - targetOrder, - true - ); - } - }); -} - -// src/AlternativeHierarchies/TagNotes.ts -var import_loglevel8 = __toESM(require_loglevel()); -var getAllTags = (file, withHash = true) => { +// src/graph/builders/explicit/date_note.ts +var _add_explicit_edges_date_note = (graph, plugin, all_files) => { var _a, _b; - const { tags, frontmatter } = app.metadataCache.getFileCache(file); - const allTags = []; - tags == null ? void 0 : tags.forEach((t) => allTags.push(dropHash(t.tag))); - [(_a = frontmatter == null ? void 0 : frontmatter.tags) != null ? _a : []].flat().forEach((t) => { - splitAndTrim(t).forEach((innerT) => allTags.push(dropHash(innerT))); - }); - [(_b = frontmatter == null ? void 0 : frontmatter.tag) != null ? _b : []].flat().forEach((t) => { - splitAndTrim(t).forEach((innerT) => allTags.push(dropHash(innerT))); - }); - return allTags.map((t) => (withHash ? "#" : "") + t.toLowerCase()); -}; -function addTagNotesToGraph(plugin, eligableAlts, frontms, mainG) { - const { settings } = plugin; - const { userHiers, tagNoteField } = settings; - const fields = getFields(userHiers); - eligableAlts.forEach((altFile) => { - var _a; - const tagNoteFile = altFile.file; - const tagNoteBasename = getDVBasename(tagNoteFile); - const tag = addHash(altFile[BC_TAG_NOTE].trim().toLowerCase()); - (0, import_loglevel8.info)({ tag }); - const hasThisTag = (file) => { - const allTags = getAllTags(file); - return altFile[BC_TAG_NOTE_EXACT] !== void 0 ? allTags.includes(tag) : allTags.some((t) => t.includes(tag)); - }; - const targets = frontms.map((ff) => ff.file).filter((file) => file.path !== tagNoteFile.path && hasThisTag(file) && !file[BC_IGNORE]).map(getDVBasename); - (0, import_loglevel8.info)({ targets }); - let field = (_a = altFile[BC_TAG_NOTE_FIELD]) != null ? _a : tagNoteField || fields[0]; - targets.forEach((target) => { - const sourceOrder = getSourceOrder(altFile); - const targetOrder = getTargetOrder(frontms, tagNoteBasename); - populateMain( - settings, - mainG, - tagNoteBasename, - field, - target, - sourceOrder, - targetOrder, - true - ); + const errors = []; + const date_note_settings = plugin.settings.explicit_edge_sources.date_note; + if (!date_note_settings.enabled) + return { errors }; + else if (!plugin.settings.edge_fields.find( + (field) => field.label === date_note_settings.default_field + )) { + errors.push({ + code: "invalid_setting_value", + path: "explicit_edge_sources.date_note.default_field", + message: `The default Date Note field "${date_note_settings.default_field}" is not a valid Breadcrumbs Edge field` + }); + return { errors }; + } + const date_notes = []; + (_a = all_files.obsidian) == null ? void 0 : _a.forEach(({ file }) => { + var _a2, _b2; + const date = DateTime.fromFormat( + file.basename, + date_note_settings.date_format + ); + if (!date.isValid) + return; + date_notes.push({ + date, + path: file.path, + ext: file.extension, + basename: file.basename, + // Not sure why would this be undefined? + // I tested and a file in the root of the vault still has a parent + // _it's_ parent is null, but that only happens if "file" is actually a folder + folder: (_b2 = (_a2 = file.parent) == null ? void 0 : _a2.path) != null ? _b2 : "" }); }); -} - -// src/AlternativeHierarchies/TraverseNotes.ts -var import_loglevel9 = __toESM(require_loglevel()); -function addTraverseNotesToGraph(plugin, traverseNotes, mainG, obsG) { - const { settings } = plugin; - const { userHiers } = settings; - const fields = getFields(userHiers); - traverseNotes.forEach((altFile) => { - const { file } = altFile; - const basename = getDVBasename(file); - const noCycles = removeCycles(obsG, basename); - let field = altFile[BC_TRAVERSE_NOTE]; - if (typeof field !== "string" || !fields.includes(field)) + (_b = all_files.dataview) == null ? void 0 : _b.forEach(({ file }) => { + const date = DateTime.fromFormat( + file.name, + date_note_settings.date_format + ); + if (!date.isValid) return; - const allPaths = dfsAllPaths(noCycles, basename); - (0, import_loglevel9.info)(allPaths); - const reversed = [...allPaths].map((path2) => path2.reverse()); - reversed.forEach((path2) => { - path2.forEach((node, i) => { - const next = path2[i + 1]; - if (next === void 0) + date_notes.push({ + date, + ext: file.ext, + path: file.path, + folder: file.folder, + basename: file.name + }); + }); + date_notes.sort((a, b) => a.date.toMillis() - b.date.toMillis()).forEach((date_note, i) => { + var _a2, _b2; + const basename_plus_one_day = date_note.date.plus({ days: 1 }).toFormat(date_note_settings.date_format); + const target_basename = date_note_settings.stretch_to_existing ? (_b2 = (_a2 = date_notes.at(i + 1)) == null ? void 0 : _a2.basename) != null ? _b2 : basename_plus_one_day : basename_plus_one_day; + const target_path = Paths.build( + date_note.folder, + target_basename, + date_note.ext + ); + const target_file = plugin.app.vault.getFileByPath(target_path); + if (!target_file) { + graph.safe_add_node(target_path, { resolved: false }); + } + graph.safe_add_directed_edge(date_note.path, target_path, { + explicit: true, + source: "date_note", + field: date_note_settings.default_field + }); + }); + return { errors }; +}; + +// src/graph/builders/explicit/dendron_note.ts +var get_dendron_note_info = (plugin, metadata, path) => { + var _a; + const field = (_a = metadata == null ? void 0 : metadata[META_ALIAS["dendron-note-field"]]) != null ? _a : ( + // Which is why we have a default_field on dendron_note + plugin.settings.explicit_edge_sources.dendron_note.default_field + ); + if (!field) { + return fail(void 0); + } else if (typeof field !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `dendron-note-field is not a string: '${field}'` + }); + } else if (!plugin.settings.edge_fields.find((f) => f.label === field)) { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `dendron-note-field is not a valid field: '${field}'` + }); + } + return succ({ field }); +}; +var handle_dendron_note = (plugin, graph, source_path, source_metadata, errors) => { + const { delimiter } = plugin.settings.explicit_edge_sources.dendron_note; + const source_basename_splits = Paths.basename(source_path).split(delimiter); + if (source_basename_splits.length === 1) + return; + const dendron_note_info = get_dendron_note_info( + plugin, + source_metadata, + source_path + ); + if (!dendron_note_info.ok) { + if (dendron_note_info.error) { + errors.push(dendron_note_info.error); + } + return; + } + const target_path = Paths.build( + // Use the same folder as the source + source_path.split("/").slice(0, -1).join("/"), + // Go one note up + source_basename_splits.slice(0, -1).join(delimiter), + "md" + ); + const { field } = dendron_note_info.data; + const target_file = plugin.app.vault.getFileByPath(target_path); + if (!target_file) { + graph.safe_add_node(target_path, { resolved: false }); + handle_dendron_note( + plugin, + graph, + target_path, + // This is really quite elegant :) + // The unresolved note has no BC-dendron field, by definition + // Passing undefined would just use the settings.default field + // But we can propagate the field from the resolved source note + { [META_ALIAS["dendron-note-field"]]: field }, + errors + ); + } + graph.safe_add_directed_edge(source_path, target_path, { + field, + explicit: true, + source: "dendron_note" + }); +}; +var _add_explicit_edges_dendron_note = (graph, plugin, all_files) => { + var _a, _b; + const errors = []; + if (!plugin.settings.explicit_edge_sources.dendron_note.enabled) { + return { errors }; + } + (_a = all_files.obsidian) == null ? void 0 : _a.forEach(({ file, cache }) => { + handle_dendron_note( + plugin, + graph, + file.path, + cache == null ? void 0 : cache.frontmatter, + errors + ); + }); + (_b = all_files.dataview) == null ? void 0 : _b.forEach((page) => { + handle_dendron_note(plugin, graph, page.file.path, page, errors); + }); + return { errors }; +}; + +// src/graph/builders/explicit/folder_note.ts +var get_folder_note_info = (plugin, metadata, path) => { + if (!metadata) + return fail(void 0); + const field = metadata[META_ALIAS["folder-note-field"]]; + if (!field) { + return fail(void 0); + } else if (typeof field !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `folder-note-field is not a string: '${field}'` + }); + } else if (!plugin.settings.edge_fields.find((f) => f.label === field)) { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `folder-note-field is not a valid field: '${field}'` + }); + } + const recurse = Boolean(metadata[META_ALIAS["folder-note-recurse"]]); + return succ({ + field, + recurse + }); +}; +var iterate_folder_files = async (plugin, folder, cb, recurse) => { + const folder_files = await plugin.app.vault.adapter.list(folder); + folder_files.files.forEach((path) => cb(path)); + if (recurse) { + await Promise.all( + folder_files.folders.map( + (folder2) => ( + // When the subfolder is recursed, what does it mean when the callback runs? + // Where will it point up to? The initial folder's files point up to the folder_note + // But the subfolders don't specify a folder_note + // NOTE: For now, the subfiles will point up to the initial folder_note + iterate_folder_files(plugin, folder2, cb, true) + ) + ) + ); + } +}; +var _add_explicit_edges_folder_note = async (graph, plugin, all_files) => { + var _a, _b; + const errors = []; + const folder_notes = []; + (_a = all_files.obsidian) == null ? void 0 : _a.forEach( + ({ file: folder_note_file, cache: folder_note_cache }) => { + var _a2, _b2; + if (!folder_note_cache) + return; + const folder_note_info = get_folder_note_info( + plugin, + folder_note_cache == null ? void 0 : folder_note_cache.frontmatter, + folder_note_file.path + ); + if (!folder_note_info.ok) { + if (folder_note_info.error) + errors.push(folder_note_info.error); + return; + } + folder_notes.push({ + data: folder_note_info.data, + file: { + path: folder_note_file.path, + folder: (_b2 = (_a2 = folder_note_file.parent) == null ? void 0 : _a2.path) != null ? _b2 : "" + } + }); + } + ); + (_b = all_files.dataview) == null ? void 0 : _b.forEach((folder_note_page) => { + const folder_note_info = get_folder_note_info( + plugin, + folder_note_page, + folder_note_page.file.path + ); + if (!folder_note_info.ok) { + if (folder_note_info.error) + errors.push(folder_note_info.error); + return; + } + folder_notes.push({ + data: folder_note_info.data, + file: { + path: folder_note_page.file.path, + folder: folder_note_page.file.folder + } + }); + }); + await Promise.all( + folder_notes.map( + ({ data, file: folder_note }) => iterate_folder_files( + plugin, + folder_note.folder, + (target_path) => { + if (!target_path.endsWith(".md") || target_path === folder_note.path) + return; + graph.safe_add_directed_edge( + folder_note.path, + target_path, + { + explicit: true, + field: data.field, + source: "folder_note" + } + ); + }, + data.recurse + ) + ) + ); + return { errors }; +}; + +// src/graph/builders/explicit/johnny_decimal_note.ts +var get_johnny_decimal_note_info = (plugin, metadata, path) => { + var _a; + const field = (_a = metadata == null ? void 0 : metadata[META_ALIAS["johnny-decimal-note-field"]]) != null ? _a : ( + // Which is why we have a default_field on johnny_decimal_note + plugin.settings.explicit_edge_sources.johnny_decimal_note.default_field + ); + if (!field) { + return fail(void 0); + } else if (typeof field !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `johnny-decimal-note-field is not a string: '${field}'` + }); + } else if (!plugin.settings.edge_fields.find((f) => f.label === field)) { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `johnny-decimal-note-field is not a valid BC field: '${field}'` + }); + } + return succ({ field }); +}; +var handle_johnny_decimal_note = (plugin, graph, source_note, notes, errors) => { + const johnny_decimal_note_info = get_johnny_decimal_note_info( + plugin, + source_note.metadata, + source_note.path + ); + if (!johnny_decimal_note_info.ok) { + if (johnny_decimal_note_info.error) { + errors.push(johnny_decimal_note_info.error); + } + return; + } + const { delimiter } = plugin.settings.explicit_edge_sources.johnny_decimal_note; + const target_decimals = source_note.decimals.split(delimiter).slice(0, -1).join(delimiter); + if (target_decimals === "") + return; + const target_note = notes.find((n2) => n2.decimals === target_decimals); + if (!target_note) + return; + const target_file = plugin.app.vault.getFileByPath(target_note.path); + if (!target_file) { + graph.safe_add_node(target_note.path, { resolved: false }); + } + const { field } = johnny_decimal_note_info.data; + graph.safe_add_directed_edge(source_note.path, target_note.path, { + field, + explicit: true, + source: "johnny_decimal_note" + }); +}; +var _add_explicit_edges_johnny_decimal_note = (graph, plugin, all_files) => { + var _a, _b; + const errors = []; + if (!plugin.settings.explicit_edge_sources.johnny_decimal_note.enabled) { + return { errors }; + } + const { delimiter } = plugin.settings.explicit_edge_sources.johnny_decimal_note; + const regex2 = new RegExp(`^([\\w\\d\\${delimiter}]+)(\\s|\\${delimiter}$)`); + const johnny_decimal_notes = []; + (_a = all_files.obsidian) == null ? void 0 : _a.forEach(({ file, cache }) => { + var _a2; + const basename2 = Paths.basename(file.path); + const decimals = (_a2 = basename2.match(regex2)) == null ? void 0 : _a2[1]; + if (!decimals) + return; + johnny_decimal_notes.push({ + basename: basename2, + path: file.path, + metadata: cache == null ? void 0 : cache.frontmatter, + decimals: ensure_not_ends_with(decimals, delimiter) + }); + }); + (_b = all_files.dataview) == null ? void 0 : _b.forEach((page) => { + var _a2; + const basename2 = Paths.basename(page.file.path); + const decimals = (_a2 = basename2.match(regex2)) == null ? void 0 : _a2[1]; + if (!decimals) + return; + johnny_decimal_notes.push({ + basename: basename2, + metadata: page, + path: page.file.path, + decimals: ensure_not_ends_with(decimals, delimiter) + }); + }); + johnny_decimal_notes.forEach((note) => { + handle_johnny_decimal_note( + plugin, + graph, + note, + johnny_decimal_notes, + errors + ); + }); + return { errors }; +}; + +// src/graph/builders/explicit/list_note.ts +var import_obsidian4 = require("obsidian"); + +// src/utils/obsidian.ts +var import_obsidian3 = require("obsidian"); +var resolve_relative_target_path = (app, relative_target_path, source_path) => { + var _a; + const extensioned = Paths.ensure_ext(relative_target_path); + const target_file = app.metadataCache.getFirstLinkpathDest( + extensioned, + source_path + ); + const target_path = (_a = target_file == null ? void 0 : target_file.path) != null ? _a : Links.resolve_to_absolute_path(app, extensioned, source_path); + return [target_path, target_file]; +}; +var copy_to_clipboard = async (text2, options) => { + const resolved = Object.assign({ notify: true, log: true }, options); + if (resolved.log) { + log.feat(text2); + } + await navigator.clipboard.writeText(text2); + if (resolved.notify) { + new import_obsidian3.Notice("Copied to clipboard and logged to console."); + } +}; + +// src/graph/builders/explicit/list_note.ts +var get_list_note_info = (plugin, metadata, path) => { + var _a; + if (!metadata) { + return fail(void 0); + } + const field = metadata[META_ALIAS["list-note-field"]]; + if (!field) { + return fail(void 0); + } else if (typeof field !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `list-note-field is not a string: '${field}'` + }); + } else if (!plugin.settings.edge_fields.find((f) => f.label === field)) { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `list-note-field is not a valid BC field: '${field}'` + }); + } + const neighbour_field = (_a = metadata[META_ALIAS["list-note-neighbour-field"]]) != null ? _a : plugin.settings.explicit_edge_sources.list_note.default_neighbour_field; + if (neighbour_field) { + if (typeof neighbour_field !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `list-note-neighbour-field is not a string: '${neighbour_field}'` + }); + } else if (!plugin.settings.edge_fields.find( + (f) => f.label === neighbour_field + )) { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `list-note-neighbour-field is not a valid BC field: '${neighbour_field}'` + }); + } + } + const exclude_index = Boolean( + metadata[META_ALIAS["list-note-exclude-index"]] + ); + return succ({ + field, + exclude_index, + neighbour_field: neighbour_field != null ? neighbour_field : void 0 + }); +}; +var FIELD_OVERRIDE_REGEX = /^\s*([-\w\s]+)\b/; +var resolve_field_override = (plugin, list_item, path) => { + var _a; + const field = (_a = list_item.text.match(FIELD_OVERRIDE_REGEX)) == null ? void 0 : _a[1]; + if (!field) { + return succ(void 0); + } else if (!plugin.settings.edge_fields.find((f) => f.label === field)) { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `Field override is not a valid BC field: ${field}. Line: ${list_item.position.start.line}` + }); + } else { + return succ({ field }); + } +}; +var handle_neighbour_list_item = ({ + graph, + plugin, + source_path, + list_note_page, + list_note_info, + source_list_item_i +}) => { + if (!list_note_info.data.neighbour_field) + return; + const source_list_item = list_note_page.file.lists.values[source_list_item_i]; + let neighbour_list_item; + for (let i = source_list_item_i + 1; i < list_note_page.file.lists.values.length; i++) { + const item = list_note_page.file.lists.values[i]; + if (item.position.start.col < source_list_item.position.start.col) { + break; + } else if (item.position.start.col === source_list_item.position.start.col) { + neighbour_list_item = item; + break; + } + } + if (!neighbour_list_item) + return; + const neighbour_link = neighbour_list_item.outlinks.at(0); + if (!neighbour_link) + return; + const [path, file] = resolve_relative_target_path( + plugin.app, + neighbour_link.path, + list_note_page.file.path + ); + if (!file) { + graph.safe_add_node(path, { resolved: false }); + } + graph.safe_add_directed_edge(source_path, path, { + explicit: true, + source: "list_note", + field: list_note_info.data.neighbour_field + }); +}; +var _add_explicit_edges_list_note = (graph, plugin, all_files) => { + var _a, _b; + const errors = []; + (_a = all_files.obsidian) == null ? void 0 : _a.forEach( + ({ file: list_note_file, cache: list_note_cache }) => { + if (!list_note_cache) + return; + const list_note_info = get_list_note_info( + plugin, + list_note_cache == null ? void 0 : list_note_cache.frontmatter, + list_note_file.path + ); + if (!list_note_info.ok) { + if (list_note_info.error) + errors.push(list_note_info.error); + return; + } else { + new import_obsidian4.Notice( + "list-notes are not implemented without Dataview enabled" + ); + } + } + ); + (_b = all_files.dataview) == null ? void 0 : _b.forEach((list_note_page) => { + const list_note_info = get_list_note_info( + plugin, + list_note_page, + list_note_page.file.path + ); + if (!list_note_info.ok) { + if (list_note_info.error) + errors.push(list_note_info.error); + return; + } + list_note_page.file.lists.values.forEach( + (source_list_item, source_list_item_i) => { + var _a2, _b2; + const source_link = source_list_item.outlinks.at(0); + if (!source_link) return; - populateMain( - settings, - mainG, - node, + const [source_path, source_file] = resolve_relative_target_path( + plugin.app, + source_link.path, + list_note_page.file.path + ); + if (!source_file) { + graph.safe_add_node(source_path, { resolved: false }); + } + if (!list_note_info.data.exclude_index && source_list_item.position.start.col === 0) { + const source_override_field = resolve_field_override( + plugin, + source_list_item, + list_note_page.file.path + ); + if (!source_override_field.ok) { + if (source_override_field.error) { + errors.push(source_override_field.error); + } + return; + } + graph.safe_add_directed_edge( + list_note_page.file.path, + source_path, + { + explicit: true, + source: "list_note", + field: (_b2 = (_a2 = source_override_field.data) == null ? void 0 : _a2.field) != null ? _b2 : list_note_info.data.field + } + ); + } + if (list_note_info.data.neighbour_field) { + handle_neighbour_list_item({ + graph, + plugin, + source_path, + list_note_info, + list_note_page, + source_list_item_i + }); + } + source_list_item.children.forEach((target_list_item) => { + var _a3, _b3; + const target_link = target_list_item.outlinks.at(0); + if (!target_link) + return; + const target_override_field = resolve_field_override( + plugin, + target_list_item, + list_note_page.file.path + ); + if (!target_override_field.ok) { + if (target_override_field.error) { + errors.push(target_override_field.error); + } + return; + } + const [target_path, target_file] = resolve_relative_target_path( + plugin.app, + target_link.path, + list_note_page.file.path + ); + if (!target_file) { + graph.safe_add_node(target_path, { resolved: false }); + } + graph.safe_add_directed_edge(source_path, target_path, { + explicit: true, + source: "list_note", + field: (_b3 = (_a3 = target_override_field.data) == null ? void 0 : _a3.field) != null ? _b3 : list_note_info.data.field + }); + }); + } + ); + }); + return { errors }; +}; + +// src/graph/builders/explicit/regex_note.ts +var get_regex_note_info = (plugin, metadata, path) => { + var _a; + if (!metadata) + return fail(void 0); + const regex_str = metadata[META_ALIAS["regex-note-regex"]]; + if (!regex_str) { + return fail(void 0); + } else if (typeof regex_str !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `regex-note-regex is not a string: '${regex_str}'` + }); + } + const flags = metadata[META_ALIAS["regex-note-flags"]]; + if (flags && typeof flags !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `regex-note-flags is not a string: '${flags}'` + }); + } + let regex2; + try { + regex2 = new RegExp(regex_str, flags || ""); + log.debug(`get_regex_note_info > regex:`, regex2); + } catch (e) { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `regex-note-regex is not a valid regex: ${regex_str}` + }); + } + const field = (_a = metadata[META_ALIAS["regex-note-field"]]) != null ? _a : plugin.settings.explicit_edge_sources.regex_note.default_field; + if (!field) { + return fail(void 0); + } else if (typeof field !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `regex-note-field is not a string: '${field}'` + }); + } else if (!plugin.settings.edge_fields.find((f) => f.label === field)) { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `dataview-note-field is not a valid field: '${field}'` + }); + } + return succ({ + field, + regex: regex2 + }); +}; +var _add_explicit_edges_regex_note = (graph, plugin, all_files) => { + var _a, _b; + const errors = []; + const regex_note_files = []; + (_a = all_files.obsidian) == null ? void 0 : _a.forEach(({ file, cache }) => { + const info = get_regex_note_info(plugin, cache == null ? void 0 : cache.frontmatter, file.path); + if (!info.ok) { + if (info.error) + errors.push(info.error); + return; + } + regex_note_files.push({ info: info.data, path: file.path }); + }); + (_b = all_files.dataview) == null ? void 0 : _b.forEach((page) => { + const { file } = page; + const info = get_regex_note_info(plugin, page, file.path); + if (!info.ok) { + if (info.error) + errors.push(info.error); + return; + } + regex_note_files.push({ info: info.data, path: file.path }); + }); + if (!regex_note_files) + return { errors }; + const nodes = graph.mapNodes((id) => id); + regex_note_files.forEach((regex_note) => { + nodes.filter((node) => regex_note.info.regex.test(node)).forEach((target_path) => { + graph.safe_add_directed_edge(regex_note.path, target_path, { + explicit: true, + source: "regex_note", + field: regex_note.info.field + }); + }); + }); + return { errors }; +}; + +// src/graph/builders/explicit/tag_note.ts +var get_tag_note_info = (plugin, metadata, path) => { + var _a; + if (!metadata) + return fail(void 0); + let raw_tag = metadata[META_ALIAS["tag-note-tag"]]; + if (!raw_tag) { + raw_tag = metadata["BC-tag-note"]; + if (raw_tag) { + log.warn( + `'BC-tag-note' is deprecated in favor of ${META_ALIAS["tag-note-tag"]}` + ); + } + } + if (!raw_tag) { + return fail(void 0); + } else if (typeof raw_tag !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `tag-note-tag is not a string: '${raw_tag}'` + }); + } + const tag = ensure_starts_with(raw_tag, "#"); + const field = (_a = metadata[META_ALIAS["tag-note-field"]]) != null ? _a : plugin.settings.explicit_edge_sources.tag_note.default_field; + if (!field) { + return fail(void 0); + } else if (typeof field !== "string") { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `tag-note-field is not a string: '${field}'` + }); + } else if (!plugin.settings.edge_fields.find((f) => f.label === field)) { + return graph_build_fail({ + path, + code: "invalid_field_value", + message: `tag-note-field is not a valid BC field: '${field}'` + }); + } + const exact = Boolean(metadata[META_ALIAS["tag-note-exact"]]); + return succ({ tag, field, exact }); +}; +var _add_explicit_edges_tag_note = (graph, plugin, all_files) => { + var _a, _b; + const errors = []; + const tag_notes = []; + const tag_paths_map = /* @__PURE__ */ new Map(); + (_a = all_files.obsidian) == null ? void 0 : _a.forEach( + ({ file: tag_note_file, cache: tag_note_cache }) => { + var _a2; + if (!tag_note_cache) + return; + (_a2 = tag_note_cache == null ? void 0 : tag_note_cache.tags) == null ? void 0 : _a2.forEach(({ tag: tag2 }) => { + var _a3; + if (!((_a3 = tag_paths_map.get(tag2)) == null ? void 0 : _a3.push(tag_note_file.path))) { + tag_paths_map.set(tag2, [tag_note_file.path]); + } + }); + const tag_note_info = get_tag_note_info( + plugin, + tag_note_cache == null ? void 0 : tag_note_cache.frontmatter, + tag_note_file.path + ); + if (!tag_note_info.ok) { + if (tag_note_info.error) + errors.push(tag_note_info.error); + return; + } + const { tag, field, exact } = tag_note_info.data; + tag_notes.push({ + tag, + exact, + field, + source_path: tag_note_file.path + }); + } + ); + (_b = all_files.dataview) == null ? void 0 : _b.forEach((page) => { + const tag_note_file = page.file; + tag_note_file.etags.values.forEach((tag2) => { + var _a2; + if (!((_a2 = tag_paths_map.get(tag2)) == null ? void 0 : _a2.push(tag_note_file.path))) { + tag_paths_map.set(tag2, [tag_note_file.path]); + } + }); + const tag_note_info = get_tag_note_info( + plugin, + page, + tag_note_file.path + ); + if (!tag_note_info.ok) { + if (tag_note_info.error) + errors.push(tag_note_info.error); + return; + } + const { tag, field, exact } = tag_note_info.data; + tag_notes.push({ + tag, + exact, + field, + source_path: tag_note_file.path + }); + }); + const all_tags = [...tag_paths_map.keys()]; + tag_notes.forEach((tag_note) => { + const target_paths = tag_note.exact ? tag_paths_map.get(tag_note.tag) : all_tags.filter((tag) => tag.startsWith(tag_note.tag)).flatMap((tag) => tag_paths_map.get(tag)); + target_paths == null ? void 0 : target_paths.forEach((target_path) => { + graph.safe_add_directed_edge(tag_note.source_path, target_path, { + explicit: true, + source: "tag_note", + field: tag_note.field + }); + }); + }); + return { errors }; +}; + +// src/graph/builders/explicit/typed_link.ts +var MARKDOWN_LINK_REGEX = /\[(.+?)\]\((.+?)\)/; +var _add_explicit_edges_typed_link = (graph, plugin, all_files) => { + var _a, _b; + const errors = []; + const field_labels = new Set( + plugin.settings.edge_fields.map((f) => f.label) + ); + (_a = all_files.obsidian) == null ? void 0 : _a.forEach( + ({ file: source_file, cache: source_cache }) => { + var _a2; + (_a2 = source_cache == null ? void 0 : source_cache.frontmatterLinks) == null ? void 0 : _a2.forEach((target_link) => { + const field = target_link.key.split(".")[0]; + if (!field_labels.has(field)) + return; + const [target_path, target_file] = resolve_relative_target_path( + plugin.app, + target_link.link, + source_file.path + ); + if (!target_file) { + graph.safe_add_node(target_path, { resolved: false }); + } + graph.safe_add_directed_edge(source_file.path, target_path, { field, - next, - 9999, - 9999, - true + explicit: true, + source: "typed_link" + }); + }); + } + ); + (_b = all_files.dataview) == null ? void 0 : _b.forEach((page) => { + const source_file = page.file; + Object.keys(page).forEach((field) => { + if (!field_labels.has(field) || ["file", "aliases"].includes(field)) { + return; + } + ensure_is_array(page[field]).flat().forEach((target_link) => { + var _a2; + let unsafe_target_path; + if (!target_link) + return; + else if (typeof target_link === "string") { + unsafe_target_path = (_a2 = target_link.match(MARKDOWN_LINK_REGEX)) == null ? void 0 : _a2[2]; + } else if (typeof target_link === "object" && (target_link == null ? void 0 : target_link.path)) { + unsafe_target_path = target_link.path; + } else if ( + // @ts-expect-error: instanceof didn't work here? + target_link == null ? void 0 : target_link.isLuxonDateTime + ) { + errors.push({ + path: source_file.path, + code: "invalid_field_value", + message: `Invalid value for field '${field}': '${target_link}'. Dataview DateTime values are not supported, since they don't preserve the original date string.` + }); + } else { + errors.push({ + path: source_file.path, + code: "invalid_field_value", + message: `Invalid value for field '${field}': '${target_link}'. Expected wikilink or markdown link.` + }); + } + if (!unsafe_target_path) + return; + const [target_path, target_file] = resolve_relative_target_path( + plugin.app, + unsafe_target_path, + source_file.path + ); + if (!target_file) { + graph.safe_add_node(target_path, { resolved: false }); + } + graph.safe_add_directed_edge( + source_file.path, + target_path, + { + field, + explicit: true, + source: "typed_link" + } ); }); }); }); -} + return { errors }; +}; -// src/Relations.ts -function addSiblingsFromSameParent(g, settings) { - const { userHiers, treatCurrNodeAsImpliedSibling } = settings; - g.forEachNode((currN, a2) => { - g.forEachOutEdge(currN, (k, currNAttr, s2, parentNode) => { - var _a; - if (currNAttr.dir !== "up") - return; - const { fieldDir, fieldHier } = getFieldInfo(userHiers, currNAttr.field); - const field = (_a = fieldHier.same[0]) != null ? _a : fallbackField(currNAttr.field, fieldDir); - g.forEachOutEdge(parentNode, (k2, a3, s3, impliedSibling) => { - if (a3.dir !== "down" || !treatCurrNodeAsImpliedSibling && impliedSibling === currN) - return; - addEdgeIfNot(g, currN, impliedSibling, { - dir: "same", - field, - implied: BC_I_SIBLING_1 - }); - }); +// src/graph/builders/explicit/index.ts +var add_explicit_edges = { + tag_note: _add_explicit_edges_tag_note, + list_note: _add_explicit_edges_list_note, + date_note: _add_explicit_edges_date_note, + typed_link: _add_explicit_edges_typed_link, + regex_note: _add_explicit_edges_regex_note, + folder_note: _add_explicit_edges_folder_note, + dendron_note: _add_explicit_edges_dendron_note, + dataview_note: _add_explicit_edges_dataview_note, + johnny_decimal_note: _add_explicit_edges_johnny_decimal_note +}; + +// src/graph/builders/explicit/files.ts +var get_all_files = (app) => { + var _a; + if (dataview_plugin.is_enabled(app)) { + return { + obsidian: null, + dataview: (_a = dataview_plugin.get_api()) == null ? void 0 : _a.pages().values + }; + } else { + return { + obsidian: app.vault.getMarkdownFiles().map((file) => ({ + file, + cache: app.metadataCache.getFileCache(file) + })), + dataview: null + }; + } +}; + +// src/utils/transitive_rules.ts +var stringify_transitive_relation = (rule) => `[${rule.chain.map((attr2) => url_search_params(attr2, { trim_lone_param: true })).join(", ")}] ${rule.close_reversed ? "<-" : "->"} ${rule.close_field}`; +var regex = /\[(.+)\]\s*(<-|->)\s*(.+)/; +var get_transitive_rule_name = (rule) => rule.name || stringify_transitive_relation(rule); +var parse_transitive_relation = (str) => { + const match2 = str.match(regex); + if (!match2) { + return fail(null); + } else { + return succ({ + close_field: match2[3], + close_reversed: match2[2] === "<-", + chain: split_and_trim(match2[1]).map((field) => ({ field })) + }); + } +}; +var input_transitive_rule_schema = (data) => { + const field_labels = data.fields.map((f) => f.label); + return z.object({ + chain: z.array( + z.object({ field: zod.schema.dynamic_enum(field_labels) }) + ), + close_field: zod.schema.dynamic_enum(field_labels, "close_field"), + close_reversed: z.boolean() + }); +}; +var transitive_rule_to_edges = (rule) => { + const edges = []; + rule.chain.forEach((attr2, i) => { + var _a; + edges.push({ + source_id: i.toString(), + target_id: (i + 1).toString(), + source_attr: { resolved: true }, + target_attr: { resolved: true }, + attr: { + explicit: true, + field: (_a = attr2.field) != null ? _a : "", + source: "typed_link" + } }); }); -} -function addSiblingsParentIsParent(g) { - g.forEachNode((currN, a2) => { - g.forEachOutEdge(currN, (k, currNAttr, s2, sibling) => { - if (currNAttr.dir !== "same") - return; - g.forEachOutEdge(sibling, (k2, a3, s3, parent) => { - const { dir, field } = a3; - if (dir !== "up") - return; - addEdgeIfNot(g, currN, parent, { - dir: "up", - field, - implied: BC_I_PARENT - }); - }); - }); + edges.push({ + source_attr: { resolved: true }, + target_attr: { resolved: true }, + source_id: rule.close_reversed ? rule.chain.length.toString() : "0", + target_id: rule.close_reversed ? "0" : rule.chain.length.toString(), + attr: { + round: 1, + explicit: false, + field: rule.close_field, + implied_kind: `transitive:${get_transitive_rule_name(rule)}` + } }); -} -function addAuntsUncles(g) { - g.forEachNode((currN, a2) => { - g.forEachOutEdge(currN, (k, currEAttr, s2, parentNode) => { - if (currEAttr.dir !== "up") - return; - g.forEachOutEdge(parentNode, (k2, a3, s3, uncle) => { - if (a3.dir !== "same") - return; - addEdgeIfNot(g, currN, uncle, { - dir: "up", - // Use the starting node's parent field - field: currEAttr.field, - implied: BC_I_AUNT - }); - }); + return edges; +}; + +// src/graph/builders/implied/transitive.ts +var _add_implied_edges_transitive = (graph, plugin, rule, round) => { + const results = { edges: [], errors: [] }; + if (rule.rounds < round) { + return results; + } else if (!plugin.settings.edge_fields.find((f) => f.label === rule.close_field)) { + results.errors.push({ + code: "invalid_setting_value", + path: "implied_relations.transitive[].close_field", + message: `close_field is not a valid BC field: '${rule.close_field}'` }); - }); -} -function addCousins(g) { - g.forEachNode((currN, a2) => { - g.forEachOutEdge(currN, (k, currEAttr, s2, parentNode) => { - if (currEAttr.dir !== "up") - return; - g.forEachOutEdge(parentNode, (k2, parentSiblingAttr, s3, uncle) => { - if (parentSiblingAttr.dir !== "same") - return; - g.forEachOutEdge(uncle, (k3, a3, s4, cousin) => { - if (a3.dir !== "down" || currN === cousin) - return; - addEdgeIfNot(g, currN, cousin, { - dir: "same", - field: parentSiblingAttr.field, - implied: BC_I_COUSIN - }); - }); - }); - }); - }); -} -function addStructuralEquivalenceSiblings(g) { - g.forEachNode((currN, a2) => { - g.forEachInEdge(currN, (k, aSis, sis, _) => { - if (aSis.dir !== "same") - return; - g.forEachInEdge(currN, (k2, aBro, bro, _2) => { - if (aBro.dir !== "same" || sis === bro) - return; - if (aBro.field === aSis.field) { - addEdgeIfNot(g, sis, bro, { - dir: "same", - field: aBro.field, - implied: BC_I_SIBLING_2 - }); + return results; + } + const implied_kind = `transitive:${get_transitive_rule_name(rule)}`; + graph.forEachNode((start_node) => { + Traverse.get_transitive_chain_target_ids( + graph, + start_node, + rule.chain, + (item) => item.edge.target_id !== start_node + ).forEach((end_node) => { + const [source_id, target_id] = rule.close_reversed ? [end_node, start_node] : [start_node, end_node]; + results.edges.push({ + source_id, + target_id, + attr: { + round, + implied_kind, + explicit: false, + field: rule.close_field } }); }); }); + return results; +}; + +// src/graph/builders/index.ts +var add_initial_nodes = (graph, all_files) => { + if (all_files.obsidian) { + all_files.obsidian.forEach(({ file, cache }) => { + var _a, _b, _c; + const node_attr = { + resolved: true + }; + const aliases = (_a = cache == null ? void 0 : cache.frontmatter) == null ? void 0 : _a.aliases; + if (Array.isArray(aliases) && aliases.length > 0) { + node_attr.aliases = aliases; + } + if ((_b = cache == null ? void 0 : cache.frontmatter) == null ? void 0 : _b[META_ALIAS["ignore-in-edges"]]) { + node_attr.ignore_in_edges = true; + } + if ((_c = cache == null ? void 0 : cache.frontmatter) == null ? void 0 : _c[META_ALIAS["ignore-out-edges"]]) { + node_attr.ignore_out_edges = true; + } + graph.addNode(file.path, node_attr); + }); + } else { + all_files.dataview.forEach((page) => { + const node_attr = { + resolved: true + }; + const aliases = page.file.aliases.values; + if (Array.isArray(aliases) && aliases.length > 0) { + node_attr.aliases = aliases; + } + if (page[META_ALIAS["ignore-in-edges"]]) { + node_attr.ignore_in_edges = true; + } + if (page[META_ALIAS["ignore-out-edges"]]) { + node_attr.ignore_out_edges = true; + } + graph.addNode(page.file.path, node_attr); + }); + } +}; +var rebuild_graph = async (plugin) => { + const timer = new Timer(); + const timer2 = new Timer(); + const graph = new BCGraph(); + const all_files = get_all_files(plugin.app); + add_initial_nodes(graph, all_files); + log.debug(timer.elapsedMessage("Adding initial nodes")); + timer.reset(); + const explicit_edge_results = await Promise.all( + EXPLICIT_EDGE_SOURCES.map(async (source) => { + const result = await add_explicit_edges[source]( + graph, + plugin, + all_files + ); + return { source, errors: result.errors }; + }) + ); + log.debug(timer.elapsedMessage("Adding initial edges")); + timer.reset(); + const max_implied_relationship_rounds = Math.max( + ...plugin.settings.implied_relations.transitive.map( + (imp) => imp.rounds + ) + ); + const implied_edge_results = { + transitive: [] + }; + const added_fields = /* @__PURE__ */ new Set(); + for (const edge of graph.edgeEntries()) { + added_fields.add(edge.attributes.field); + } + for (let round = 1; round <= max_implied_relationship_rounds; round++) { + const edges = []; + plugin.settings.implied_relations.transitive.forEach((rule) => { + if (!rule.chain.some((attr2) => added_fields.has(attr2.field))) { + return; + } + const result = _add_implied_edges_transitive( + graph, + plugin, + rule, + round + ); + edges.push(...result.edges); + implied_edge_results.transitive.push(...result.errors); + }); + added_fields.clear(); + if (edges.length === 0) + break; + else { + edges.forEach((edge) => { + graph.safe_add_directed_edge( + edge.source_id, + edge.target_id, + edge.attr + ) && added_fields.add(edge.attr.field); + }); + } + } + log.debug(timer.elapsedMessage("Adding implied edges")); + log.debug(timer2.elapsedMessage("Total Graph building")); + return { graph, explicit_edge_results, implied_edge_results }; +}; + +// src/settings/SettingsTab.ts +var import_obsidian24 = require("obsidian"); + +// node_modules/svelte/src/runtime/internal/utils.js +function noop() { +} +function assign(tar, src) { + for (const k in src) + tar[k] = src[k]; + return ( + /** @type {T & S} */ + tar + ); +} +function run(fn) { + return fn(); +} +function blank_object() { + return /* @__PURE__ */ Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === "function"; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || a && typeof a === "object" || typeof a === "function"; +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function subscribe(store2, ...callbacks) { + if (store2 == null) { + for (const callback of callbacks) { + callback(void 0); + } + return noop; + } + const unsub = store2.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} +function get_store_value(store2) { + let value; + subscribe(store2, (_) => value = _)(); + return value; +} +function component_subscribe(component, store2, callback) { + component.$$.on_destroy.push(subscribe(store2, callback)); +} +function create_slot(definition, ctx, $$scope, fn) { + if (definition) { + const slot_ctx = get_slot_context(definition, ctx, $$scope, fn); + return definition[0](slot_ctx); + } +} +function get_slot_context(definition, ctx, $$scope, fn) { + return definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx; +} +function get_slot_changes(definition, $$scope, dirty, fn) { + if (definition[2] && fn) { + const lets = definition[2](fn(dirty)); + if ($$scope.dirty === void 0) { + return lets; + } + if (typeof lets === "object") { + const merged = []; + const len = Math.max($$scope.dirty.length, lets.length); + for (let i = 0; i < len; i += 1) { + merged[i] = $$scope.dirty[i] | lets[i]; + } + return merged; + } + return $$scope.dirty | lets; + } + return $$scope.dirty; +} +function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) { + if (slot_changes) { + const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn); + slot.p(slot_context, slot_changes); + } +} +function get_all_dirty_from_scope($$scope) { + if ($$scope.ctx.length > 32) { + const dirty = []; + const length = $$scope.ctx.length / 32; + for (let i = 0; i < length; i++) { + dirty[i] = -1; + } + return dirty; + } + return -1; +} +function exclude_internal_props(props) { + const result = {}; + for (const k in props) + if (k[0] !== "$") + result[k] = props[k]; + return result; +} +function compute_rest_props(props, keys) { + const rest = {}; + keys = new Set(keys); + for (const k in props) + if (!keys.has(k) && k[0] !== "$") + rest[k] = props[k]; + return rest; } -// src/Views/TrailView.ts -var import_loglevel12 = __toESM(require_loglevel()); -var import_obsidian8 = require("obsidian"); +// node_modules/svelte/src/runtime/internal/globals.js +var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : ( + // @ts-ignore Node typings have this + global +); -// src/Components/NextPrev.svelte -function add_css(target) { - append_styles(target, "svelte-11g23nm", ".BC-nexts.svelte-11g23nm div.svelte-11g23nm{text-align:right}.BC-nexts.svelte-11g23nm.svelte-11g23nm{border-left:1px solid var(--background-modifier-border)}.BC-prevs.svelte-11g23nm.svelte-11g23nm{border-right:1px solid var(--background-modifier-border)}.BC-NextPrev-Container.svelte-11g23nm.svelte-11g23nm{display:grid;grid-template-columns:1fr 1fr}"); +// node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js +var ResizeObserverSingleton = class _ResizeObserverSingleton { + /** @param {ResizeObserverOptions} options */ + constructor(options) { + /** + * @private + * @readonly + * @type {WeakMap} + */ + __publicField(this, "_listeners", "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0); + /** + * @private + * @type {ResizeObserver} + */ + __publicField(this, "_observer"); + /** @type {ResizeObserverOptions} */ + __publicField(this, "options"); + this.options = options; + } + /** + * @param {Element} element + * @param {import('./private.js').Listener} listener + * @returns {() => void} + */ + observe(element2, listener) { + this._listeners.set(element2, listener); + this._getObserver().observe(element2, this.options); + return () => { + this._listeners.delete(element2); + this._observer.unobserve(element2); + }; + } + /** + * @private + */ + _getObserver() { + var _a; + return (_a = this._observer) != null ? _a : this._observer = new ResizeObserver((entries) => { + var _a2; + for (const entry of entries) { + _ResizeObserverSingleton.entries.set(entry.target, entry); + (_a2 = this._listeners.get(entry.target)) == null ? void 0 : _a2(entry); + } + }); + } +}; +ResizeObserverSingleton.entries = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; + +// node_modules/svelte/src/runtime/internal/dom.js +var is_hydrating = false; +function start_hydrating() { + is_hydrating = true; } -function get_each_context(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[8] = list[i].field; - child_ctx[9] = list[i].real; - child_ctx[10] = list[i].to; - return child_ctx; +function end_hydrating() { + is_hydrating = false; } -function get_each_context_1(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[8] = list[i].field; - child_ctx[9] = list[i].real; - child_ctx[10] = list[i].to; - return child_ctx; +function append(target, node) { + target.appendChild(node); } -function create_each_block_1(ctx) { - let div; - let strong; - let t0_value = ( - /*field*/ - ctx[8] + "" - ); - let t0; - let t1; - let t2_value = ( - /*to*/ - ctx[10] + "" - ); - let t2; - let t3; - let div_class_value; - let mounted; - let dispose; - function click_handler(...args) { +function append_styles(target, style_sheet_id, styles) { + const append_styles_to = get_root_for_style(target); + if (!append_styles_to.getElementById(style_sheet_id)) { + const style = element("style"); + style.id = style_sheet_id; + style.textContent = styles; + append_stylesheet(append_styles_to, style); + } +} +function get_root_for_style(node) { + if (!node) + return document; + const root = node.getRootNode ? node.getRootNode() : node.ownerDocument; + if (root && /** @type {ShadowRoot} */ + root.host) { return ( - /*click_handler*/ - ctx[4]( - /*to*/ - ctx[10], - ...args - ) + /** @type {ShadowRoot} */ + root ); } - function mouseover_handler(...args) { - return ( - /*mouseover_handler*/ - ctx[5]( - /*to*/ - ctx[10], - ...args - ) - ); + return node.ownerDocument; +} +function append_stylesheet(node, style) { + append( + /** @type {Document} */ + node.head || node, + style + ); + return style.sheet; +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + if (node.parentNode) { + node.parentNode.removeChild(node); + } +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function svg_element(name) { + return document.createElementNS("http://www.w3.org/2000/svg", name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(" "); +} +function empty() { + return text(""); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function set_svg_attributes(node, attributes) { + for (const key in attributes) { + attr(node, key, attributes[key]); + } +} +function children(element2) { + return Array.from(element2.childNodes); +} +function set_data(text2, data) { + data = "" + data; + if (text2.data === data) + return; + text2.data = /** @type {string} */ + data; +} +function set_input_value(input, value) { + input.value = value == null ? "" : value; +} +function set_style(node, key, value, important) { + if (value == null) { + node.style.removeProperty(key); + } else { + node.style.setProperty(key, value, important ? "important" : ""); + } +} +function select_option(select, value, mounting) { + for (let i = 0; i < select.options.length; i += 1) { + const option = select.options[i]; + if (option.__value === value) { + option.selected = true; + return; + } + } + if (!mounting || value !== void 0) { + select.selectedIndex = -1; + } +} +function select_value(select) { + const selected_option = select.querySelector(":checked"); + return selected_option && selected_option.__value; +} +function toggle_class(element2, name, toggle) { + element2.classList.toggle(name, !!toggle); +} +function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { + return new CustomEvent(type, { detail, bubbles, cancelable }); +} +function get_custom_elements_slots(element2) { + const result = {}; + element2.childNodes.forEach( + /** @param {Element} node */ + (node) => { + result[node.slot || "default"] = true; + } + ); + return result; +} + +// node_modules/svelte/src/runtime/internal/lifecycle.js +var current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error("Function called outside component initialization"); + return current_component; +} +function onMount(fn) { + get_current_component().$$.on_mount.push(fn); +} +function createEventDispatcher() { + const component = get_current_component(); + return (type, detail, { cancelable = false } = {}) => { + const callbacks = component.$$.callbacks[type]; + if (callbacks) { + const event = custom_event( + /** @type {string} */ + type, + detail, + { cancelable } + ); + callbacks.slice().forEach((fn) => { + fn.call(component, event); + }); + return !event.defaultPrevented; + } + return true; + }; +} +function bubble(component, event) { + const callbacks = component.$$.callbacks[event.type]; + if (callbacks) { + callbacks.slice().forEach((fn) => fn.call(this, event)); + } +} + +// node_modules/svelte/src/runtime/internal/scheduler.js +var dirty_components = []; +var binding_callbacks = []; +var render_callbacks = []; +var flush_callbacks = []; +var resolved_promise = /* @__PURE__ */ Promise.resolve(); +var update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +function add_flush_callback(fn) { + flush_callbacks.push(fn); +} +var seen_callbacks = /* @__PURE__ */ new Set(); +var flushidx = 0; +function flush() { + if (flushidx !== 0) { + return; + } + const saved_component = current_component; + do { + try { + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); + } + } catch (e) { + dirty_components.length = 0; + flushidx = 0; + throw e; + } + set_current_component(null); + dirty_components.length = 0; + flushidx = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + seen_callbacks.clear(); + set_current_component(saved_component); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +function flush_render_callbacks(fns) { + const filtered = []; + const targets = []; + render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c)); + targets.forEach((c) => c()); + render_callbacks = filtered; +} + +// node_modules/svelte/src/runtime/internal/transitions.js +var outroing = /* @__PURE__ */ new Set(); +var outros; +function group_outros() { + outros = { + r: 0, + c: [], + p: outros + // parent group + }; +} +function check_outros() { + if (!outros.r) { + run_all(outros.c); + } + outros = outros.p; +} +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} +function transition_out(block, local, detach2, callback) { + if (block && block.o) { + if (outroing.has(block)) + return; + outroing.add(block); + outros.c.push(() => { + outroing.delete(block); + if (callback) { + if (detach2) + block.d(1); + callback(); + } + }); + block.o(local); + } else if (callback) { + callback(); + } +} + +// node_modules/svelte/src/runtime/internal/each.js +function ensure_array_like(array_like_or_iterator) { + return (array_like_or_iterator == null ? void 0 : array_like_or_iterator.length) !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator); +} +function outro_and_destroy_block(block, lookup) { + transition_out(block, 1, 1, () => { + lookup.delete(block.key); + }); +} +function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block12, next, get_context) { + let o = old_blocks.length; + let n2 = list.length; + let i = o; + const old_indexes = {}; + while (i--) + old_indexes[old_blocks[i].key] = i; + const new_blocks = []; + const new_lookup = /* @__PURE__ */ new Map(); + const deltas = /* @__PURE__ */ new Map(); + const updates = []; + i = n2; + while (i--) { + const child_ctx = get_context(ctx, list, i); + const key = get_key(child_ctx); + let block = lookup.get(key); + if (!block) { + block = create_each_block12(key, child_ctx); + block.c(); + } else if (dynamic) { + updates.push(() => block.p(child_ctx, dirty)); + } + new_lookup.set(key, new_blocks[i] = block); + if (key in old_indexes) + deltas.set(key, Math.abs(i - old_indexes[key])); + } + const will_move = /* @__PURE__ */ new Set(); + const did_move = /* @__PURE__ */ new Set(); + function insert2(block) { + transition_in(block, 1); + block.m(node, next); + lookup.set(block.key, block); + next = block.first; + n2--; + } + while (o && n2) { + const new_block = new_blocks[n2 - 1]; + const old_block = old_blocks[o - 1]; + const new_key = new_block.key; + const old_key = old_block.key; + if (new_block === old_block) { + next = new_block.first; + o--; + n2--; + } else if (!new_lookup.has(old_key)) { + destroy(old_block, lookup); + o--; + } else if (!lookup.has(new_key) || will_move.has(new_key)) { + insert2(new_block); + } else if (did_move.has(old_key)) { + o--; + } else if (deltas.get(new_key) > deltas.get(old_key)) { + did_move.add(new_key); + insert2(new_block); + } else { + will_move.add(old_key); + o--; + } + } + while (o--) { + const old_block = old_blocks[o]; + if (!new_lookup.has(old_block.key)) + destroy(old_block, lookup); + } + while (n2) + insert2(new_blocks[n2 - 1]); + run_all(updates); + return new_blocks; +} + +// node_modules/svelte/src/runtime/internal/spread.js +function get_spread_update(levels, updates) { + const update2 = {}; + const to_null_out = {}; + const accounted_for = { $$scope: 1 }; + let i = levels.length; + while (i--) { + const o = levels[i]; + const n2 = updates[i]; + if (n2) { + for (const key in o) { + if (!(key in n2)) + to_null_out[key] = 1; + } + for (const key in n2) { + if (!accounted_for[key]) { + update2[key] = n2[key]; + accounted_for[key] = 1; + } + } + levels[i] = n2; + } else { + for (const key in o) { + accounted_for[key] = 1; + } + } + } + for (const key in to_null_out) { + if (!(key in update2)) + update2[key] = void 0; + } + return update2; +} +function get_spread_object(spread_props) { + return typeof spread_props === "object" && spread_props !== null ? spread_props : {}; +} + +// node_modules/svelte/src/shared/boolean_attributes.js +var _boolean_attributes = ( + /** @type {const} */ + [ + "allowfullscreen", + "allowpaymentrequest", + "async", + "autofocus", + "autoplay", + "checked", + "controls", + "default", + "defer", + "disabled", + "formnovalidate", + "hidden", + "inert", + "ismap", + "loop", + "multiple", + "muted", + "nomodule", + "novalidate", + "open", + "playsinline", + "readonly", + "required", + "reversed", + "selected" + ] +); +var boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]); + +// node_modules/svelte/src/runtime/internal/Component.js +function bind(component, name, callback) { + const index = component.$$.props[name]; + if (index !== void 0) { + component.$$.bound[index] = callback; + callback(component.$$.ctx[index]); + } +} +function create_component(block) { + block && block.c(); +} +function mount_component(component, target, anchor) { + const { fragment, after_update } = component.$$; + fragment && fragment.m(target, anchor); + add_render_callback(() => { + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); + } else { + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + flush_render_callbacks($$.after_update); + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[i / 31 | 0] |= 1 << i % 31; +} +function init(component, options, instance56, create_fragment56, not_equal, props, append_styles2 = null, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: [], + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles2 && append_styles2($$.root); + let ready = false; + $$.ctx = instance56 ? instance56(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) : []; + $$.update(); + ready = true; + run_all($$.before_update); + $$.fragment = create_fragment56 ? create_fragment56($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + start_hydrating(); + const nodes = children(options.target); + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } else { + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor); + end_hydrating(); + flush(); + } + set_current_component(parent_component); +} +var SvelteElement; +if (typeof HTMLElement === "function") { + SvelteElement = class extends HTMLElement { + constructor($$componentCtor, $$slots, use_shadow_dom) { + super(); + /** The Svelte component constructor */ + __publicField(this, "$$ctor"); + /** Slots */ + __publicField(this, "$$s"); + /** The Svelte component instance */ + __publicField(this, "$$c"); + /** Whether or not the custom element is connected */ + __publicField(this, "$$cn", false); + /** Component props data */ + __publicField(this, "$$d", {}); + /** `true` if currently in the process of reflecting component props back to attributes */ + __publicField(this, "$$r", false); + /** @type {Record} Props definition (name, reflected, type etc) */ + __publicField(this, "$$p_d", {}); + /** @type {Record} Event listeners */ + __publicField(this, "$$l", {}); + /** @type {Map} Event listener unsubscribe functions */ + __publicField(this, "$$l_u", /* @__PURE__ */ new Map()); + this.$$ctor = $$componentCtor; + this.$$s = $$slots; + if (use_shadow_dom) { + this.attachShadow({ mode: "open" }); + } + } + addEventListener(type, listener, options) { + this.$$l[type] = this.$$l[type] || []; + this.$$l[type].push(listener); + if (this.$$c) { + const unsub = this.$$c.$on(type, listener); + this.$$l_u.set(listener, unsub); + } + super.addEventListener(type, listener, options); + } + removeEventListener(type, listener, options) { + super.removeEventListener(type, listener, options); + if (this.$$c) { + const unsub = this.$$l_u.get(listener); + if (unsub) { + unsub(); + this.$$l_u.delete(listener); + } + } + } + async connectedCallback() { + this.$$cn = true; + if (!this.$$c) { + let create_slot2 = function(name) { + return () => { + let node; + const obj = { + c: function create() { + node = element("slot"); + if (name !== "default") { + attr(node, "name", name); + } + }, + /** + * @param {HTMLElement} target + * @param {HTMLElement} [anchor] + */ + m: function mount(target, anchor) { + insert(target, node, anchor); + }, + d: function destroy(detaching) { + if (detaching) { + detach(node); + } + } + }; + return obj; + }; + }; + await Promise.resolve(); + if (!this.$$cn) { + return; + } + const $$slots = {}; + const existing_slots = get_custom_elements_slots(this); + for (const name of this.$$s) { + if (name in existing_slots) { + $$slots[name] = [create_slot2(name)]; + } + } + for (const attribute of this.attributes) { + const name = this.$$g_p(attribute.name); + if (!(name in this.$$d)) { + this.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, "toProp"); + } + } + for (const key in this.$$p_d) { + if (!(key in this.$$d) && this[key] !== void 0) { + this.$$d[key] = this[key]; + delete this[key]; + } + } + this.$$c = new this.$$ctor({ + target: this.shadowRoot || this, + props: { + ...this.$$d, + $$slots, + $$scope: { + ctx: [] + } + } + }); + const reflect_attributes = () => { + this.$$r = true; + for (const key in this.$$p_d) { + this.$$d[key] = this.$$c.$$.ctx[this.$$c.$$.props[key]]; + if (this.$$p_d[key].reflect) { + const attribute_value = get_custom_element_value( + key, + this.$$d[key], + this.$$p_d, + "toAttribute" + ); + if (attribute_value == null) { + this.removeAttribute(this.$$p_d[key].attribute || key); + } else { + this.setAttribute(this.$$p_d[key].attribute || key, attribute_value); + } + } + } + this.$$r = false; + }; + this.$$c.$$.after_update.push(reflect_attributes); + reflect_attributes(); + for (const type in this.$$l) { + for (const listener of this.$$l[type]) { + const unsub = this.$$c.$on(type, listener); + this.$$l_u.set(listener, unsub); + } + } + this.$$l = {}; + } + } + // We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte + // and setting attributes through setAttribute etc, this is helpful + attributeChangedCallback(attr2, _oldValue, newValue) { + var _a; + if (this.$$r) + return; + attr2 = this.$$g_p(attr2); + this.$$d[attr2] = get_custom_element_value(attr2, newValue, this.$$p_d, "toProp"); + (_a = this.$$c) == null ? void 0 : _a.$set({ [attr2]: this.$$d[attr2] }); + } + disconnectedCallback() { + this.$$cn = false; + Promise.resolve().then(() => { + if (!this.$$cn) { + this.$$c.$destroy(); + this.$$c = void 0; + } + }); + } + $$g_p(attribute_name) { + return Object.keys(this.$$p_d).find( + (key) => this.$$p_d[key].attribute === attribute_name || !this.$$p_d[key].attribute && key.toLowerCase() === attribute_name + ) || attribute_name; + } + }; +} +function get_custom_element_value(prop, value, props_definition, transform) { + var _a; + const type = (_a = props_definition[prop]) == null ? void 0 : _a.type; + value = type === "Boolean" && typeof value !== "boolean" ? value != null : value; + if (!transform || !props_definition[prop]) { + return value; + } else if (transform === "toAttribute") { + switch (type) { + case "Object": + case "Array": + return value == null ? null : JSON.stringify(value); + case "Boolean": + return value ? "" : null; + case "Number": + return value == null ? null : value; + default: + return value; + } + } else { + switch (type) { + case "Object": + case "Array": + return value && JSON.parse(value); + case "Boolean": + return value; + case "Number": + return value != null ? +value : value; + default: + return value; + } + } +} +var SvelteComponent = class { + constructor() { + /** + * ### PRIVATE API + * + * Do not use, may change at any time + * + * @type {any} + */ + __publicField(this, "$$"); + /** + * ### PRIVATE API + * + * Do not use, may change at any time + * + * @type {any} + */ + __publicField(this, "$$set"); + } + /** @returns {void} */ + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + /** + * @template {Extract} K + * @param {K} type + * @param {((e: Events[K]) => void) | null | undefined} callback + * @returns {() => void} + */ + $on(type, callback) { + if (!is_function(callback)) { + return noop; + } + const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + /** + * @param {Partial} props + * @returns {void} + */ + $set(props) { + if (this.$$set && !is_empty(props)) { + this.$$.skip_bound = true; + this.$$set(props); + this.$$.skip_bound = false; + } + } +}; + +// node_modules/svelte/src/shared/version.js +var PUBLIC_VERSION = "4"; + +// node_modules/svelte/src/runtime/internal/disclose-version/index.js +if (typeof window !== "undefined") + (window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION); + +// node_modules/tslib/tslib.es6.mjs +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +// node_modules/lucide-svelte/dist/defaultAttributes.js +var defaultAttributes = { + xmlns: "http://www.w3.org/2000/svg", + width: 24, + height: 24, + viewBox: "0 0 24 24", + fill: "none", + stroke: "currentColor", + "stroke-width": 2, + "stroke-linecap": "round", + "stroke-linejoin": "round" +}; +var defaultAttributes_default = defaultAttributes; + +// node_modules/lucide-svelte/dist/Icon.svelte +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[10] = list[i][0]; + child_ctx[11] = list[i][1]; + return child_ctx; +} +function create_dynamic_element(ctx) { + let svelte_element; + let svelte_element_levels = [ + /*attrs*/ + ctx[11] + ]; + let svelte_element_data = {}; + for (let i = 0; i < svelte_element_levels.length; i += 1) { + svelte_element_data = assign(svelte_element_data, svelte_element_levels[i]); } return { c() { - div = element("div"); - strong = element("strong"); - t0 = text(t0_value); - t1 = space(); - t2 = text(t2_value); - t3 = space(); - attr(div, "class", div_class_value = linkClass( - /*to*/ - ctx[10], - /*real*/ - ctx[9] - ) + " BC-prev svelte-11g23nm"); + svelte_element = svg_element( + /*tag*/ + ctx[10] + ); + set_svg_attributes(svelte_element, svelte_element_data); }, m(target, anchor) { - insert(target, div, anchor); - append(div, strong); - append(strong, t0); - append(div, t1); - append(div, t2); - append(div, t3); - if (!mounted) { - dispose = [ - listen(div, "click", click_handler), - listen(div, "mouseover", mouseover_handler) - ]; - mounted = true; - } + insert(target, svelte_element, anchor); }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (dirty & /*prev*/ - 2 && t0_value !== (t0_value = /*field*/ - ctx[8] + "")) - set_data(t0, t0_value); - if (dirty & /*prev*/ - 2 && t2_value !== (t2_value = /*to*/ - ctx[10] + "")) - set_data(t2, t2_value); - if (dirty & /*prev*/ - 2 && div_class_value !== (div_class_value = linkClass( - /*to*/ - ctx[10], - /*real*/ - ctx[9] - ) + " BC-prev svelte-11g23nm")) { - attr(div, "class", div_class_value); - } + p(ctx2, dirty) { + set_svg_attributes(svelte_element, svelte_element_data = get_spread_update(svelte_element_levels, [dirty & /*iconNode*/ + 32 && /*attrs*/ + ctx2[11]])); }, d(detaching) { - if (detaching) - detach(div); - mounted = false; - run_all(dispose); + if (detaching) { + detach(svelte_element); + } } }; } function create_each_block(ctx) { - let div; - let t0_value = ( - /*to*/ - ctx[10] + "" + let previous_tag = ( + /*tag*/ + ctx[10] ); - let t0; - let t1; - let strong; - let t2_value = ( - /*field*/ - ctx[8] + "" + let svelte_element_anchor; + let svelte_element = ( + /*tag*/ + ctx[10] && create_dynamic_element(ctx) ); - let t2; - let t3; - let div_class_value; - let mounted; - let dispose; - function click_handler_1(...args) { - return ( - /*click_handler_1*/ - ctx[6]( - /*to*/ - ctx[10], - ...args - ) - ); - } - function mouseover_handler_1(...args) { - return ( - /*mouseover_handler_1*/ - ctx[7]( - /*to*/ - ctx[10], - ...args - ) - ); - } return { c() { - div = element("div"); - t0 = text(t0_value); - t1 = space(); - strong = element("strong"); - t2 = text(t2_value); - t3 = space(); - attr(div, "class", div_class_value = linkClass( - /*to*/ - ctx[10], - /*real*/ - ctx[9] - ) + " BC-next svelte-11g23nm"); + if (svelte_element) + svelte_element.c(); + svelte_element_anchor = empty(); }, m(target, anchor) { - insert(target, div, anchor); - append(div, t0); - append(div, t1); - append(div, strong); - append(strong, t2); - append(div, t3); - if (!mounted) { - dispose = [ - listen(div, "click", click_handler_1), - listen(div, "mouseover", mouseover_handler_1) - ]; - mounted = true; - } + if (svelte_element) + svelte_element.m(target, anchor); + insert(target, svelte_element_anchor, anchor); }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (dirty & /*next*/ - 1 && t0_value !== (t0_value = /*to*/ - ctx[10] + "")) - set_data(t0, t0_value); - if (dirty & /*next*/ - 1 && t2_value !== (t2_value = /*field*/ - ctx[8] + "")) - set_data(t2, t2_value); - if (dirty & /*next*/ - 1 && div_class_value !== (div_class_value = linkClass( - /*to*/ - ctx[10], - /*real*/ - ctx[9] - ) + " BC-next svelte-11g23nm")) { - attr(div, "class", div_class_value); + p(ctx2, dirty) { + if ( + /*tag*/ + ctx2[10] + ) { + if (!previous_tag) { + svelte_element = create_dynamic_element(ctx2); + previous_tag = /*tag*/ + ctx2[10]; + svelte_element.c(); + svelte_element.m(svelte_element_anchor.parentNode, svelte_element_anchor); + } else if (safe_not_equal( + previous_tag, + /*tag*/ + ctx2[10] + )) { + svelte_element.d(1); + svelte_element = create_dynamic_element(ctx2); + previous_tag = /*tag*/ + ctx2[10]; + svelte_element.c(); + svelte_element.m(svelte_element_anchor.parentNode, svelte_element_anchor); + } else { + svelte_element.p(ctx2, dirty); + } + } else if (previous_tag) { + svelte_element.d(1); + svelte_element = null; + previous_tag = /*tag*/ + ctx2[10]; } }, d(detaching) { - if (detaching) - detach(div); - mounted = false; - run_all(dispose); + if (detaching) { + detach(svelte_element_anchor); + } + if (svelte_element) + svelte_element.d(detaching); } }; } function create_fragment(ctx) { - let div2; - let div0; - let span0; - let t; - let div1; - let span1; - let each_value_1 = ( - /*prev*/ - ctx[1] - ); - let each_blocks_1 = []; - for (let i = 0; i < each_value_1.length; i += 1) { - each_blocks_1[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); - } - let each_value = ( - /*next*/ - ctx[0] + var _a; + let svg; + let each_1_anchor; + let svg_stroke_width_value; + let svg_class_value; + let current; + let each_value = ensure_array_like( + /*iconNode*/ + ctx[5] ); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); } + const default_slot_template = ( + /*#slots*/ + ctx[9].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[8], + null + ); + let svg_levels = [ + defaultAttributes_default, + /*$$restProps*/ + ctx[6], + { width: ( + /*size*/ + ctx[2] + ) }, + { height: ( + /*size*/ + ctx[2] + ) }, + { stroke: ( + /*color*/ + ctx[1] + ) }, + { + "stroke-width": svg_stroke_width_value = /*absoluteStrokeWidth*/ + ctx[4] ? Number( + /*strokeWidth*/ + ctx[3] + ) * 24 / Number( + /*size*/ + ctx[2] + ) : ( + /*strokeWidth*/ + ctx[3] + ) + }, + { + class: svg_class_value = `lucide-icon lucide lucide-${/*name*/ + ctx[0]} ${/*$$props*/ + (_a = ctx[7].class) != null ? _a : ""}` + } + ]; + let svg_data = {}; + for (let i = 0; i < svg_levels.length; i += 1) { + svg_data = assign(svg_data, svg_levels[i]); + } return { c() { - div2 = element("div"); - div0 = element("div"); - span0 = element("span"); - for (let i = 0; i < each_blocks_1.length; i += 1) { - each_blocks_1[i].c(); - } - t = space(); - div1 = element("div"); - span1 = element("span"); + svg = svg_element("svg"); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(div0, "class", "BC-prevs svelte-11g23nm"); - attr(div1, "class", "BC-nexts svelte-11g23nm"); - attr(div2, "class", "BC-NextPrev-Container svelte-11g23nm"); + each_1_anchor = empty(); + if (default_slot) + default_slot.c(); + set_svg_attributes(svg, svg_data); }, m(target, anchor) { - insert(target, div2, anchor); - append(div2, div0); - append(div0, span0); - for (let i = 0; i < each_blocks_1.length; i += 1) { - if (each_blocks_1[i]) { - each_blocks_1[i].m(span0, null); - } - } - append(div2, t); - append(div2, div1); - append(div1, span1); + insert(target, svg, anchor); for (let i = 0; i < each_blocks.length; i += 1) { if (each_blocks[i]) { - each_blocks[i].m(span1, null); + each_blocks[i].m(svg, null); } } + append(svg, each_1_anchor); + if (default_slot) { + default_slot.m(svg, null); + } + current = true; }, p(ctx2, [dirty]) { - if (dirty & /*linkClass, prev, openOrSwitch, hoverPreview, activeLeafView*/ - 6) { - each_value_1 = /*prev*/ - ctx2[1]; - let i; - for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_1(ctx2, each_value_1, i); - if (each_blocks_1[i]) { - each_blocks_1[i].p(child_ctx, dirty); - } else { - each_blocks_1[i] = create_each_block_1(child_ctx); - each_blocks_1[i].c(); - each_blocks_1[i].m(span0, null); - } - } - for (; i < each_blocks_1.length; i += 1) { - each_blocks_1[i].d(1); - } - each_blocks_1.length = each_value_1.length; - } - if (dirty & /*linkClass, next, openOrSwitch, hoverPreview, activeLeafView*/ - 5) { - each_value = /*next*/ - ctx2[0]; + var _a2; + if (dirty & /*iconNode*/ + 32) { + each_value = ensure_array_like( + /*iconNode*/ + ctx2[5] + ); let i; for (i = 0; i < each_value.length; i += 1) { const child_ctx = get_each_context(ctx2, each_value, i); @@ -19474,7 +23823,7 @@ function create_fragment(ctx) { } else { each_blocks[i] = create_each_block(child_ctx); each_blocks[i].c(); - each_blocks[i].m(span1, null); + each_blocks[i].m(svg, each_1_anchor); } } for (; i < each_blocks.length; i += 1) { @@ -19482,3422 +23831,3288 @@ function create_fragment(ctx) { } each_blocks.length = each_value.length; } + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 256)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[8], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[8] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[8], + dirty, + null + ), + null + ); + } + } + set_svg_attributes(svg, svg_data = get_spread_update(svg_levels, [ + defaultAttributes_default, + dirty & /*$$restProps*/ + 64 && /*$$restProps*/ + ctx2[6], + (!current || dirty & /*size*/ + 4) && { width: ( + /*size*/ + ctx2[2] + ) }, + (!current || dirty & /*size*/ + 4) && { height: ( + /*size*/ + ctx2[2] + ) }, + (!current || dirty & /*color*/ + 2) && { stroke: ( + /*color*/ + ctx2[1] + ) }, + (!current || dirty & /*absoluteStrokeWidth, strokeWidth, size*/ + 28 && svg_stroke_width_value !== (svg_stroke_width_value = /*absoluteStrokeWidth*/ + ctx2[4] ? Number( + /*strokeWidth*/ + ctx2[3] + ) * 24 / Number( + /*size*/ + ctx2[2] + ) : ( + /*strokeWidth*/ + ctx2[3] + ))) && { "stroke-width": svg_stroke_width_value }, + (!current || dirty & /*name, $$props*/ + 129 && svg_class_value !== (svg_class_value = `lucide-icon lucide lucide-${/*name*/ + ctx2[0]} ${/*$$props*/ + (_a2 = ctx2[7].class) != null ? _a2 : ""}`)) && { class: svg_class_value } + ])); + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; }, - i: noop, - o: noop, d(detaching) { - if (detaching) - detach(div2); - destroy_each(each_blocks_1, detaching); + if (detaching) { + detach(svg); + } destroy_each(each_blocks, detaching); + if (default_slot) + default_slot.d(detaching); } }; } function instance($$self, $$props, $$invalidate) { - ; - ; - let { plugin } = $$props; - let { next } = $$props; - let { prev } = $$props; - const activeLeafView = app.workspace.activeLeaf.view; - const click_handler = async (to, e) => await openOrSwitch(to, e); - const mouseover_handler = (to, e) => hoverPreview(e, activeLeafView, to); - const click_handler_1 = async (to, e) => await openOrSwitch(to, e); - const mouseover_handler_1 = (to, e) => hoverPreview(e, activeLeafView, to); - $$self.$$set = ($$props2) => { - if ("plugin" in $$props2) - $$invalidate(3, plugin = $$props2.plugin); - if ("next" in $$props2) - $$invalidate(0, next = $$props2.next); - if ("prev" in $$props2) - $$invalidate(1, prev = $$props2.prev); + const omit_props_names = ["name", "color", "size", "strokeWidth", "absoluteStrokeWidth", "iconNode"]; + let $$restProps = compute_rest_props($$props, omit_props_names); + let { $$slots: slots = {}, $$scope } = $$props; + let { name } = $$props; + let { color = "currentColor" } = $$props; + let { size = 24 } = $$props; + let { strokeWidth = 2 } = $$props; + let { absoluteStrokeWidth = false } = $$props; + let { iconNode } = $$props; + $$self.$$set = ($$new_props) => { + $$invalidate(7, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + $$invalidate(6, $$restProps = compute_rest_props($$props, omit_props_names)); + if ("name" in $$new_props) + $$invalidate(0, name = $$new_props.name); + if ("color" in $$new_props) + $$invalidate(1, color = $$new_props.color); + if ("size" in $$new_props) + $$invalidate(2, size = $$new_props.size); + if ("strokeWidth" in $$new_props) + $$invalidate(3, strokeWidth = $$new_props.strokeWidth); + if ("absoluteStrokeWidth" in $$new_props) + $$invalidate(4, absoluteStrokeWidth = $$new_props.absoluteStrokeWidth); + if ("iconNode" in $$new_props) + $$invalidate(5, iconNode = $$new_props.iconNode); + if ("$$scope" in $$new_props) + $$invalidate(8, $$scope = $$new_props.$$scope); }; + $$props = exclude_internal_props($$props); return [ - next, - prev, - activeLeafView, - plugin, - click_handler, - mouseover_handler, - click_handler_1, - mouseover_handler_1 + name, + color, + size, + strokeWidth, + absoluteStrokeWidth, + iconNode, + $$restProps, + $$props, + $$scope, + slots ]; } -var NextPrev = class extends SvelteComponent { +var Icon = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance, create_fragment, safe_not_equal, { plugin: 3, next: 0, prev: 1 }, add_css); + init(this, options, instance, create_fragment, safe_not_equal, { + name: 0, + color: 1, + size: 2, + strokeWidth: 3, + absoluteStrokeWidth: 4, + iconNode: 5 + }); } }; -var NextPrev_default = NextPrev; +var Icon_default = Icon; -// src/Components/TrailGrid.svelte -function add_css2(target) { - append_styles(target, "svelte-dgw0hd", "div.BC-grid-wrapper.svelte-dgw0hd.svelte-dgw0hd{position:relative}div.BC-trail-grid.svelte-dgw0hd.svelte-dgw0hd{border:2px solid var(--background-modifier-border);display:grid;align-items:stretch;width:auto;height:auto}.BC-grid-options.svelte-dgw0hd.svelte-dgw0hd{position:absolute;top:0px;right:0px;height:35px;width:32px;border:1px solid var(--background-modifier-border);border-radius:10px;text-align:center;transition:width 0.3s;overflow-wrap:normal;overflow:hidden}div.BC-grid-options.svelte-dgw0hd.svelte-dgw0hd:hover{padding:5px;width:fit-content}div.BC-grid-options.svelte-dgw0hd:hover .BC-grid-options-icon.svelte-dgw0hd{display:none}.BC-grid-options-options.svelte-dgw0hd.svelte-dgw0hd{display:none}div.BC-grid-options.svelte-dgw0hd:hover .BC-grid-options-options.svelte-dgw0hd{display:unset}.BC-depth-button.svelte-dgw0hd.svelte-dgw0hd{padding:3px 5px}div.BC-trail-grid-item.svelte-dgw0hd.svelte-dgw0hd{display:flex;flex-direction:column;border:1px solid var(--background-modifier-border);align-items:center;justify-content:center;padding:2px;font-size:smaller}div.BC-trail-grid-item.BC-filler.svelte-dgw0hd.svelte-dgw0hd{opacity:0.7}"); -} -function get_each_context2(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[15] = list[i]; - child_ctx[17] = i; - return child_ctx; -} -function get_each_context_12(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[18] = list[i].value; - child_ctx[19] = list[i].first; - child_ctx[20] = list[i].last; - return child_ctx; -} -function create_each_block_12(ctx) { - var _a; - let div1; - let div0; - let t0_value = ((_a = getAlt( - /*value*/ - ctx[18], - /*plugin*/ - ctx[0] - )) != null ? _a : dropDendron( - /*value*/ - ctx[18], - /*settings*/ - ctx[5] - )) + ""; - let t0; - let div0_class_value; - let t1; - let div1_class_value; - let mounted; - let dispose; - function click_handler(...args) { - return ( - /*click_handler*/ - ctx[10]( - /*value*/ - ctx[18], - ...args - ) - ); - } - function mouseover_handler(...args) { - return ( - /*mouseover_handler*/ - ctx[11]( - /*value*/ - ctx[18], - ...args - ) - ); - } - return { - c() { - div1 = element("div"); - div0 = element("div"); - t0 = text(t0_value); - t1 = space(); - attr(div0, "class", div0_class_value = null_to_empty(linkClass( - /*value*/ - ctx[18] - )) + " svelte-dgw0hd"); - attr(div1, "class", div1_class_value = "BC-trail-grid-item " + /*value*/ - (ctx[18] === "" ? "BC-filler" : "") + " svelte-dgw0hd"); - set_style( - div1, - "grid-area", - /*first*/ - ctx[19] + 1 + " / " + /*i*/ - (ctx[17] + 1) + " / " + /*last*/ - (ctx[20] + 2) + " / " + /*i*/ - (ctx[17] + 2) - ); - }, - m(target, anchor) { - insert(target, div1, anchor); - append(div1, div0); - append(div0, t0); - append(div1, t1); - if (!mounted) { - dispose = [ - listen(div1, "click", click_handler), - listen(div1, "mouseover", mouseover_handler) - ]; - mounted = true; - } - }, - p(new_ctx, dirty) { - var _a2; - ctx = new_ctx; - if (dirty & /*allRuns, plugin*/ - 17 && t0_value !== (t0_value = ((_a2 = getAlt( - /*value*/ - ctx[18], - /*plugin*/ - ctx[0] - )) != null ? _a2 : dropDendron( - /*value*/ - ctx[18], - /*settings*/ - ctx[5] - )) + "")) - set_data(t0, t0_value); - if (dirty & /*allRuns*/ - 16 && div0_class_value !== (div0_class_value = null_to_empty(linkClass( - /*value*/ - ctx[18] - )) + " svelte-dgw0hd")) { - attr(div0, "class", div0_class_value); - } - if (dirty & /*allRuns*/ - 16 && div1_class_value !== (div1_class_value = "BC-trail-grid-item " + /*value*/ - (ctx[18] === "" ? "BC-filler" : "") + " svelte-dgw0hd")) { - attr(div1, "class", div1_class_value); - } - if (dirty & /*allRuns*/ - 16) { - set_style( - div1, - "grid-area", - /*first*/ - ctx[19] + 1 + " / " + /*i*/ - (ctx[17] + 1) + " / " + /*last*/ - (ctx[20] + 2) + " / " + /*i*/ - (ctx[17] + 2) - ); - } - }, - d(detaching) { - if (detaching) - detach(div1); - mounted = false; - run_all(dispose); - } - }; -} -function create_each_block2(ctx) { - let each_1_anchor; - let each_value_1 = ( - /*allRuns*/ - ctx[4][ - /*i*/ - ctx[17] - ] +// node_modules/lucide-svelte/dist/icons/arrow-down-wide-narrow.svelte +function create_default_slot(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null ); - let each_blocks = []; - for (let i = 0; i < each_value_1.length; i += 1) { - each_blocks[i] = create_each_block_12(get_each_context_12(ctx, each_value_1, i)); - } return { c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - each_1_anchor = empty(); + if (default_slot) + default_slot.c(); }, m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(target, anchor); - } + if (default_slot) { + default_slot.m(target, anchor); } - insert(target, each_1_anchor, anchor); + current = true; }, p(ctx2, dirty) { - if (dirty & /*allRuns, openOrSwitch, hoverPreview, activeLeafView, linkClass, getAlt, plugin, dropDendron, settings*/ - 113) { - each_value_1 = /*allRuns*/ - ctx2[4][ - /*i*/ - ctx2[17] - ]; - let i; - for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_12(ctx2, each_value_1, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block_12(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value_1.length; } }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) - detach(each_1_anchor); + if (default_slot) + default_slot.d(detaching); } }; } function create_fragment2(ctx) { - let div2; - let div0; - let t0; - let div1; - let span3; - let span0; - let t2; - let span2; - let button0; - let t3; - let button0_disabled_value; - let t4; - let span1; - let t5; - let t6; - let button1; - let t7; - let button1_disabled_value; - let mounted; - let dispose; - let each_value = ( - /*transposedTrails*/ - ctx[3] - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i)); + let icon; + let current; + const icon_spread_levels = [ + { name: "arrow-down-wide-narrow" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); } + icon = new Icon_default({ props: icon_props }); return { c() { - div2 = element("div"); - div0 = element("div"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - t0 = space(); - div1 = element("div"); - span3 = element("span"); - span0 = element("span"); - span0.textContent = "\u2699\uFE0F"; - t2 = space(); - span2 = element("span"); - button0 = element("button"); - t3 = text("-"); - t4 = space(); - span1 = element("span"); - t5 = text( - /*depth*/ - ctx[1] - ); - t6 = space(); - button1 = element("button"); - t7 = text("+"); - attr(div0, "class", "BC-trail-grid svelte-dgw0hd"); - set_style(div0, "grid-template-columns", "1fr ".repeat( - /*transposedTrails*/ - ctx[3].length - )); - set_style(div0, "grid-template-rows", "1fr ".repeat( - /*slicedTrails*/ - ctx[2].length - )); - attr(span0, "class", "BC-grid-options-icon svelte-dgw0hd"); - attr(button0, "class", "BC-depth-button svelte-dgw0hd"); - button0.disabled = button0_disabled_value = /*depth*/ - ctx[1] === 1; - attr(span1, "class", "tree-item-flair"); - attr(button1, "class", "BC-depth-button svelte-dgw0hd"); - button1.disabled = button1_disabled_value = /*depth*/ - ctx[1] === /*maxLength*/ - ctx[7]; - attr(span2, "class", "BC-grid-options-options svelte-dgw0hd"); - attr(div1, "class", "BC-grid-options svelte-dgw0hd"); - attr(div2, "class", "BC-grid-wrapper svelte-dgw0hd"); + create_component(icon.$$.fragment); }, m(target, anchor) { - insert(target, div2, anchor); - append(div2, div0); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(div0, null); - } - } - append(div2, t0); - append(div2, div1); - append(div1, span3); - append(span3, span0); - append(span3, t2); - append(span3, span2); - append(span2, button0); - append(button0, t3); - append(span2, t4); - append(span2, span1); - append(span1, t5); - append(span2, t6); - append(span2, button1); - append(button1, t7); - if (!mounted) { - dispose = [ - listen( - button0, - "click", - /*click_handler_1*/ - ctx[12] - ), - listen( - button1, - "click", - /*click_handler_2*/ - ctx[13] - ) - ]; - mounted = true; - } + mount_component(icon, target, anchor); + current = true; }, p(ctx2, [dirty]) { - if (dirty & /*allRuns, openOrSwitch, hoverPreview, activeLeafView, linkClass, getAlt, plugin, dropDendron, settings, transposedTrails*/ - 121) { - each_value = /*transposedTrails*/ - ctx2[3]; - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context2(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block2(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(div0, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value.length; - } - if (dirty & /*transposedTrails*/ - 8) { - set_style(div0, "grid-template-columns", "1fr ".repeat( - /*transposedTrails*/ - ctx2[3].length - )); - } - if (dirty & /*slicedTrails*/ - 4) { - set_style(div0, "grid-template-rows", "1fr ".repeat( - /*slicedTrails*/ - ctx2[2].length - )); - } - if (dirty & /*depth*/ - 2 && button0_disabled_value !== (button0_disabled_value = /*depth*/ - ctx2[1] === 1)) { - button0.disabled = button0_disabled_value; - } - if (dirty & /*depth*/ - 2) - set_data( - t5, - /*depth*/ + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ ctx2[1] - ); - if (dirty & /*depth*/ - 2 && button1_disabled_value !== (button1_disabled_value = /*depth*/ - ctx2[1] === /*maxLength*/ - ctx2[7])) { - button1.disabled = button1_disabled_value; + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; }, - i: noop, - o: noop, d(detaching) { - if (detaching) - detach(div2); - destroy_each(each_blocks, detaching); - mounted = false; - run_all(dispose); + destroy_component(icon, detaching); } }; } function instance2($$self, $$props, $$invalidate) { - let paddedTrails; - let transposedTrails; - let allRuns; - ; - let { sortedTrails } = $$props; - let { plugin } = $$props; - const { settings } = plugin; - const { gridDefaultDepth } = settings; - const activeLeafView = app.workspace.activeLeaf.view; - const maxLength = sortedTrails.last().length; - let depth = Math.min(maxLength, gridDefaultDepth); - let slicedTrails = sortedTrails; - const click_handler = async (value, e) => await openOrSwitch(value, e); - const mouseover_handler = (value, e) => hoverPreview(e, activeLeafView, value); - const click_handler_1 = () => $$invalidate(1, depth -= 1); - const click_handler_2 = () => $$invalidate(1, depth += 1); - $$self.$$set = ($$props2) => { - if ("sortedTrails" in $$props2) - $$invalidate(8, sortedTrails = $$props2.sortedTrails); - if ("plugin" in $$props2) - $$invalidate(0, plugin = $$props2.plugin); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*sortedTrails, depth, slicedTrails*/ - 262) { - $: { - $$invalidate(2, slicedTrails = []); - sortedTrails.forEach((trail) => { - const slice2 = trail.slice(maxLength - depth); - if (slice2.length) - slicedTrails.push(slice2); - }); - } - } - if ($$self.$$.dirty & /*slicedTrails, depth*/ - 6) { - $: - $$invalidate(9, paddedTrails = slicedTrails.map((trail) => padArray(trail, depth))); - } - if ($$self.$$.dirty & /*paddedTrails*/ - 512) { - $: - $$invalidate(3, transposedTrails = transpose(paddedTrails)); - } - if ($$self.$$.dirty & /*transposedTrails*/ - 8) { - $: - $$invalidate(4, allRuns = transposedTrails.map(runs)); - } - }; - return [ - plugin, - depth, - slicedTrails, - transposedTrails, - allRuns, - settings, - activeLeafView, - maxLength, - sortedTrails, - paddedTrails, - click_handler, - mouseover_handler, - click_handler_1, - click_handler_2 + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "m3 16 4 4 4-4" }], + ["path", { "d": "M7 20V4" }], + ["path", { "d": "M11 4h10" }], + ["path", { "d": "M11 8h7" }], + ["path", { "d": "M11 12h4" }] ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; } -var TrailGrid = class extends SvelteComponent { +var Arrow_down_wide_narrow = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance2, create_fragment2, safe_not_equal, { sortedTrails: 8, plugin: 0 }, add_css2); + init(this, options, instance2, create_fragment2, safe_not_equal, {}); } }; -var TrailGrid_default = TrailGrid; +var arrow_down_wide_narrow_default = Arrow_down_wide_narrow; -// src/Components/TrailPath.svelte -function add_css3(target) { - append_styles(target, "svelte-3c1frp", "span.BC-trail-path-container.svelte-3c1frp{display:flex;justify-content:space-between}"); +// node_modules/lucide-svelte/dist/icons/arrow-down.svelte +function create_default_slot2(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; } -function get_each_context3(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[13] = list[i]; - return child_ctx; +function create_fragment3(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "arrow-down" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot2] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; } -function get_each_context_13(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[16] = list[i]; - child_ctx[18] = i; - return child_ctx; +function instance3($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [["path", { "d": "M12 5v14" }], ["path", { "d": "m19 12-7 7-7-7" }]]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; } +var Arrow_down = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance3, create_fragment3, safe_not_equal, {}); + } +}; +var arrow_down_default = Arrow_down; + +// node_modules/lucide-svelte/dist/icons/arrow-up-narrow-wide.svelte +function create_default_slot3(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment4(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "arrow-up-narrow-wide" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot3] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance4($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "m3 8 4-4 4 4" }], + ["path", { "d": "M7 4v16" }], + ["path", { "d": "M11 12h4" }], + ["path", { "d": "M11 16h7" }], + ["path", { "d": "M11 20h10" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Arrow_up_narrow_wide = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance4, create_fragment4, safe_not_equal, {}); + } +}; +var arrow_up_narrow_wide_default = Arrow_up_narrow_wide; + +// node_modules/lucide-svelte/dist/icons/arrow-up.svelte +function create_default_slot4(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment5(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "arrow-up" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot4] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance5($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [["path", { "d": "m5 12 7-7 7 7" }], ["path", { "d": "M12 19V5" }]]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Arrow_up = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance5, create_fragment5, safe_not_equal, {}); + } +}; +var arrow_up_default = Arrow_up; + +// node_modules/lucide-svelte/dist/icons/check.svelte +function create_default_slot5(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment6(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "check" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot5] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance6($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [["path", { "d": "M20 6 9 17l-5-5" }]]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Check = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance6, create_fragment6, safe_not_equal, {}); + } +}; +var check_default = Check; + +// node_modules/lucide-svelte/dist/icons/chevron-down.svelte +function create_default_slot6(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment7(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "chevron-down" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot6] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance7($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [["path", { "d": "m6 9 6 6 6-6" }]]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Chevron_down = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance7, create_fragment7, safe_not_equal, {}); + } +}; +var chevron_down_default = Chevron_down; + +// node_modules/lucide-svelte/dist/icons/chevron-right.svelte +function create_default_slot7(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment8(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "chevron-right" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot7] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance8($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [["path", { "d": "m9 18 6-6-6-6" }]]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Chevron_right = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance8, create_fragment8, safe_not_equal, {}); + } +}; +var chevron_right_default = Chevron_right; + +// node_modules/lucide-svelte/dist/icons/chevrons-down-up.svelte +function create_default_slot8(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment9(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "chevrons-down-up" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot8] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance9($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [["path", { "d": "m7 20 5-5 5 5" }], ["path", { "d": "m7 4 5 5 5-5" }]]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Chevrons_down_up = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance9, create_fragment9, safe_not_equal, {}); + } +}; +var chevrons_down_up_default = Chevrons_down_up; + +// node_modules/lucide-svelte/dist/icons/chevrons-up-down.svelte +function create_default_slot9(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment10(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "chevrons-up-down" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot9] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance10($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [["path", { "d": "m7 15 5 5 5-5" }], ["path", { "d": "m7 9 5-5 5 5" }]]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Chevrons_up_down = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance10, create_fragment10, safe_not_equal, {}); + } +}; +var chevrons_up_down_default = Chevrons_up_down; + +// node_modules/lucide-svelte/dist/icons/clipboard.svelte +function create_default_slot10(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment11(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "clipboard" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot10] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance11($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "rect", + { + "width": "8", + "height": "4", + "x": "8", + "y": "2", + "rx": "1", + "ry": "1" + } + ], + [ + "path", + { + "d": "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2" + } + ] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Clipboard = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance11, create_fragment11, safe_not_equal, {}); + } +}; +var clipboard_default = Clipboard; + +// node_modules/lucide-svelte/dist/icons/file-json.svelte +function create_default_slot11(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment12(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "file-json" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot11] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance12($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" + } + ], + ["path", { "d": "M14 2v4a2 2 0 0 0 2 2h4" }], + [ + "path", + { + "d": "M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1" + } + ], + [ + "path", + { + "d": "M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1" + } + ] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var File_json = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance12, create_fragment12, safe_not_equal, {}); + } +}; +var file_json_default = File_json; + +// node_modules/lucide-svelte/dist/icons/group.svelte +function create_default_slot12(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment13(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "group" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot12] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance13($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "M3 7V5c0-1.1.9-2 2-2h2" }], + ["path", { "d": "M17 3h2c1.1 0 2 .9 2 2v2" }], + ["path", { "d": "M21 17v2c0 1.1-.9 2-2 2h-2" }], + ["path", { "d": "M7 21H5c-1.1 0-2-.9-2-2v-2" }], + [ + "rect", + { + "width": "7", + "height": "5", + "x": "7", + "y": "7", + "rx": "1" + } + ], + [ + "rect", + { + "width": "7", + "height": "5", + "x": "10", + "y": "12", + "rx": "1" + } + ] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Group = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance13, create_fragment13, safe_not_equal, {}); + } +}; +var group_default = Group; + +// node_modules/lucide-svelte/dist/icons/image.svelte +function create_default_slot13(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment14(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "image" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot13] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance14($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "rect", + { + "width": "18", + "height": "18", + "x": "3", + "y": "3", + "rx": "2", + "ry": "2" + } + ], + ["circle", { "cx": "9", "cy": "9", "r": "2" }], + [ + "path", + { + "d": "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" + } + ] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Image = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance14, create_fragment14, safe_not_equal, {}); + } +}; +var image_default = Image; + +// node_modules/lucide-svelte/dist/icons/merge.svelte +function create_default_slot14(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment15(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "merge" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot14] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance15($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "m8 6 4-4 4 4" }], + [ + "path", + { + "d": "M12 2v10.3a4 4 0 0 1-1.172 2.872L4 22" + } + ], + ["path", { "d": "m20 22-5-5" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Merge = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance15, create_fragment15, safe_not_equal, {}); + } +}; +var merge_default = Merge; + +// node_modules/lucide-svelte/dist/icons/pencil.svelte +function create_default_slot15(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment16(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "pencil" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot15] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance16($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z" + } + ], + ["path", { "d": "m15 5 4 4" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Pencil = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance16, create_fragment16, safe_not_equal, {}); + } +}; +var pencil_default = Pencil; + +// node_modules/lucide-svelte/dist/icons/plus.svelte +function create_default_slot16(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment17(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "plus" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot16] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance17($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [["path", { "d": "M5 12h14" }], ["path", { "d": "M12 5v14" }]]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Plus = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance17, create_fragment17, safe_not_equal, {}); + } +}; +var plus_default = Plus; + +// node_modules/lucide-svelte/dist/icons/rotate-ccw.svelte +function create_default_slot17(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment18(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "rotate-ccw" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot17] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance18($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" + } + ], + ["path", { "d": "M3 3v5h5" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Rotate_ccw = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance18, create_fragment18, safe_not_equal, {}); + } +}; +var rotate_ccw_default = Rotate_ccw; + +// node_modules/lucide-svelte/dist/icons/save.svelte +function create_default_slot18(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment19(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "save" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot18] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance19($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z" + } + ], + ["polyline", { "points": "17 21 17 13 7 13 7 21" }], + ["polyline", { "points": "7 3 7 8 15 8" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Save = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance19, create_fragment19, safe_not_equal, {}); + } +}; +var save_default = Save; + +// node_modules/lucide-svelte/dist/icons/split.svelte +function create_default_slot19(ctx) { + let current; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment20(ctx) { + let icon; + let current; + const icon_spread_levels = [ + { name: "split" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot19] }, + $$scope: { ctx } + }; + for (let i = 0; i < icon_spread_levels.length; i += 1) { + icon_props = assign(icon_props, icon_spread_levels[i]); + } + icon = new Icon_default({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current) + return; + transition_in(icon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance20($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "M16 3h5v5" }], + ["path", { "d": "M8 3H3v5" }], + [ + "path", + { + "d": "M12 22v-8.3a4 4 0 0 0-1.172-2.872L3 3" + } + ], + ["path", { "d": "m15 9 6-6" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Split = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance20, create_fragment20, safe_not_equal, {}); + } +}; +var split_default = Split; + +// src/components/settings/EdgeFieldSettings.svelte +var import_obsidian7 = require("obsidian"); + +// src/const/index.ts +var ICON_SIZE = 20; + +// src/components/obsidian/tag.svelte function create_else_block(ctx) { - let each_1_anchor; - let each_value_1 = ( - /*trail*/ - ctx[13] - ); - let each_blocks = []; - for (let i = 0; i < each_value_1.length; i += 1) { - each_blocks[i] = create_each_block_13(get_each_context_13(ctx, each_value_1, i)); - } - return { - c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - each_1_anchor = empty(); - }, - m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(target, anchor); - } - } - insert(target, each_1_anchor, anchor); - }, - p(ctx2, dirty) { - if (dirty & /*trailSeperator, trailsToShow, openOrSwitch, hoverPreview, view, getAlt, plugin, dropDendron, settings*/ - 186) { - each_value_1 = /*trail*/ - ctx2[13]; - let i; - for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_13(ctx2, each_value_1, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block_13(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value_1.length; - } - }, - d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) - detach(each_1_anchor); - } - }; -} -function create_if_block_1(ctx) { - let span; - return { - c() { - span = element("span"); - span.textContent = `${/*noPathMessage*/ - ctx[6]}`; - attr(span, "class", "BC-empty-trail"); - }, - m(target, anchor) { - insert(target, span, anchor); - }, - p: noop, - d(detaching) { - if (detaching) - detach(span); - } - }; -} -function create_if_block_2(ctx) { - let span; - return { - c() { - span = element("span"); - span.textContent = `${" " + /*trailSeperator*/ - ctx[7] + " "}`; - attr(span, "class", "BC-trail-sep"); - }, - m(target, anchor) { - insert(target, span, anchor); - }, - p: noop, - d(detaching) { - if (detaching) - detach(span); - } - }; -} -function create_each_block_13(ctx) { - var _a; - let span; - let t0_value = ((_a = getAlt( - /*crumb*/ - ctx[16], - /*plugin*/ - ctx[1] - )) != null ? _a : dropDendron( - /*crumb*/ - ctx[16], - /*settings*/ - ctx[4] - )) + ""; - let t0; - let t1; - let if_block_anchor; - let mounted; - let dispose; - function click_handler(...args) { - return ( - /*click_handler*/ - ctx[8]( - /*crumb*/ - ctx[16], - ...args - ) - ); - } - function mouseover_handler(...args) { - return ( - /*mouseover_handler*/ - ctx[9]( - /*crumb*/ - ctx[16], - ...args - ) - ); - } - let if_block = ( - /*i*/ - ctx[18] < /*trail*/ - ctx[13].length - 1 && create_if_block_2(ctx) - ); - return { - c() { - span = element("span"); - t0 = text(t0_value); - t1 = space(); - if (if_block) - if_block.c(); - if_block_anchor = empty(); - attr(span, "class", "internal-link BC-Link"); - }, - m(target, anchor) { - insert(target, span, anchor); - append(span, t0); - insert(target, t1, anchor); - if (if_block) - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - if (!mounted) { - dispose = [ - listen(span, "click", click_handler), - listen(span, "mouseover", mouseover_handler) - ]; - mounted = true; - } - }, - p(new_ctx, dirty) { - var _a2; - ctx = new_ctx; - if (dirty & /*trailsToShow, plugin*/ - 10 && t0_value !== (t0_value = ((_a2 = getAlt( - /*crumb*/ - ctx[16], - /*plugin*/ - ctx[1] - )) != null ? _a2 : dropDendron( - /*crumb*/ - ctx[16], - /*settings*/ - ctx[4] - )) + "")) - set_data(t0, t0_value); - if ( - /*i*/ - ctx[18] < /*trail*/ - ctx[13].length - 1 - ) { - if (if_block) { - if_block.p(ctx, dirty); - } else { - if_block = create_if_block_2(ctx); - if_block.c(); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - }, - d(detaching) { - if (detaching) - detach(span); - if (detaching) - detach(t1); - if (if_block) - if_block.d(detaching); - if (detaching) - detach(if_block_anchor); - mounted = false; - run_all(dispose); - } - }; -} -function create_each_block3(ctx) { - let div; - let t; - function select_block_type(ctx2, dirty) { - if (!/*trail*/ - ctx2[13].length) - return create_if_block_1; - return create_else_block; - } - let current_block_type = select_block_type(ctx, -1); - let if_block = current_block_type(ctx); - return { - c() { - div = element("div"); - if_block.c(); - t = space(); - }, - m(target, anchor) { - insert(target, div, anchor); - if_block.m(div, null); - append(div, t); - }, - p(ctx2, dirty) { - if (current_block_type === (current_block_type = select_block_type(ctx2, dirty)) && if_block) { - if_block.p(ctx2, dirty); - } else { - if_block.d(1); - if_block = current_block_type(ctx2); - if (if_block) { - if_block.c(); - if_block.m(div, t); - } - } - }, - d(detaching) { - if (detaching) - detach(div); - if_block.d(); - } - }; -} -function create_if_block(ctx) { - let div; - let button; + let a; let t; let mounted; let dispose; return { c() { - div = element("div"); - button = element("button"); + a = element("a"); t = text( - /*trail_length*/ + /*tag*/ + ctx[0] + ); + attr( + a, + "title", + /*title*/ ctx[2] ); - attr(button, "class", "button-div"); + attr(a, "class", "tag"); + attr(a, "tabindex", "0"); + attr(a, "role", "button"); }, m(target, anchor) { - insert(target, div, anchor); - append(div, button); - append(button, t); + insert(target, a, anchor); + append(a, t); if (!mounted) { dispose = [ listen( - button, + a, "click", /*click_handler_1*/ - ctx[10] + ctx[5] ), listen( - button, + a, + "keydown", + /*keydown_handler*/ + ctx[6] + ), + listen( + a, "contextmenu", - /*contextmenu_handler*/ - ctx[11] + /*contextmenu_handler_1*/ + ctx[7] ) ]; mounted = true; } }, p(ctx2, dirty) { - if (dirty & /*trail_length*/ - 4) + if (dirty & /*tag*/ + 1) set_data( t, - /*trail_length*/ - ctx2[2] - ); - }, - d(detaching) { - if (detaching) - detach(div); - mounted = false; - run_all(dispose); - } - }; -} -function create_fragment3(ctx) { - let span; - let div; - let t; - let each_value = ( - /*trailsToShow*/ - ctx[3] - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block3(get_each_context3(ctx, each_value, i)); - } - let if_block = ( - /*sortedTrails*/ - ctx[0].length > 1 && create_if_block(ctx) - ); - return { - c() { - span = element("span"); - div = element("div"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - t = space(); - if (if_block) - if_block.c(); - attr(div, "class", "trails-div"); - attr(span, "class", "BC-trail-path-container svelte-3c1frp"); - }, - m(target, anchor) { - insert(target, span, anchor); - append(span, div); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(div, null); - } - } - append(span, t); - if (if_block) - if_block.m(span, null); - }, - p(ctx2, [dirty]) { - if (dirty & /*noPathMessage, trailsToShow, trailSeperator, openOrSwitch, hoverPreview, view, getAlt, plugin, dropDendron, settings*/ - 250) { - each_value = /*trailsToShow*/ - ctx2[3]; - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context3(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block3(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(div, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value.length; - } - if ( - /*sortedTrails*/ - ctx2[0].length > 1 - ) { - if (if_block) { - if_block.p(ctx2, dirty); - } else { - if_block = create_if_block(ctx2); - if_block.c(); - if_block.m(span, null); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - }, - i: noop, - o: noop, - d(detaching) { - if (detaching) - detach(span); - destroy_each(each_blocks, detaching); - if (if_block) - if_block.d(); - } - }; -} -function instance3($$self, $$props, $$invalidate) { - let trailsToShow; - ; - let { sortedTrails } = $$props; - let { plugin } = $$props; - const { settings } = plugin; - const { view } = app.workspace.activeLeaf; - let { showAll, noPathMessage, trailSeperator } = settings; - let trail_length = showAll; - const click_handler = async (crumb, e) => await openOrSwitch(crumb, e); - const mouseover_handler = (crumb, e) => hoverPreview(e, view, crumb); - const click_handler_1 = () => $$invalidate(2, trail_length = getTrailLength(trail_length)); - const contextmenu_handler = (e) => { - e.preventDefault(); - $$invalidate(2, trail_length = getTrailLength(trail_length, -1)); - }; - $$self.$$set = ($$props2) => { - if ("sortedTrails" in $$props2) - $$invalidate(0, sortedTrails = $$props2.sortedTrails); - if ("plugin" in $$props2) - $$invalidate(1, plugin = $$props2.plugin); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*trail_length, sortedTrails*/ - 5) { - $: - $$invalidate(3, trailsToShow = trail_length == "All" ? sortedTrails : trail_length == "Shortest" ? [sortedTrails[0]] : [sortedTrails.last()]); - } - }; - return [ - sortedTrails, - plugin, - trail_length, - trailsToShow, - settings, - view, - noPathMessage, - trailSeperator, - click_handler, - mouseover_handler, - click_handler_1, - contextmenu_handler - ]; -} -var TrailPath = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance3, create_fragment3, safe_not_equal, { sortedTrails: 0, plugin: 1 }, add_css3); - } -}; -var TrailPath_default = TrailPath; - -// src/Visualisations/Juggl.ts -var import_loglevel11 = __toESM(require_loglevel()); -var import_obsidian7 = require("obsidian"); - -// src/Commands/CreateIndex.ts -var import_lodash = __toESM(require_lodash()); -var import_loglevel10 = __toESM(require_loglevel()); -function addAliasesToIndex(plugin, index2) { - var _a, _b, _c, _d; - const { aliasesInIndex } = plugin.settings; - const lines = index2.slice().split("\n"); - if (aliasesInIndex) { - for (let line of lines) { - const [indent, ...content] = line.split("- "); - const note = content.join("- "); - if (!note) - continue; - const currFile = app.metadataCache.getFirstLinkpathDest(note, ""); - if (currFile !== null) { - const cache = app.metadataCache.getFileCache(currFile); - const alias = (_b = (_a = cache == null ? void 0 : cache.frontmatter) == null ? void 0 : _a.alias) != null ? _b : []; - const aliases = (_d = (_c = cache == null ? void 0 : cache.frontmatter) == null ? void 0 : _c.aliases) != null ? _d : []; - const allAliases = [...[alias].flat(3), ...[aliases].flat(3)]; - if (allAliases.length) { - line += ` (${allAliases.join(", ")})`; - } - } - } - } - return lines.join("\n"); -} -function createIndex(allPaths, asWikilinks, indent = " ") { - let index2 = ""; - const copy3 = (0, import_lodash.cloneDeep)(allPaths); - const reversed = copy3.map((path2) => path2.reverse()); - reversed.forEach((path2) => path2.shift()); - const realIndent = indent === "\\t" ? " " : indent; - const visited = {}; - reversed.forEach((path2) => { - for (let depth = 0; depth < path2.length; depth++) { - const currNode = path2[depth]; - if (visited.hasOwnProperty(currNode) && visited[currNode].includes(depth)) - continue; - else { - index2 += `${realIndent.repeat(depth)}- ${asWikilinks ? makeWiki(currNode) : currNode} -`; - if (!visited.hasOwnProperty(currNode)) - visited[currNode] = []; - visited[currNode].push(depth); - } - } - }); - return index2; -} -async function copyLocalIndex(plugin) { - const { settings, closedG } = plugin; - const { wikilinkIndex, createIndexIndent } = settings; - const { basename } = getCurrFile(); - const onlyDowns = getSubInDirs(closedG, "down"); - const allPaths = dfsAllPaths(onlyDowns, basename); - const index2 = addAliasesToIndex(plugin, createIndex(allPaths, wikilinkIndex, createIndexIndent)); - (0, import_loglevel10.info)({ index: index2 }); - await copy(index2); -} -async function copyGlobalIndex(plugin) { - const { settings, closedG } = plugin; - const { wikilinkIndex, createIndexIndent } = settings; - const onlyDowns = getSubInDirs(closedG, "down"); - const onlyUps = getSubInDirs(closedG, "up"); - const sinks = getSinks(onlyUps); - let globalIndex = ""; - sinks.forEach((terminal) => { - globalIndex += terminal + "\n"; - const allPaths = dfsAllPaths(onlyDowns, terminal); - globalIndex += addAliasesToIndex(plugin, createIndex(allPaths, wikilinkIndex, createIndexIndent)) + "\n"; - }); - (0, import_loglevel10.info)({ globalIndex }); - await copy(globalIndex); -} -var indexToLinePairs = (index2, flat = false) => index2.split("\n").map((line) => { - const [indent, ...content] = line.split("- "); - return [flat ? "" : indent, content.join("- ")]; -}).filter((pair) => pair[1] !== ""); - -// src/Components/JugglButton.svelte -function create_fragment4(ctx) { - let button; - let t; - let mounted; - let dispose; - return { - c() { - button = element("button"); - t = text( - /*renderedIcon*/ - ctx[3] - ); - attr(button, "type", "button"); - attr(button, "class", "juggl-button"); - attr( - button, - "aria-label", - /*title*/ - ctx[2] - ); - button.disabled = /*disabled*/ - ctx[1]; - }, - m(target, anchor) { - insert(target, button, anchor); - append(button, t); - if (!mounted) { - dispose = listen(button, "click", function() { - if (is_function( - /*onClick*/ - ctx[0] - )) - ctx[0].apply(this, arguments); - }); - mounted = true; - } - }, - p(new_ctx, [dirty]) { - ctx = new_ctx; - if (dirty & /*renderedIcon*/ - 8) - set_data( - t, - /*renderedIcon*/ - ctx[3] + /*tag*/ + ctx2[0] ); if (dirty & /*title*/ 4) { attr( - button, - "aria-label", + a, + "title", /*title*/ - ctx[2] + ctx2[2] ); } - if (dirty & /*disabled*/ - 2) { - button.disabled = /*disabled*/ - ctx[1]; - } }, - i: noop, - o: noop, d(detaching) { - if (detaching) - detach(button); + if (detaching) { + detach(a); + } mounted = false; - dispose(); + run_all(dispose); } }; } -function instance4($$self, $$props, $$invalidate) { - let renderedIcon; - let { icon } = $$props; - let { onClick } = $$props; - let { disabled = false } = $$props; - let { title = "" } = $$props; - $$self.$$set = ($$props2) => { - if ("icon" in $$props2) - $$invalidate(4, icon = $$props2.icon); - if ("onClick" in $$props2) - $$invalidate(0, onClick = $$props2.onClick); - if ("disabled" in $$props2) - $$invalidate(1, disabled = $$props2.disabled); - if ("title" in $$props2) - $$invalidate(2, title = $$props2.title); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*icon*/ - 16) { - $: - $$invalidate(3, renderedIcon = icon); - } - }; - return [onClick, disabled, title, renderedIcon, icon]; -} -var JugglButton = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance4, create_fragment4, safe_not_equal, { - icon: 4, - onClick: 0, - disabled: 1, - title: 2 - }); - } -}; -var JugglButton_default = JugglButton; - -// src/Components/JugglDepth.svelte -function create_if_block2(ctx) { - let div; - let jugglbutton0; - let t0; - let jugglbutton1; - let t1; - let jugglbutton2; - let current; - jugglbutton0 = new JugglButton_default({ - props: { - icon: "-", - disabled: ( - /*depth*/ - ctx[3] <= 0 - ), - onClick: ( - /*func*/ - ctx[4] - ) - } - }); - jugglbutton1 = new JugglButton_default({ - props: { - icon: ( - /*depth*/ - ctx[3] - ), - disabled: true, - onClick: null - } - }); - jugglbutton2 = new JugglButton_default({ - props: { - icon: "+", - disabled: ( - /*depth*/ - ctx[3] >= /*maxDepth*/ +function create_if_block(ctx) { + let a; + let t; + let mounted; + let dispose; + return { + c() { + a = element("a"); + t = text( + /*tag*/ + ctx[0] + ); + attr( + a, + "href", + /*href*/ ctx[1] - ), - onClick: ( - /*func_1*/ - ctx[5] - ) - } - }); - return { - c() { - div = element("div"); - create_component(jugglbutton0.$$.fragment); - t0 = space(); - create_component(jugglbutton1.$$.fragment); - t1 = space(); - create_component(jugglbutton2.$$.fragment); - attr(div, "class", "cy-toolbar-section"); - }, - m(target, anchor) { - insert(target, div, anchor); - mount_component(jugglbutton0, div, null); - append(div, t0); - mount_component(jugglbutton1, div, null); - append(div, t1); - mount_component(jugglbutton2, div, null); - current = true; - }, - p(ctx2, dirty) { - const jugglbutton0_changes = {}; - if (dirty & /*depth*/ - 8) - jugglbutton0_changes.disabled = /*depth*/ - ctx2[3] <= 0; - if (dirty & /*depth, onUpdateDepth*/ - 12) - jugglbutton0_changes.onClick = /*func*/ - ctx2[4]; - jugglbutton0.$set(jugglbutton0_changes); - const jugglbutton1_changes = {}; - if (dirty & /*depth*/ - 8) - jugglbutton1_changes.icon = /*depth*/ - ctx2[3]; - jugglbutton1.$set(jugglbutton1_changes); - const jugglbutton2_changes = {}; - if (dirty & /*depth, maxDepth*/ - 10) - jugglbutton2_changes.disabled = /*depth*/ - ctx2[3] >= /*maxDepth*/ - ctx2[1]; - if (dirty & /*depth, onUpdateDepth*/ - 12) - jugglbutton2_changes.onClick = /*func_1*/ - ctx2[5]; - jugglbutton2.$set(jugglbutton2_changes); - }, - i(local) { - if (current) - return; - transition_in(jugglbutton0.$$.fragment, local); - transition_in(jugglbutton1.$$.fragment, local); - transition_in(jugglbutton2.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(jugglbutton0.$$.fragment, local); - transition_out(jugglbutton1.$$.fragment, local); - transition_out(jugglbutton2.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) - detach(div); - destroy_component(jugglbutton0); - destroy_component(jugglbutton1); - destroy_component(jugglbutton2); - } - }; -} -function create_fragment5(ctx) { - let if_block_anchor; - let current; - let if_block = ( - /*visible*/ - ctx[0] && create_if_block2(ctx) - ); - return { - c() { - if (if_block) - if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if (if_block) - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; - }, - p(ctx2, [dirty]) { - if ( - /*visible*/ - ctx2[0] - ) { - if (if_block) { - if_block.p(ctx2, dirty); - if (dirty & /*visible*/ - 1) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block2(ctx2); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - group_outros(); - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - check_outros(); - } - }, - i(local) { - if (current) - return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (if_block) - if_block.d(detaching); - if (detaching) - detach(if_block_anchor); - } - }; -} -function instance5($$self, $$props, $$invalidate) { - let { visible = true } = $$props; - let { maxDepth } = $$props; - let { onUpdateDepth } = $$props; - let depth = maxDepth; - const func = () => { - $$invalidate(3, depth -= 1); - onUpdateDepth(depth); - }; - const func_12 = () => { - $$invalidate(3, depth += 1); - onUpdateDepth(depth); - }; - $$self.$$set = ($$props2) => { - if ("visible" in $$props2) - $$invalidate(0, visible = $$props2.visible); - if ("maxDepth" in $$props2) - $$invalidate(1, maxDepth = $$props2.maxDepth); - if ("onUpdateDepth" in $$props2) - $$invalidate(2, onUpdateDepth = $$props2.onUpdateDepth); - }; - return [visible, maxDepth, onUpdateDepth, depth, func, func_12]; -} -var JugglDepth = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance5, create_fragment5, safe_not_equal, { - visible: 0, - maxDepth: 1, - onUpdateDepth: 2 - }); - } -}; -var JugglDepth_default = JugglDepth; - -// src/Visualisations/Juggl.ts -var STORE_ID = "core"; -var BCStoreEvents = class extends import_obsidian7.Events { -}; -var BCStore = class extends import_obsidian7.Component { - constructor(graph, metadata, depthMap) { - super(); - this.graph = graph; - this.cache = metadata; - this.depthMap = depthMap; - } - asString(node) { - const id2 = VizId.fromNode(node); - return id2.id.slice(0, -3); - } - getFile(nodeId) { - return this.cache.getFirstLinkpathDest(nodeId.id, ""); - } - async connectNodes(allNodes, newNodes, graph) { - const edges = []; - const nodesListS = new Set( - allNodes.map((node) => this.asString(node)).filter((s2) => s2) - ); - newNodes.forEach((node) => { - const name = this.asString(node); - if (!this.graph.hasNode(name)) { - return; - } - this.graph.forEachOutEdge( - this.asString(node), - (key, attr2, source, target) => { - if (nodesListS.has(target)) { - edges.push({ - data: { - id: `BC:${source}->${target}`, - source: VizId.toId(source, STORE_ID) + ".md", - target: VizId.toId(target, STORE_ID) + ".md", - type: attr2.field, - dir: attr2.dir - }, - classes: `type-${attr2.field} dir-${attr2.dir} breadcrumbs$` - }); - } - } ); - }); - return Promise.resolve(edges); - } - getEvents(view) { - return new BCStoreEvents(); - } - async getNeighbourhood(nodeIds, view) { - const new_nodes = []; - for (const nodeId of nodeIds) { - const name = nodeId.id.slice(0, -3); - if (!this.graph.hasNode(name)) { - continue; - } - for (const new_node of this.graph.neighbors(name)) { - new_nodes.push( - await this.get(new VizId(new_node + ".md", STORE_ID), view) - ); - } - } - return new_nodes; - } - refreshNode(id2, view) { - return; - } - storeId() { - return STORE_ID; - } - get(nodeId, view) { - const file = this.getFile(nodeId); - let depth = 0; - if (this.depthMap && nodeId.id in this.depthMap) { - depth = this.depthMap[nodeId.id]; - } - if (file === null) { - const dangling = nodeDangling(nodeId.id); - dangling.data.depth = depth; - return Promise.resolve(dangling); - } - const cache = this.cache.getFileCache(file); - if (cache === null) { - (0, import_loglevel11.info)("returning empty cache", nodeId); - return Promise.resolve(nodeDangling(nodeId.id)); - } - return nodeFromFile(file, view.plugin, view.settings, nodeId.toId()).then( - (node) => { - node.data.depth = depth; - return node; - } - ); - } -}; -function createJuggl(plugin, target, initialNodes, args, depthMap = null) { - try { - const jugglPlugin = getPlugin(app); - if (!jugglPlugin) { - return; - } - for (let key in JUGGL_CB_DEFAULTS) { - if (key in args && args[key] === void 0) - args[key] = JUGGL_CB_DEFAULTS[key]; - } - const bcStore = new BCStore( - plugin.mainG, - app.metadataCache, - depthMap - ); - const stores = { - coreStore: bcStore, - dataStores: [bcStore] - }; - const juggl = jugglPlugin.createJuggl(target, args, stores, initialNodes); - plugin.addChild(juggl); - (0, import_loglevel11.info)({ juggl }); - return juggl; - } catch (error6) { - (0, import_loglevel11.warn)({ error: error6 }); - return null; - } -} -function zoomToSource(juggl, source) { - if (!juggl) { - return; - } - juggl.on("vizReady", (viz) => { - viz.one("layoutstop", (e) => { - const viz2 = e.cy; - const node = viz2.$id(VizId.toId(source + ".md", STORE_ID)); - viz2.animate({ - center: { - eles: node - }, - duration: 250, - queue: false, - zoom: 1.7 - }); - }); - }); -} -function zoomToGraph(juggl) { - juggl.on("vizReady", (viz) => { - viz.fit(viz.nodes()); - }); -} -function createDepthMap(paths, source, offset2 = 0) { - let depthMap = {}; - depthMap[source + ".md"] = 0; - paths.forEach((path2) => { - for (let i = 0; i < path2.length; i++) { - const name = path2[i] + ".md"; - const depth = path2.length - i - 1 + offset2; - if (name in depthMap) { - depthMap[name] = Math.min(depthMap[name], depth); - } else { - depthMap[name] = depth; - } - } - }); - return depthMap; -} -function updateDepth(juggl, depth) { - juggl.viz.$(`[depth>${depth}]`).addClass("filtered"); - juggl.viz.$(`[depth<=${depth}]`).removeClass("filtered"); -} -function createJugglTrail(plugin, target, paths, source, args) { - const toolbarDiv = document.createElement("div"); - toolbarDiv.addClass("cy-toolbar"); - target.appendChild(toolbarDiv); - const sectDiv = document.createElement("div"); - sectDiv.addClass("cy-toolbar-section"); - toolbarDiv.appendChild(sectDiv); - const amtChildren = target.children.length; - let jugglUp = null; - let jugglDown = null; - new JugglButton_default({ - target: sectDiv, - props: { - icon: "\u2191", - onClick: () => { - if (jugglUp) { - target.children[amtChildren].classList.remove("juggl-hide"); - depthUp.$set({ visible: true }); - } - if (jugglDown) { - target.children[amtChildren + 1].classList.add("juggl-hide"); - depthDown.$set({ visible: false }); - } - }, - disabled: false, - title: "Show up graph" - } - }); - new JugglButton_default({ - target: sectDiv, - props: { - icon: "\u2193", - onClick: () => { - if (jugglDown) { - target.children[amtChildren + 1].classList.remove("juggl-hide"); - depthUp.$set({ visible: false }); - if (jugglUp) { - target.children[amtChildren].classList.add("juggl-hide"); - depthDown.$set({ visible: true }); - } - return; - } - const sub = getSubInDirs(plugin.mainG, "down", "up"); - const closed = getReflexiveClosure(sub, plugin.settings.userHiers); - const subClosed = getSubInDirs(closed, "down"); - const { createIndexIndent } = plugin.settings; - const allPaths = dfsAllPaths(subClosed, source); - const index2 = createIndex(allPaths, false, createIndexIndent); - const lines = index2.split("\n").map((line) => { - const [indent, ...content] = line.split("- "); - return content.join("- "); - }).filter((pair) => pair); - let depthMapDown = createDepthMap(allPaths, source); - const maxDepthDown = Math.max(...Object.values(depthMapDown)); - depthDown = new JugglDepth_default({ - target: toolbarDiv, - props: { - maxDepth: maxDepthDown, - onUpdateDepth: (d) => { - updateDepth(jugglDown, d); - } - } - }); - let nodesS = new Set(lines); - nodesS.add(source); - const nodes2 = Array.from(nodesS).map((s2) => s2 + ".md"); - const argsDown = Object.assign({}, args); - const layout2 = plugin.settings.jugglLayout; - if (layout2 === "hierarchy") { - argsDown.layout = { - // @ts-ignore - name: "dagre", - animate: false, - ranker: (graph) => { - Object.keys(graph._nodes).forEach((id2) => { - const name = VizId.fromId(id2).id; - if (name in depthMapDown) { - graph._nodes[id2].rank = depthMapDown[name] + 1; - } else { - graph._nodes[id2].rank = 0; - } - }); - } - }; - } else { - argsDown.layout = layout2; - } - const isFdgd2 = layout2 === "cola" || layout2 === "d3-force"; - if (isFdgd2) { - argsDown.fdgdLayout = layout2; - argsDown.layout = "force-directed"; - } else { - argsDown.autoZoom = true; - argsDown.animateLayout = false; - } - jugglDown = createJuggl(plugin, target, nodes2, argsDown, depthMapDown); - if (isFdgd2) { - zoomToSource(jugglDown, source); - } else { - zoomToGraph(jugglDown); - } - if (jugglUp) { - target.children[amtChildren].addClass("juggl-hide"); - depthUp.$set({ visible: false }); - } - }, - disabled: false, - title: "Show down graph" - } - }); - const depthMapUp = createDepthMap(paths, source, 1); - const maxDepthUp = Math.max(...Object.values(depthMapUp)); - let depthDown; - const depthUp = new JugglDepth_default({ - target: toolbarDiv, - props: { - maxDepth: maxDepthUp, - onUpdateDepth: (d) => { - updateDepth(jugglUp, d); - } - } - }); - let nodes = Array.from( - new Set(paths.reduce((prev, curr) => prev.concat(curr), [])) - ); - nodes.push(source); - nodes = nodes.map((s2) => s2 + ".md"); - const argsUp = Object.assign({}, args); - const layout = plugin.settings.jugglLayout; - if (layout === "hierarchy") { - argsUp.layout = { - // @ts-ignore - name: "dagre", - animate: false, - ranker: (graph) => { - Object.keys(graph._nodes).forEach((id2) => { - const name = VizId.fromId(id2).id; - if (name in depthMapUp) { - graph._nodes[id2].rank = maxDepthUp - depthMapUp[name] + 1; - } else { - graph._nodes[id2].rank = maxDepthUp + 2; - } - }); - } - }; - } else { - argsUp.layout = layout; - } - const isFdgd = layout === "cola" || layout === "d3-force"; - if (isFdgd) { - argsUp.fdgdLayout = layout; - argsUp.layout = "force-directed"; - } else { - argsUp.autoZoom = true; - argsUp.animateLayout = false; - } - jugglUp = createJuggl(plugin, target, nodes, argsUp, depthMapUp); - if (isFdgd) { - zoomToSource(jugglUp, source); - } else { - zoomToGraph(jugglUp); - } -} - -// src/Views/TrailView.ts -function getLimitedTrailSub(plugin) { - const { settings, mainG, closedG } = plugin; - const { limitTrailCheckboxes, userHiers } = settings; - if (getFields(userHiers).every((field) => limitTrailCheckboxes.includes(field))) { - return getSubInDirs(closedG, "up"); - } else { - const oppFields = limitTrailCheckboxes.map((field) => { - var _a; - return (_a = getOppFields(userHiers, field, "up")) == null ? void 0 : _a[0]; - }).filter((field) => field !== void 0); - const subGraph = getSubForFields(mainG, [ - ...limitTrailCheckboxes, - ...oppFields - ]); - const closed = getReflexiveClosure(subGraph, userHiers); - return getSubInDirs(closed, "up"); - } -} -function getBreadcrumbs(settings, g, currFile) { - const { basename, extension } = currFile; - if (extension !== "md") - return null; - const allTrails = bfsAllPaths(g, basename); - let filteredTrails = [...allTrails]; - const { indexNotes, showAllPathsIfNoneToIndexNote } = settings; - if ( - // Works for `undefined` and `""` - indexNotes[0] && filteredTrails.length - ) { - filteredTrails = filteredTrails.filter( - (trail) => indexNotes.includes(trail[0]) - ); - if (filteredTrails.length === 0 && showAllPathsIfNoneToIndexNote) - filteredTrails = [...allTrails]; - } - const sortedTrails = filteredTrails.filter((trail) => trail.length > 0).sort((a2, b) => a2.length - b.length); - return sortedTrails; -} -function getNextNPrev(plugin, currNode) { - const { mainG } = plugin; - const { userHiers } = plugin.settings; - if (!mainG) - return null; - const nextNPrev = blankRealNImplied(); - mainG.forEachEdge(currNode, (k, a2, s2, t) => { - const { dir, field, implied } = a2; - if (dir !== "next" && dir !== "prev") - return; - if (s2 === currNode) { - nextNPrev[dir].reals.push({ field, to: t, implied }); - } else { - const oppField = getOppFields(userHiers, field, dir)[0]; - nextNPrev[getOppDir(dir)].implieds.push({ - field: oppField, - to: s2, - implied - }); - } - }); - return nextNPrev; -} -function getTrailLength(curr, offset2 = 1) { - const index2 = (TRAIL_LENGTHS.indexOf(curr) + offset2) % TRAIL_LENGTHS.length; - return TRAIL_LENGTHS[index2 < 0 ? TRAIL_LENGTHS.length + index2 : index2]; -} -async function drawTrail(plugin) { - var _a, _b, _c, _d; - try { - const { settings, db, mainG } = plugin; - const { - showBCs, - noPathMessage, - respectReadableLineLength, - showTrail, - showGrid, - showJuggl, - showPrevNext, - showBCsInEditLPMode - } = settings; - db.start2G("drawTrail"); - const activeMDView = app.workspace.getActiveViewOfType(import_obsidian8.MarkdownView); - const mode = activeMDView == null ? void 0 : activeMDView.getMode(); - if (!showBCs || !activeMDView || mode !== "preview" && !showBCsInEditLPMode) { - (_a = activeMDView == null ? void 0 : activeMDView.containerEl.querySelector(".BC-trail")) == null ? void 0 : _a.remove(); - return db.end2G(); - } - const { file } = activeMDView; - const { frontmatter } = (_b = app.metadataCache.getFileCache(file)) != null ? _b : {}; - if ((frontmatter == null ? void 0 : frontmatter[BC_HIDE_TRAIL]) || (frontmatter == null ? void 0 : frontmatter["kanban-plugin"])) - return db.end2G(); - const { basename } = file; - if (!mainG.hasNode(basename)) - return db.end2G(); - const view = mode === "preview" ? activeMDView.previewMode.containerEl.querySelector( - "div.markdown-preview-view" - ) : activeMDView.contentEl.querySelector("div.markdown-source-view"); - (_c = activeMDView.containerEl.querySelectorAll(".BC-trail")) == null ? void 0 : _c.forEach((trail) => trail.remove()); - const closedUp = getLimitedTrailSub(plugin); - const sortedTrails = getBreadcrumbs(settings, closedUp, file); - (0, import_loglevel12.info)({ sortedTrails }); - const { - next: { reals: rNext, implieds: iNext }, - prev: { reals: rPrev, implieds: iPrev } - } = getNextNPrev(plugin, basename); - const next = [...rNext]; - iNext.forEach((i) => { - if (next.findIndex((n2) => n2.to === i.to) === -1) - next.push(i); - }); - const prev = [...rPrev]; - iPrev.forEach((i) => { - if (prev.findIndex((n2) => n2.to === i.to) === -1) - prev.push(i); - }); - const noItems = !sortedTrails.length && !next.length && !prev.length; - if (noItems && noPathMessage === "") - return db.end2G(); - const selectorForMaxWidth = mode === "preview" ? ".markdown-preview-view.is-readable-line-width .markdown-preview-sizer" : ""; - const elForMaxWidth = selectorForMaxWidth !== "" ? document.querySelector(selectorForMaxWidth) : null; - const max_width = elForMaxWidth ? getComputedStyle(elForMaxWidth).getPropertyValue("max-width") : "100%"; - const trailDiv = createDiv({ - cls: `BC-trail ${respectReadableLineLength ? "is-readable-line-width markdown-preview-sizer markdown-preview-section" : ""}`, - attr: { - style: (mode !== "preview" ? `max-width: ${max_width};` : "") + `margin: 0 auto;${respectReadableLineLength ? "width: var(--file-line-width);" : "width: 100%"}` - } - }); - plugin.visited.push([file.path, trailDiv]); - if (mode === "preview") { - view.querySelector("div.markdown-preview-sizer").before(trailDiv); - } else { - const cmGutter = view.querySelector("div.cm-gutters"); - if (cmGutter) { - requestAnimationFrame(() => { - const gutterHeight = trailDiv.getBoundingClientRect().height; - cmGutter.style.paddingTop = `${gutterHeight + 4}px`; - }); - } - (_d = view.querySelector("div.cm-contentContainer")) == null ? void 0 : _d.before(trailDiv); - } - trailDiv.empty(); - if (settings.indexNotes.includes(basename)) { - trailDiv.innerText = "Index Note"; - return db.end2G(); - } - if (noItems) { - trailDiv.innerText = noPathMessage; - return db.end2G(); - } - const targetProps = { - target: trailDiv, - props: { sortedTrails, plugin } - }; - if (showTrail && sortedTrails.length) - new TrailPath_default(targetProps); - if (showGrid && sortedTrails.length) - new TrailGrid_default(targetProps); - if (showPrevNext && (next.length || prev.length)) { - new NextPrev_default({ - target: trailDiv, - props: { plugin, next, prev } - }); - } - if (showJuggl && sortedTrails.length) { - createJugglTrail( - plugin, - trailDiv, - sortedTrails, - basename, - JUGGL_TRAIL_DEFAULTS + attr( + a, + "title", + /*title*/ + ctx[2] ); - } - db.end2G(); - } catch (err) { - (0, import_loglevel12.error)(err); - plugin.db.end2G(); - } -} - -// src/refreshIndex.ts -function getDVMetadataCache(plugin) { - const { db } = plugin; - const api = getDVApi(plugin); - db.start1G("getDVMetadataCache"); - const frontms = api.pages().values; - db.end1G({ frontms }); - return frontms; -} -function getObsMetadataCache(plugin, files) { - const { db } = plugin; - db.start1G("getObsMetadataCache"); - const frontms = files.map((file) => { - const { frontmatter } = app.metadataCache.getFileCache(file); - return frontmatter ? { file, ...frontmatter } : { file }; - }); - db.end1G({ frontms }); - return frontms; -} -var isDVProxy = (item) => typeof item.defaultComparator === "function"; -function unproxy(item) { - const unproxied = []; - const queue = [item]; - while (queue.length) { - const currItem = queue.shift(); - if (isDVProxy(currItem)) - queue.push(...currItem.values); - else - unproxied.push(currItem); - } - return unproxied; -} -function parseFieldValue(value) { - if (!value) - return []; - const parsed = []; - try { - if (typeof value === "string") { - const splits = value.match(splitLinksRegex); - if (splits !== null) { - const linkNames = splits.map((link2) => getBaseFromMDPath(link2.match(dropHeaderOrAlias)[1])); - parsed.push(...linkNames); - } - } else { - const rawValues = [value].flat(4); - (0, import_loglevel13.debug)(...rawValues); - rawValues.forEach((rawItem) => { - if (!rawItem) - return; - const unProxied = unproxy(rawItem); - unProxied.forEach((value2) => { - if (typeof value2 === "string" || typeof value2 === "number") { - const rawAsString = value2.toString(); - const splits = rawAsString.match(splitLinksRegex); - if (splits !== null) { - const strs = splits.map( - (link2) => getBaseFromMDPath(link2.match(dropHeaderOrAlias)[1]) - ); - parsed.push(...strs); - } else { - const basename = getBaseFromMDPath(rawAsString); - parsed.push(basename.split("#")[0].split("|")[0]); - } - } else if (value2.path !== void 0) { - const basename = getBaseFromMDPath(value2.path); - if (basename !== void 0) - parsed.push(basename); - } - }); - }); - } - return parsed; - } catch (err) { - (0, import_loglevel13.error)(err); - return parsed; - } -} -async function buildMainG(plugin) { - const mainG = new import_graphology2.MultiGraph(); - try { - const { settings, db } = plugin; - const { userHiers, CSVPaths, parseJugglLinksWithoutJuggl, hierarchyNotes } = settings; - db.start2G("initGraphs"); - if (userHiers.length === 0) { - db.end2G(); - new import_obsidian9.Notice("You do not have any Breadcrumbs hierarchies set up."); - return mainG; - } - const files = app.vault.getMarkdownFiles(); - const dvQ = app.plugins.enabledPlugins.has("dataview"); - let frontms = dvQ ? getDVMetadataCache(plugin) : getObsMetadataCache(plugin, files); - const CSVRows = CSVPaths !== "" ? await getCSVRows(plugin) : []; - const eligableAlts = {}; - BC_ALTS.forEach((alt) => eligableAlts[alt] = []); - db.start2G("addFrontmatterToGraph"); - frontms.forEach((page) => { - BC_ALTS.forEach((alt) => { - if (page[alt] !== void 0 && page[alt] !== null) - eligableAlts[alt].push(page); - }); - const basename = getDVBasename(page.file); - const sourceOrder = getSourceOrder(page); - iterateHiers(userHiers, (hier, dir, field) => { - const values = parseFieldValue(page[field]); - values.forEach((target) => { - if (target.startsWith("<%") || target.startsWith("{{")) - return; - const targetOrder = getTargetOrder(frontms, target); - populateMain( - settings, - mainG, - basename, - field, - target, - sourceOrder, - targetOrder - ); - }); - if (CSVRows.length) - addCSVCrumbs(mainG, CSVRows, dir, field); - }); - }); - db.end2G(); - const jugglLinks = app.plugins.plugins.juggl || parseJugglLinksWithoutJuggl ? await getJugglLinks(plugin, files) : []; - if (jugglLinks.length) - addJugglLinksToGraph(settings, jugglLinks, frontms, mainG); - db.start2G("Alternative Hierarchies"); - db.start2G("Hierarchy Notes"); - if (hierarchyNotes.length) { - for (const noteOrFolder of hierarchyNotes) { - if (noteOrFolder.endsWith("/")) { - const folder = app.vault.getAbstractFileByPath( - (0, import_obsidian9.normalizePath)(noteOrFolder) - ); - if (!(folder instanceof import_obsidian9.TFolder)) - continue; - for (const child of folder.children) { - if (child instanceof import_obsidian9.TFile) { - addHNsToGraph( - settings, - await getHierarchyNoteItems(child), - mainG - ); - } - } - } else { - const file = app.metadataCache.getFirstLinkpathDest(noteOrFolder, ""); - if (file) - addHNsToGraph( - settings, - await getHierarchyNoteItems(file), - mainG - ); - } - } - } - db.end2G(); - db.start2G("Folder Notes"); - addFolderNotesToGraph(plugin, eligableAlts[BC_FOLDER_NOTE], frontms, mainG); - db.end2G(); - db.start2G("Tag Notes"); - addTagNotesToGraph(plugin, eligableAlts[BC_TAG_NOTE], frontms, mainG); - db.end2G(); - db.start2G("Link Notes"); - addLinkNotesToGraph(plugin, eligableAlts[BC_LINK_NOTE], frontms, mainG); - db.end2G(); - db.start2G("Regex Notes"); - addRegexNotesToGraph(plugin, eligableAlts[BC_REGEX_NOTE], frontms, mainG); - db.end2G(); - db.start2G("Traverse Notes"); - addTraverseNotesToGraph( - plugin, - eligableAlts[BC_TRAVERSE_NOTE], - mainG, - buildObsGraph() - ); - db.end2G(); - db.start2G("Dendron Notes"); - addDendronNotesToGraph(plugin, frontms, mainG); - db.end2G(); - db.start2G("Dataview Notes"); - addDataviewNotesToGraph(plugin, eligableAlts[BC_DV_NOTE], frontms, mainG); - db.end2G(); - db.start2G("Date Notes"); - addDateNotesToGraph(plugin, frontms, mainG); - db.end2G(); - db.end2G(); - files.forEach((file) => addNodesIfNot(mainG, [file.basename])); - db.end2G("graphs inited", { mainG }); - return mainG; - } catch (err) { - (0, import_loglevel13.error)(err); - plugin.db.end2G(); - return mainG; - } -} -function buildClosedG(plugin) { - const { mainG, settings } = plugin; - const { - userHiers, - impliedRelations: { - sameParentIsSibling, - parentsSiblingsIsParents, - cousinsIsSibling, - siblingsSiblingIsSibling, - siblingsParentIsParent - } - } = settings; - let closedG = getReflexiveClosure(mainG, userHiers); - if (sameParentIsSibling) - addSiblingsFromSameParent(closedG, settings); - if (siblingsParentIsParent) - addSiblingsParentIsParent(closedG); - if (parentsSiblingsIsParents) - addAuntsUncles(closedG); - if (cousinsIsSibling) - addCousins(closedG); - if (siblingsSiblingIsSibling) - addStructuralEquivalenceSiblings(closedG); - return closedG; -} -async function refreshIndex(plugin) { - var _a; - if (!plugin.activeLeafChange) - plugin.registerActiveLeafChangeEvent(); - if (!plugin.layoutChange) - plugin.registerLayoutChangeEvent(); - plugin.mainG = await buildMainG(plugin); - plugin.closedG = buildClosedG(plugin); - for (const { type: type2 } of plugin.VIEWS) - await ((_a = plugin.getActiveTYPEView(type2)) == null ? void 0 : _a.draw()); - if (plugin.settings.showBCs) - await drawTrail(plugin); - if (plugin.settings.showRefreshNotice) - new import_obsidian9.Notice("BC Index refreshed"); -} - -// src/Components/MatrixButtons.svelte -function add_css4(target) { - append_styles(target, "svelte-barhym", "button.svelte-barhym{padding:1px 6px 2px 6px;margin-right:6px}"); -} -function create_if_block3(ctx) { - let button; - let mounted; - let dispose; - return { - c() { - button = element("button"); - button.textContent = `${/*alphaSortAsc*/ - ctx[2] ? "\u2197" : "\u2198"}`; - attr(button, "class", "BC-sort-button svelte-barhym"); - attr(button, "aria-label", "Alphabetical Sorting Order"); + attr(a, "class", "tag"); }, m(target, anchor) { - insert(target, button, anchor); - if (!mounted) { - dispose = listen( - button, - "click", - /*click_handler_1*/ - ctx[5] - ); - mounted = true; - } - }, - p: noop, - d(detaching) { - if (detaching) - detach(button); - mounted = false; - dispose(); - } - }; -} -function create_fragment6(ctx) { - let button; - let t1; - let if_block_anchor; - let mounted; - let dispose; - let if_block = ( - /*enableAlphaSort*/ - ctx[3] && create_if_block3(ctx) - ); - return { - c() { - button = element("button"); - button.textContent = "\u21BB"; - t1 = space(); - if (if_block) - if_block.c(); - if_block_anchor = empty(); - attr(button, "class", "BC-refresh-button svelte-barhym"); - attr(button, "aria-label", "Refresh Index"); - }, - m(target, anchor) { - insert(target, button, anchor); - insert(target, t1, anchor); - if (if_block) - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - if (!mounted) { - dispose = listen( - button, - "click", - /*click_handler*/ - ctx[4] - ); - mounted = true; - } - }, - p(ctx2, [dirty]) { - if ( - /*enableAlphaSort*/ - ctx2[3] - ) - if_block.p(ctx2, dirty); - }, - i: noop, - o: noop, - d(detaching) { - if (detaching) - detach(button); - if (detaching) - detach(t1); - if (if_block) - if_block.d(detaching); - if (detaching) - detach(if_block_anchor); - mounted = false; - dispose(); - } - }; -} -function instance6($$self, $$props, $$invalidate) { - ; - let { matrixView } = $$props; - const { plugin } = matrixView; - const { alphaSortAsc, enableAlphaSort } = plugin.settings; - const click_handler = async () => await refreshIndex(plugin); - const click_handler_1 = async () => { - $$invalidate(1, plugin.settings.alphaSortAsc = !alphaSortAsc, plugin); - await plugin.saveSettings(); - await matrixView.draw(); - }; - $$self.$$set = ($$props2) => { - if ("matrixView" in $$props2) - $$invalidate(0, matrixView = $$props2.matrixView); - }; - return [ - matrixView, - plugin, - alphaSortAsc, - enableAlphaSort, - click_handler, - click_handler_1 - ]; -} -var MatrixButtons = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance6, create_fragment6, safe_not_equal, { matrixView: 0 }, add_css4); - } -}; -var MatrixButtons_default = MatrixButtons; - -// src/Components/Matrix.svelte -function add_css5(target) { - append_styles(target, "svelte-1p44ezg", ".BC-Matrix.svelte-1p44ezg.svelte-1p44ezg{padding:5px;font-variant-numeric:tabular-nums;line-height:1.5}.BC-Matrix.svelte-1p44ezg>div.svelte-1p44ezg{border:3px solid var(--background-modifier-border);border-radius:3px;margin:3px;position:relative;height:fit-content}.BC-Matrix-square.svelte-1p44ezg.svelte-1p44ezg{border:1px solid var(--background-modifier-border)}.BC-Matrix-headers.svelte-1p44ezg.svelte-1p44ezg{display:flex;justify-content:space-between;align-items:center}.BC-Matrix-header.svelte-1p44ezg.svelte-1p44ezg{margin:2px;padding:0px 10px}h4.BC-Matrix-header.svelte-1p44ezg.svelte-1p44ezg:first-letter{text-transform:capitalize}ol.svelte-1p44ezg.svelte-1p44ezg{margin:3px;padding-left:30px}.BC-Matrix.svelte-1p44ezg li.svelte-1p44ezg{margin:0.1em}"); -} -function get_each_context4(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[13] = list[i]; - return child_ctx; -} -function get_each_context_14(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[16] = list[i].field; - child_ctx[17] = list[i].impliedItems; - child_ctx[18] = list[i].realItems; - return child_ctx; -} -function get_each_context_2(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[21] = list[i].alt; - child_ctx[22] = list[i].cls; - child_ctx[23] = list[i].implied; - child_ctx[24] = list[i].to; - child_ctx[25] = list[i].parent; - return child_ctx; -} -function get_each_context_3(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[21] = list[i].alt; - child_ctx[22] = list[i].cls; - child_ctx[23] = list[i].implied; - child_ctx[24] = list[i].to; - return child_ctx; -} -function create_if_block4(ctx) { - let div1; - let div0; - let h4; - let t0_value = ( - /*field*/ - ctx[16] + "" - ); - let t0; - let t1; - let t2; - let t3; - let if_block0 = ( - /*showRelationType*/ - ctx[7] && create_if_block_5(ctx) - ); - let if_block1 = ( - /*realItems*/ - ctx[18].length && create_if_block_4(ctx) - ); - let if_block2 = ( - /*showImpliedRelations*/ - ctx[4] && /*impliedItems*/ - ctx[17].length && create_if_block_12(ctx) - ); - return { - c() { - div1 = element("div"); - div0 = element("div"); - h4 = element("h4"); - t0 = text(t0_value); - t1 = space(); - if (if_block0) - if_block0.c(); - t2 = space(); - if (if_block1) - if_block1.c(); - t3 = space(); - if (if_block2) - if_block2.c(); - attr(h4, "class", "BC-Matrix-header svelte-1p44ezg"); - attr(div0, "class", "BC-Matrix-headers svelte-1p44ezg"); - attr(div1, "class", "BC-Matrix-square svelte-1p44ezg"); - }, - m(target, anchor) { - insert(target, div1, anchor); - append(div1, div0); - append(div0, h4); - append(h4, t0); - append(div0, t1); - if (if_block0) - if_block0.m(div0, null); - append(div1, t2); - if (if_block1) - if_block1.m(div1, null); - append(div1, t3); - if (if_block2) - if_block2.m(div1, null); - }, - p(ctx2, dirty) { - if (dirty & /*hierSquares*/ - 1 && t0_value !== (t0_value = /*field*/ - ctx2[16] + "")) - set_data(t0, t0_value); - if ( - /*showRelationType*/ - ctx2[7] - ) - if_block0.p(ctx2, dirty); - if ( - /*realItems*/ - ctx2[18].length - ) { - if (if_block1) { - if_block1.p(ctx2, dirty); - } else { - if_block1 = create_if_block_4(ctx2); - if_block1.c(); - if_block1.m(div1, t3); - } - } else if (if_block1) { - if_block1.d(1); - if_block1 = null; - } - if ( - /*showImpliedRelations*/ - ctx2[4] && /*impliedItems*/ - ctx2[17].length - ) { - if (if_block2) { - if_block2.p(ctx2, dirty); - } else { - if_block2 = create_if_block_12(ctx2); - if_block2.c(); - if_block2.m(div1, null); - } - } else if (if_block2) { - if_block2.d(1); - if_block2 = null; - } - }, - d(detaching) { - if (detaching) - detach(div1); - if (if_block0) - if_block0.d(); - if (if_block1) - if_block1.d(); - if (if_block2) - if_block2.d(); - } - }; -} -function create_if_block_5(ctx) { - let h6; - let t_value = ( - /*realItems*/ - ctx[18].length ? "Real" : "Implied" - ); - let t; - return { - c() { - h6 = element("h6"); - t = text(t_value); - attr(h6, "class", "BC-Matrix-header svelte-1p44ezg"); - }, - m(target, anchor) { - insert(target, h6, anchor); - append(h6, t); - }, - p(ctx2, dirty) { - if (dirty & /*hierSquares*/ - 1 && t_value !== (t_value = /*realItems*/ - ctx2[18].length ? "Real" : "Implied")) - set_data(t, t_value); - }, - d(detaching) { - if (detaching) - detach(h6); - } - }; -} -function create_if_block_4(ctx) { - let ol; - let each_value_3 = ( - /*realItems*/ - ctx[18] - ); - let each_blocks = []; - for (let i = 0; i < each_value_3.length; i += 1) { - each_blocks[i] = create_each_block_3(get_each_context_3(ctx, each_value_3, i)); - } - return { - c() { - ol = element("ol"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - attr(ol, "class", "svelte-1p44ezg"); - }, - m(target, anchor) { - insert(target, ol, anchor); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(ol, null); - } - } - }, - p(ctx2, dirty) { - if (dirty & /*hierSquares, rlLeaf, openOrSwitch, hoverPreview, matrixView, dropPathNDendron, settings*/ - 45) { - each_value_3 = /*realItems*/ - ctx2[18]; - let i; - for (i = 0; i < each_value_3.length; i += 1) { - const child_ctx = get_each_context_3(ctx2, each_value_3, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block_3(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(ol, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value_3.length; - } - }, - d(detaching) { - if (detaching) - detach(ol); - destroy_each(each_blocks, detaching); - } - }; -} -function create_each_block_3(ctx) { - var _a; - let li; - let div; - let t0_value = ( - /*alt*/ - ((_a = ctx[21]) != null ? _a : dropPathNDendron( - /*to*/ - ctx[24], - /*settings*/ - ctx[3] - )) + "" - ); - let t0; - let div_class_value; - let div_aria_label_value; - let div_aria_label_position_value; - let t1; - let mounted; - let dispose; - function click_handler(...args) { - return ( - /*click_handler*/ - ctx[8]( - /*to*/ - ctx[24], - ...args - ) - ); - } - function mouseover_handler(...args) { - return ( - /*mouseover_handler*/ - ctx[9]( - /*to*/ - ctx[24], - ...args - ) - ); - } - return { - c() { - var _a2; - li = element("li"); - div = element("div"); - t0 = text(t0_value); - t1 = space(); - attr(div, "class", div_class_value = /*cls*/ - ctx[22] + " " + /*implied*/ - ((_a2 = ctx[23]) != null ? _a2 : "") + " svelte-1p44ezg"); - attr(div, "aria-label", div_aria_label_value = /*alt*/ - ctx[21] ? ( - /*to*/ - ctx[24] - ) : ""); - attr(div, "aria-label-position", div_aria_label_position_value = /*rlLeaf*/ - ctx[5] ? "left" : "right"); - attr(li, "class", "svelte-1p44ezg"); - }, - m(target, anchor) { - insert(target, li, anchor); - append(li, div); - append(div, t0); - append(li, t1); + insert(target, a, anchor); + append(a, t); if (!mounted) { dispose = [ - listen(div, "click", click_handler), - listen(div, "mouseover", mouseover_handler) + listen( + a, + "click", + /*click_handler*/ + ctx[3] + ), + listen( + a, + "contextmenu", + /*contextmenu_handler*/ + ctx[4] + ) ]; mounted = true; } }, - p(new_ctx, dirty) { - var _a2, _b; - ctx = new_ctx; - if (dirty & /*hierSquares*/ - 1 && t0_value !== (t0_value = /*alt*/ - ((_a2 = ctx[21]) != null ? _a2 : dropPathNDendron( - /*to*/ - ctx[24], - /*settings*/ - ctx[3] - )) + "")) - set_data(t0, t0_value); - if (dirty & /*hierSquares*/ - 1 && div_class_value !== (div_class_value = /*cls*/ - ctx[22] + " " + /*implied*/ - ((_b = ctx[23]) != null ? _b : "") + " svelte-1p44ezg")) { - attr(div, "class", div_class_value); + p(ctx2, dirty) { + if (dirty & /*tag*/ + 1) + set_data( + t, + /*tag*/ + ctx2[0] + ); + if (dirty & /*href*/ + 2) { + attr( + a, + "href", + /*href*/ + ctx2[1] + ); } - if (dirty & /*hierSquares*/ - 1 && div_aria_label_value !== (div_aria_label_value = /*alt*/ - ctx[21] ? ( - /*to*/ - ctx[24] - ) : "")) { - attr(div, "aria-label", div_aria_label_value); + if (dirty & /*title*/ + 4) { + attr( + a, + "title", + /*title*/ + ctx2[2] + ); } }, d(detaching) { - if (detaching) - detach(li); + if (detaching) { + detach(a); + } mounted = false; run_all(dispose); } }; } -function create_if_block_12(ctx) { - let div; - let h4; - let t1; - let t2; - let ol; - let ol_start_value; - let if_block = ( - /*impliedItems*/ - ctx[17].length && create_if_block_22(ctx) - ); - let each_value_2 = ( - /*impliedItems*/ - ctx[17] - ); - let each_blocks = []; - for (let i = 0; i < each_value_2.length; i += 1) { - each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i)); - } - return { - c() { - div = element("div"); - h4 = element("h4"); - h4.textContent = `${" "}`; - t1 = space(); - if (if_block) - if_block.c(); - t2 = space(); - ol = element("ol"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - attr(h4, "class", "BC-Matrix-header svelte-1p44ezg"); - attr(div, "class", "BC-Matrix-headers svelte-1p44ezg"); - attr(ol, "start", ol_start_value = /*realItems*/ - ctx[18].length + 1); - attr(ol, "class", "svelte-1p44ezg"); - }, - m(target, anchor) { - insert(target, div, anchor); - append(div, h4); - append(div, t1); - if (if_block) - if_block.m(div, null); - insert(target, t2, anchor); - insert(target, ol, anchor); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(ol, null); - } - } - }, - p(ctx2, dirty) { - if ( - /*impliedItems*/ - ctx2[17].length - ) { - if (if_block) { - if_block.p(ctx2, dirty); - } else { - if_block = create_if_block_22(ctx2); - if_block.c(); - if_block.m(div, null); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - if (dirty & /*treatCurrNodeAsImpliedSibling, hierSquares, currFile, rlLeaf, openOrSwitch, hoverPreview, matrixView, dropPathNDendron, settings*/ - 111) { - each_value_2 = /*impliedItems*/ - ctx2[17]; - let i; - for (i = 0; i < each_value_2.length; i += 1) { - const child_ctx = get_each_context_2(ctx2, each_value_2, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block_2(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(ol, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value_2.length; - } - if (dirty & /*hierSquares*/ - 1 && ol_start_value !== (ol_start_value = /*realItems*/ - ctx2[18].length + 1)) { - attr(ol, "start", ol_start_value); - } - }, - d(detaching) { - if (detaching) - detach(div); - if (if_block) - if_block.d(); - if (detaching) - detach(t2); - if (detaching) - detach(ol); - destroy_each(each_blocks, detaching); - } - }; -} -function create_if_block_22(ctx) { - let if_block_anchor; - let if_block = ( - /*showRelationType*/ - ctx[7] && /*realItems*/ - ctx[18].length && create_if_block_3(ctx) - ); - return { - c() { - if (if_block) - if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if (if_block) - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - }, - p(ctx2, dirty) { - if ( - /*showRelationType*/ - ctx2[7] && /*realItems*/ - ctx2[18].length - ) { - if (if_block) { - } else { - if_block = create_if_block_3(ctx2); - if_block.c(); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - }, - d(detaching) { - if (if_block) - if_block.d(detaching); - if (detaching) - detach(if_block_anchor); - } - }; -} -function create_if_block_3(ctx) { - let h6; - return { - c() { - h6 = element("h6"); - h6.textContent = "Implied"; - attr(h6, "class", "BC-Matrix-header svelte-1p44ezg"); - }, - m(target, anchor) { - insert(target, h6, anchor); - }, - d(detaching) { - if (detaching) - detach(h6); - } - }; -} -function create_each_block_2(ctx) { - var _a; - let li; - let div; - let t_value = ( - /*alt*/ - ((_a = ctx[21]) != null ? _a : dropPathNDendron( - /*to*/ - ctx[24], - /*settings*/ - ctx[3] - )) + "" - ); - let t; - let div_class_value; - let div_aria_label_value; - let div_aria_label_position_value; - let li_class_value; - let mounted; - let dispose; - function click_handler_1(...args) { - return ( - /*click_handler_1*/ - ctx[10]( - /*to*/ - ctx[24], - ...args - ) - ); - } - function mouseover_handler_1(...args) { - return ( - /*mouseover_handler_1*/ - ctx[11]( - /*to*/ - ctx[24], - ...args - ) - ); - } - return { - c() { - var _a2; - li = element("li"); - div = element("div"); - t = text(t_value); - attr(div, "class", div_class_value = /*cls*/ - ctx[22] + " " + /*implied*/ - ((_a2 = ctx[23]) != null ? _a2 : "") + " svelte-1p44ezg"); - attr(div, "aria-label", div_aria_label_value = /*alt*/ - (ctx[21] ? `${/*to*/ - ctx[24]} -` : "") + /*parent*/ - (ctx[25] ? "\u2191 " + /*parent*/ - ctx[25] : "")); - attr(div, "aria-label-position", div_aria_label_position_value = /*rlLeaf*/ - ctx[5] ? "left" : "right"); - attr(li, "class", li_class_value = "BC-Implied " + /*treatCurrNodeAsImpliedSibling*/ - (ctx[6] && /*to*/ - ctx[24] === /*currFile*/ - ctx[1].basename ? "BC-active-note" : "") + " svelte-1p44ezg"); - }, - m(target, anchor) { - insert(target, li, anchor); - append(li, div); - append(div, t); - if (!mounted) { - dispose = [ - listen(div, "click", click_handler_1), - listen(div, "mouseover", mouseover_handler_1) - ]; - mounted = true; - } - }, - p(new_ctx, dirty) { - var _a2, _b; - ctx = new_ctx; - if (dirty & /*hierSquares*/ - 1 && t_value !== (t_value = /*alt*/ - ((_a2 = ctx[21]) != null ? _a2 : dropPathNDendron( - /*to*/ - ctx[24], - /*settings*/ - ctx[3] - )) + "")) - set_data(t, t_value); - if (dirty & /*hierSquares*/ - 1 && div_class_value !== (div_class_value = /*cls*/ - ctx[22] + " " + /*implied*/ - ((_b = ctx[23]) != null ? _b : "") + " svelte-1p44ezg")) { - attr(div, "class", div_class_value); - } - if (dirty & /*hierSquares*/ - 1 && div_aria_label_value !== (div_aria_label_value = /*alt*/ - (ctx[21] ? `${/*to*/ - ctx[24]} -` : "") + /*parent*/ - (ctx[25] ? "\u2191 " + /*parent*/ - ctx[25] : ""))) { - attr(div, "aria-label", div_aria_label_value); - } - if (dirty & /*hierSquares, currFile*/ - 3 && li_class_value !== (li_class_value = "BC-Implied " + /*treatCurrNodeAsImpliedSibling*/ - (ctx[6] && /*to*/ - ctx[24] === /*currFile*/ - ctx[1].basename ? "BC-active-note" : "") + " svelte-1p44ezg")) { - attr(li, "class", li_class_value); - } - }, - d(detaching) { - if (detaching) - detach(li); - mounted = false; - run_all(dispose); - } - }; -} -function create_each_block_14(ctx) { - let if_block_anchor; - let if_block = ( - /*realItems*/ - (ctx[18].length || /*showImpliedRelations*/ - ctx[4] && /*impliedItems*/ - ctx[17].length) && create_if_block4(ctx) - ); - return { - c() { - if (if_block) - if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if (if_block) - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - }, - p(ctx2, dirty) { - if ( - /*realItems*/ - ctx2[18].length || /*showImpliedRelations*/ - ctx2[4] && /*impliedItems*/ - ctx2[17].length - ) { - if (if_block) { - if_block.p(ctx2, dirty); - } else { - if_block = create_if_block4(ctx2); - if_block.c(); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - }, - d(detaching) { - if (if_block) - if_block.d(detaching); - if (detaching) - detach(if_block_anchor); - } - }; -} -function create_each_block4(ctx) { - let div; - let t; - let each_value_1 = ( - /*squares*/ - ctx[13] - ); - let each_blocks = []; - for (let i = 0; i < each_value_1.length; i += 1) { - each_blocks[i] = create_each_block_14(get_each_context_14(ctx, each_value_1, i)); - } - return { - c() { - div = element("div"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - t = space(); - attr(div, "class", "BC-matrix-hier svelte-1p44ezg"); - }, - m(target, anchor) { - insert(target, div, anchor); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(div, null); - } - } - append(div, t); - }, - p(ctx2, dirty) { - if (dirty & /*hierSquares, treatCurrNodeAsImpliedSibling, currFile, rlLeaf, openOrSwitch, hoverPreview, matrixView, dropPathNDendron, settings, showRelationType, showImpliedRelations*/ - 255) { - each_value_1 = /*squares*/ - ctx2[13]; - let i; - for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_14(ctx2, each_value_1, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block_14(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(div, t); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value_1.length; - } - }, - d(detaching) { - if (detaching) - detach(div); - destroy_each(each_blocks, detaching); - } - }; -} -function create_fragment7(ctx) { - let div0; - let matrixbuttons; - let t; - let div1; - let div1_class_value; - let current; - matrixbuttons = new MatrixButtons_default({ - props: { matrixView: ( - /*matrixView*/ - ctx[2] - ) } - }); - let each_value = ( - /*hierSquares*/ - ctx[0] - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block4(get_each_context4(ctx, each_value, i)); - } - return { - c() { - div0 = element("div"); - create_component(matrixbuttons.$$.fragment); - t = space(); - div1 = element("div"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - attr(div0, "class", "BC-matrix-buttons"); - attr(div1, "class", div1_class_value = "BC-Matrix markdown-preview-view " + /*hierSquares*/ - (ctx[0].length ? "" : "BC-empty-view") + " svelte-1p44ezg"); - }, - m(target, anchor) { - insert(target, div0, anchor); - mount_component(matrixbuttons, div0, null); - insert(target, t, anchor); - insert(target, div1, anchor); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(div1, null); - } - } - current = true; - }, - p(ctx2, [dirty]) { - const matrixbuttons_changes = {}; - if (dirty & /*matrixView*/ - 4) - matrixbuttons_changes.matrixView = /*matrixView*/ - ctx2[2]; - matrixbuttons.$set(matrixbuttons_changes); - if (dirty & /*hierSquares, treatCurrNodeAsImpliedSibling, currFile, rlLeaf, openOrSwitch, hoverPreview, matrixView, dropPathNDendron, settings, showRelationType, showImpliedRelations*/ - 255) { - each_value = /*hierSquares*/ - ctx2[0]; - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context4(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block4(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(div1, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value.length; - } - if (!current || dirty & /*hierSquares*/ - 1 && div1_class_value !== (div1_class_value = "BC-Matrix markdown-preview-view " + /*hierSquares*/ - (ctx2[0].length ? "" : "BC-empty-view") + " svelte-1p44ezg")) { - attr(div1, "class", div1_class_value); - } - }, - i(local) { - if (current) - return; - transition_in(matrixbuttons.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(matrixbuttons.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) - detach(div0); - destroy_component(matrixbuttons); - if (detaching) - detach(t); - if (detaching) - detach(div1); - destroy_each(each_blocks, detaching); - } - }; -} -function instance7($$self, $$props, $$invalidate) { - ; - ; - ; - let { hierSquares } = $$props; - let { currFile } = $$props; - let { matrixView } = $$props; - const { plugin } = matrixView; - const { settings } = plugin; - const { showImpliedRelations, rlLeaf, treatCurrNodeAsImpliedSibling, showRelationType } = settings; - const click_handler = async (to, e) => await openOrSwitch(to, e); - const mouseover_handler = (to, event) => hoverPreview(event, matrixView, to); - const click_handler_1 = async (to, e) => await openOrSwitch(to, e); - const mouseover_handler_1 = (to, e) => hoverPreview(e, matrixView, to); - $$self.$$set = ($$props2) => { - if ("hierSquares" in $$props2) - $$invalidate(0, hierSquares = $$props2.hierSquares); - if ("currFile" in $$props2) - $$invalidate(1, currFile = $$props2.currFile); - if ("matrixView" in $$props2) - $$invalidate(2, matrixView = $$props2.matrixView); - }; - return [ - hierSquares, - currFile, - matrixView, - settings, - showImpliedRelations, - rlLeaf, - treatCurrNodeAsImpliedSibling, - showRelationType, - click_handler, - mouseover_handler, - click_handler_1, - mouseover_handler_1 - ]; -} -var Matrix = class extends SvelteComponent { - constructor(options) { - super(); - init( - this, - options, - instance7, - create_fragment7, - safe_not_equal, - { - hierSquares: 0, - currFile: 1, - matrixView: 2 - }, - add_css5 - ); - } -}; -var Matrix_default = Matrix; - -// src/Views/MatrixView.ts -function getMatrixNeighbours(plugin, currNode) { - const { closedG, settings } = plugin; - const { userHiers } = settings; - const neighbours = blankRealNImplied(); - if (!closedG) - return neighbours; - closedG.forEachEdge(currNode, (k, a2, s2, t) => { - const { field, dir, implied } = a2; - if (s2 === currNode) { - neighbours[dir].reals.push({ to: t, field, implied }); - } else { - neighbours[getOppDir(dir)].implieds.push({ - to: s2, - field: getOppFields(userHiers, field, dir)[0], - implied - }); - } - }); - return neighbours; -} -var MatrixView = class extends import_obsidian10.ItemView { - constructor(leaf, plugin) { - super(leaf); - this.icon = TRAIL_ICON; - this.toInternalLinkObj = (to, realQ = true, parent, implied) => { - return { - to, - cls: linkClass(to, realQ), - alt: this.getAlt(to), - order: this.getOrder(to), - parent, - implied - }; - }; - this.getOrder = (node) => Number.parseInt(this.plugin.mainG.getNodeAttribute(node, "order")); - this.sortItemsAlpha = (a2, b) => { - var _a, _b; - const { sortByNameShowAlias, alphaSortAsc } = this.plugin.settings; - const aToSort = (sortByNameShowAlias ? a2.to : (_a = a2.alt) != null ? _a : a2.to).toLowerCase(); - const bToSort = (sortByNameShowAlias ? b.to : (_b = b.alt) != null ? _b : b.to).toLowerCase(); - const less = alphaSortAsc ? -1 : 1; - const more = alphaSortAsc ? 1 : -1; - return aToSort < bToSort ? less : more; - }; - this.plugin = plugin; - this.db = new Debugger(plugin); - } - async onload() { - super.onload(); - const { plugin } = this; - app.workspace.onLayoutReady(() => { - setTimeout( - async () => await this.draw(), - app.plugins.plugins.dataview ? app.plugins.plugins.dataview.api ? 1 : plugin.settings.dvWaitTime : 3e3 - ); - }); - } - getViewType() { - return MATRIX_VIEW; - } - getDisplayText() { - return "Breadcrumbs Matrix"; - } - async onOpen() { - } - onClose() { - var _a; - (_a = this.view) == null ? void 0 : _a.$destroy(); - return Promise.resolve(); - } - getAlt(node) { - const { plugin } = this; - const { altLinkFields, showAllAliases } = plugin.settings; - if (!altLinkFields.length) - return null; - const dv = getDVApi(plugin); - if (dv) { - const page = dv.page(node); - if (!page) - return null; - for (const alt of altLinkFields) { - const value = page[alt]; - const arr = typeof value === "string" ? splitAndTrim(value) : value; - if (value) - return showAllAliases ? arr.join(", ") : arr[0]; - } - } else { - const file = app.metadataCache.getFirstLinkpathDest(node, ""); - if (file) { - const { frontmatter } = app.metadataCache.getFileCache(file); - for (const altField of altLinkFields) { - const value = frontmatter == null ? void 0 : frontmatter[altField]; - const arr = typeof value === "string" ? splitAndTrim(value) : value; - if (value) - return showAllAliases ? arr.join(", ") : arr[0]; - } - } - } - } - // ANCHOR Remove duplicate implied links - removeDuplicateImplied(reals, implieds) { - const realTos = reals.map((real) => real.to); - return implieds.filter((implied) => !realTos.includes(implied.to)); - } - getHierSquares(userHiers, currFile) { - const { plugin } = this; - const { mainG, settings } = plugin; - const { enableAlphaSort, squareDirectionsOrder } = settings; - if (!mainG) - return []; - const { basename } = currFile; - if (!mainG.hasNode(basename)) - return []; - const realsnImplieds = getMatrixNeighbours(plugin, basename); - return userHiers.map((hier) => { - const filteredRealNImplied = blankRealNImplied(); - const resultsFilter = (item, dir, oppDir, arrow) => hier[dir].includes(item.field) || item.field.includes(`<${arrow}>`) && hier[oppDir].includes(item.field.split(" <")[0]); - for (const dir in realsnImplieds) { - const oppDir = getOppDir(dir); - const arrow = ARROW_DIRECTIONS[dir]; - const { reals, implieds } = realsnImplieds[dir]; - filteredRealNImplied[dir].reals = reals.filter( - (real) => resultsFilter(real, dir, oppDir, arrow) - ).map( - (item) => this.toInternalLinkObj(item.to, true, null, item.implied) - ); - filteredRealNImplied[dir].implieds = implieds.filter( - (implied) => resultsFilter(implied, dir, oppDir, arrow) - ).map( - (item) => this.toInternalLinkObj(item.to, false, null, item.implied) - ); - } - let { - up: { reals: ru, implieds: iu }, - same: { reals: rs, implieds: is }, - down: { reals: rd, implieds: id2 }, - next: { reals: rn, implieds: iN }, - prev: { reals: rp, implieds: ip } - } = filteredRealNImplied; - [iu, is, id2, iN, ip] = [ - this.removeDuplicateImplied(ru, iu), - this.removeDuplicateImplied(rs, is), - this.removeDuplicateImplied(rd, id2), - this.removeDuplicateImplied(rn, iN), - this.removeDuplicateImplied(rp, ip) - ]; - const iSameNoDup = []; - is.forEach((impSib) => { - if (iSameNoDup.every((noDup) => noDup.to !== impSib.to)) { - iSameNoDup.push(impSib); - } - }); - is = iSameNoDup; - const getFieldInHier = (dir) => hier[dir][0] ? hier[dir].join(", ") : `${hier[getOppDir(dir)].join(",")}${ARROW_DIRECTIONS[dir]}`; - const squares = [ru, rs, rd, rn, rp, iu, is, id2, iN, ip]; - if (enableAlphaSort) - squares.forEach((sq) => sq.sort(this.sortItemsAlpha)); - squares.forEach((sq) => sq.sort((a2, b) => a2.order - b.order)); - (0, import_loglevel14.info)([ - { ru }, - { rs }, - { rd }, - { rn }, - { rp }, - { iu }, - { is }, - { id: id2 }, - { iN }, - { ip } - ]); - const square = [ - { - realItems: ru, - impliedItems: iu, - field: getFieldInHier("up") - }, - { - realItems: rs, - impliedItems: is, - field: getFieldInHier("same") - }, - { - realItems: rd, - impliedItems: id2, - field: getFieldInHier("down") - }, - { - realItems: rn, - impliedItems: iN, - field: getFieldInHier("next") - }, - { - realItems: rp, - impliedItems: ip, - field: getFieldInHier("prev") - } - ]; - return squareDirectionsOrder.map((order) => square[order]); - }); - } - async draw() { - try { - const { contentEl, db, plugin } = this; - db.start2G("Draw Matrix View"); - contentEl.empty(); - const { userHiers } = plugin.settings; - const currFile = getCurrFile(); - if (!currFile) - return; - const hierSquares = this.getHierSquares(userHiers, currFile).filter( - (squareArr) => squareArr.some( - (sq) => sq.realItems.length + sq.impliedItems.length > 0 - ) - ); - new Matrix_default({ - target: contentEl, - props: { hierSquares, matrixView: this, currFile } - }); - db.end2G(); - } catch (err) { - (0, import_loglevel14.error)(err); - this.db.end2G(); - } - } -}; - -// src/API.ts -var BCAPI = class { - constructor(plugin) { - this.DIRECTIONS = DIRECTIONS; - this.ARROW_DIRECTIONS = ARROW_DIRECTIONS; - this.buildObsGraph = buildObsGraph; - this.refreshIndex = async () => await refreshIndex(this.plugin); - this.getSubInDirs = (dirs, g = this.mainG) => getSubInDirs(g, ...dirs); - this.getSubForFields = (fields, g = this.mainG) => getSubForFields(g, fields); - this.dfsAllPaths = (fromNode = ((_a) => (_a = getCurrFile()) == null ? void 0 : _a.basename)(), g = this.mainG) => dfsAllPaths(g, fromNode); - this.createIndex = (allPaths, wikilinks = false, indent = " ") => createIndex(allPaths, wikilinks, indent); - this.getMatrixNeighbours = (fromNode = ((_b) => (_b = getCurrFile()) == null ? void 0 : _b.basename)()) => getMatrixNeighbours(this.plugin, fromNode); - this.getOppDir = (dir) => getOppDir(dir); - this.getOppFields = (field) => { - const { fieldDir } = getFieldInfo(this.plugin.settings.userHiers, field); - return getOppFields(this.plugin.settings.userHiers, field, fieldDir); - }; - this.getFieldInfo = (field) => getFieldInfo(this.plugin.settings.userHiers, field); - this.getFields = (dir) => getFields(this.plugin.settings.userHiers, dir != null ? dir : "all"); - this.plugin = plugin; - this.mainG = this.plugin.mainG; - this.closedG = this.plugin.closedG; - } - iterateHiers(cb) { - iterateHiers(this.plugin.settings.userHiers, cb); - } -}; - -// src/AlternativeHierarchies/HierarchyNotes/HierNoteModal.ts -var import_obsidian14 = require("obsidian"); - -// src/AlternativeHierarchies/HierarchyNotes/HierarchyNoteManipulator.ts -var import_loglevel15 = __toESM(require_loglevel()); -var import_obsidian13 = require("obsidian"); - -// src/AlternativeHierarchies/HierarchyNotes/ModifyHierItemModal.ts -var import_obsidian12 = require("obsidian"); - -// src/Components/ModifyHNItemComp.svelte -var import_console = require("console"); -var import_obsidian11 = require("obsidian"); -function add_css6(target) { - append_styles(target, "svelte-13g4k7i", "pre.svelte-13g4k7i{display:inline}"); -} -function create_if_block_23(ctx) { +function create_fragment21(ctx) { let if_block_anchor; function select_block_type(ctx2, dirty) { if ( - /*hnItem*/ - ctx2[2].depth === 0 + /*href*/ + ctx2[1] !== void 0 ) - return create_if_block_32; - return create_else_block2; + return create_if_block; + return create_else_block; } let current_block_type = select_block_type(ctx, -1); let if_block = current_block_type(ctx); @@ -22910,7 +27125,7 @@ function create_if_block_23(ctx) { if_block.m(target, anchor); insert(target, if_block_anchor, anchor); }, - p(ctx2, dirty) { + p(ctx2, [dirty]) { if (current_block_type === (current_block_type = select_block_type(ctx2, dirty)) && if_block) { if_block.p(ctx2, dirty); } else { @@ -22922,881 +27137,1937 @@ function create_if_block_23(ctx) { } } }, + i: noop, + o: noop, d(detaching) { - if_block.d(detaching); - if (detaching) + if (detaching) { detach(if_block_anchor); + } + if_block.d(detaching); } }; } -function create_else_block2(ctx) { - let div; - let pre; - let t0; - let t1_value = ( - /*buildNewItem*/ - ctx[6]( - /*newItem*/ - ctx[5], - /*hnItem*/ - ctx[2].depth - 4, - true - ) + "" +function instance21($$self, $$props, $$invalidate) { + let { tag } = $$props; + let { href = void 0 } = $$props; + let { title = void 0 } = $$props; + function click_handler(event) { + bubble.call(this, $$self, event); + } + function contextmenu_handler(event) { + bubble.call(this, $$self, event); + } + function click_handler_1(event) { + bubble.call(this, $$self, event); + } + function keydown_handler(event) { + bubble.call(this, $$self, event); + } + function contextmenu_handler_1(event) { + bubble.call(this, $$self, event); + } + $$self.$$set = ($$props2) => { + if ("tag" in $$props2) + $$invalidate(0, tag = $$props2.tag); + if ("href" in $$props2) + $$invalidate(1, href = $$props2.href); + if ("title" in $$props2) + $$invalidate(2, title = $$props2.title); + }; + return [ + tag, + href, + title, + click_handler, + contextmenu_handler, + click_handler_1, + keydown_handler, + contextmenu_handler_1 + ]; +} +var Tag = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance21, create_fragment21, safe_not_equal, { tag: 0, href: 1, title: 2 }); + } +}; +var tag_default = Tag; + +// src/components/settings/EdgeFieldSettings.svelte +function get_each_context2(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[22] = list[i]; + return child_ctx; +} +function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[25] = list[i]; + return child_ctx; +} +function get_each_context_2(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[28] = list[i]; + return child_ctx; +} +function get_each_context_3(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[31] = list[i]; + const constants_0 = ( + /*settings*/ + child_ctx[0].edge_field_groups.filter(function func_1(...args) { + return ( + /*func_1*/ + ctx[13]( + /*field*/ + child_ctx[31], + ...args + ) + ); + }).map((g) => g.label) ); - let t1; - let t2; + child_ctx[32] = constants_0; + return child_ctx; +} +function get_each_context_4(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[22] = list[i]; + return child_ctx; +} +function get_each_context_5(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[37] = list[i]; + return child_ctx; +} +function create_if_block_6(ctx) { + let span; return { c() { - div = element("div"); - pre = element("pre"); - t0 = text(" "); - t1 = text(t1_value); - t2 = text("\n "); - attr(pre, "class", "svelte-13g4k7i"); + span = element("span"); + span.textContent = "Unsaved changes"; + attr(span, "class", "text-warning"); }, m(target, anchor) { - insert(target, div, anchor); - append(div, pre); - append(pre, t0); - append(pre, t1); - append(pre, t2); - }, - p(ctx2, dirty) { - if (dirty & /*newItem, hnItem*/ - 36 && t1_value !== (t1_value = /*buildNewItem*/ - ctx2[6]( - /*newItem*/ - ctx2[5], - /*hnItem*/ - ctx2[2].depth - 4, - true - ) + "")) - set_data(t1, t1_value); + insert(target, span, anchor); }, d(detaching) { - if (detaching) - detach(div); + if (detaching) { + detach(span); + } } }; } -function create_if_block_32(ctx) { - let div; - return { - c() { - div = element("div"); - div.textContent = "Can't add parent to top level item, choose another direction"; - }, - m(target, anchor) { - insert(target, div, anchor); - }, - p: noop, - d(detaching) { - if (detaching) - detach(div); - } - }; -} -function create_if_block_13(ctx) { - let div; - let pre; - let t0; - let t1_value = ( - /*buildNewItem*/ - ctx[6]( - /*newItem*/ - ctx[5], - /*hnItem*/ - ctx[2].depth + 4, - true - ) + "" - ); - let t1; - let t2; - return { - c() { - div = element("div"); - pre = element("pre"); - t0 = text(" "); - t1 = text(t1_value); - t2 = text("\n "); - attr(pre, "class", "svelte-13g4k7i"); - }, - m(target, anchor) { - insert(target, div, anchor); - append(div, pre); - append(pre, t0); - append(pre, t1); - append(pre, t2); - }, - p(ctx2, dirty) { - if (dirty & /*newItem, hnItem*/ - 36 && t1_value !== (t1_value = /*buildNewItem*/ - ctx2[6]( - /*newItem*/ - ctx2[5], - /*hnItem*/ - ctx2[2].depth + 4, - true - ) + "")) - set_data(t1, t1_value); - }, - d(detaching) { - if (detaching) - detach(div); - } - }; -} -function create_if_block5(ctx) { - let div; - let pre; - let t0; - let t1_value = ( - /*buildNewItem*/ - ctx[6]( - /*newItem*/ - ctx[5], - /*hnItem*/ - ctx[2].depth, - true - ) + "" - ); - let t1; - let t2; - return { - c() { - div = element("div"); - pre = element("pre"); - t0 = text(" "); - t1 = text(t1_value); - t2 = text("\n "); - attr(pre, "class", "svelte-13g4k7i"); - }, - m(target, anchor) { - insert(target, div, anchor); - append(div, pre); - append(pre, t0); - append(pre, t1); - append(pre, t2); - }, - p(ctx2, dirty) { - if (dirty & /*newItem, hnItem*/ - 36 && t1_value !== (t1_value = /*buildNewItem*/ - ctx2[6]( - /*newItem*/ - ctx2[5], - /*hnItem*/ - ctx2[2].depth, - true - ) + "")) - set_data(t1, t1_value); - }, - d(detaching) { - if (detaching) - detach(div); - } - }; -} -function create_fragment8(ctx) { - let h5; - let t0; - let t1_value = ARROW_DIRECTIONS[ - /*rel*/ - ctx[0] - ] + ""; - let t1; - let t2; - let t3_value = dropWikilinks( - /*hnItem*/ - ctx[2].line - ) + ""; - let t3; - let t4; - let div1; - let t5; - let div0; - let pre; - let t6; - let strong; - let t7_value = ( - /*buildNewItem*/ - ctx[6]( - dropWikilinks( - /*hnItem*/ - ctx[2].line - ), - /*hnItem*/ - ctx[2].depth, - true - ) + "" - ); - let t7; - let t8; - let t9; - let t10; - let select; - let option0; - let option1; - let option2; - let t14; - let input; - let t15; +function create_if_block_5(ctx) { let button; + let arrowdown; + let current; let mounted; let dispose; - let if_block0 = ( - /*rel*/ - ctx[0] === "up" && create_if_block_23(ctx) - ); - function select_block_type_1(ctx2, dirty) { - if ( - /*rel*/ - ctx2[0] === "same" - ) - return create_if_block5; - if ( - /*rel*/ - ctx2[0] === "down" - ) - return create_if_block_13; - } - let current_block_type = select_block_type_1(ctx, -1); - let if_block1 = current_block_type && current_block_type(ctx); + arrowdown = new arrow_down_default({ props: { size: ICON_SIZE } }); return { c() { - h5 = element("h5"); - t0 = text("Add an "); - t1 = text(t1_value); - t2 = text(" to "); - t3 = text(t3_value); - t4 = space(); - div1 = element("div"); - if (if_block0) - if_block0.c(); - t5 = space(); - div0 = element("div"); - pre = element("pre"); - t6 = text(" "); - strong = element("strong"); - t7 = text(t7_value); - t8 = text("\n "); - t9 = space(); - if (if_block1) - if_block1.c(); - t10 = space(); - select = element("select"); - option0 = element("option"); - option0.textContent = "up"; - option1 = element("option"); - option1.textContent = "same"; - option2 = element("option"); - option2.textContent = "down"; - t14 = space(); - input = element("input"); - t15 = space(); button = element("button"); - button.textContent = "Add"; - attr(pre, "class", "svelte-13g4k7i"); - option0.__value = "up"; - option0.value = option0.__value; - option1.__value = "same"; - option1.value = option1.__value; - option2.__value = "down"; - option2.value = option2.__value; - attr(select, "class", "dropdown"); - attr(select, "width", "1"); - if ( - /*rel*/ - ctx[0] === void 0 - ) - add_render_callback(() => ( - /*select_change_handler*/ - ctx[8].call(select) - )); - attr(input, "type", "text"); - attr(input, "placeholder", "New item"); + create_component(arrowdown.$$.fragment); + attr(button, "class", "w-10"); + attr(button, "aria-label", "Jump to bottom"); + }, + m(target, anchor) { + insert(target, button, anchor); + mount_component(arrowdown, button, null); + current = true; + if (!mounted) { + dispose = listen( + button, + "click", + /*click_handler_1*/ + ctx[7] + ); + mounted = true; + } + }, + p: noop, + i(local) { + if (current) + return; + transition_in(arrowdown.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(arrowdown.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(button); + } + destroy_component(arrowdown); + mounted = false; + dispose(); + } + }; +} +function create_each_block_5(ctx) { + let div; + let tag; + let current; + function click_handler_3() { + return ( + /*click_handler_3*/ + ctx[11]( + /*group_label*/ + ctx[37] + ) + ); + } + tag = new tag_default({ + props: { + tag: ( + /*group_label*/ + ctx[37] + ), + title: "Jump to group. Right click for more actions." + } + }); + tag.$on("click", click_handler_3); + tag.$on("contextmenu", function() { + if (is_function( + /*context_menus*/ + ctx[3].field_group( + /*field*/ + ctx[31], + /*group_label*/ + ctx[37] + ) + )) + ctx[3].field_group( + /*field*/ + ctx[31], + /*group_label*/ + ctx[37] + ).apply(this, arguments); + }); + return { + c() { + div = element("div"); + create_component(tag.$$.fragment); + attr(div, "class", "flex items-center gap-0.5"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(tag, div, null); + current = true; + }, + p(new_ctx, dirty) { + ctx = new_ctx; + const tag_changes = {}; + if (dirty[0] & /*settings, filters*/ + 3) + tag_changes.tag = /*group_label*/ + ctx[37]; + tag.$set(tag_changes); + }, + i(local) { + if (current) + return; + transition_in(tag.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(tag.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_component(tag); + } + }; +} +function create_if_block_4(ctx) { + let span; + return { + c() { + span = element("span"); + span.textContent = `${""}`; + attr(span, "class", "search-empty-state my-0"); + }, + m(target, anchor) { + insert(target, span, anchor); + }, + d(detaching) { + if (detaching) { + detach(span); + } + } + }; +} +function create_if_block_3(ctx) { + let option; + let t_value = ( + /*group*/ + ctx[22].label + "" + ); + let t; + let option_value_value; + return { + c() { + option = element("option"); + t = text(t_value); + option.__value = option_value_value = /*group*/ + ctx[22].label; + set_input_value(option, option.__value); + }, + m(target, anchor) { + insert(target, option, anchor); + append(option, t); + }, + p(ctx2, dirty) { + if (dirty[0] & /*settings*/ + 1 && t_value !== (t_value = /*group*/ + ctx2[22].label + "")) + set_data(t, t_value); + if (dirty[0] & /*settings*/ + 1 && option_value_value !== (option_value_value = /*group*/ + ctx2[22].label)) { + option.__value = option_value_value; + set_input_value(option, option.__value); + } + }, + d(detaching) { + if (detaching) { + detach(option); + } + } + }; +} +function create_each_block_4(ctx) { + let show_if = !/*group*/ + ctx[22].fields.includes( + /*field*/ + ctx[31].label + ); + let if_block_anchor; + let if_block = show_if && create_if_block_3(ctx); + return { + c() { + if (if_block) + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if (if_block) + if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + }, + p(ctx2, dirty) { + if (dirty[0] & /*settings, filters*/ + 3) + show_if = !/*group*/ + ctx2[22].fields.includes( + /*field*/ + ctx2[31].label + ); + if (show_if) { + if (if_block) { + if_block.p(ctx2, dirty); + } else { + if_block = create_if_block_3(ctx2); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d(detaching) { + if (detaching) { + detach(if_block_anchor); + } + if (if_block) + if_block.d(detaching); + } + }; +} +function create_key_block(ctx) { + let div; + let span; + let t1; + let t2; + let t3; + let select; + let option; + let current; + let mounted; + let dispose; + let each_value_5 = ensure_array_like( + /*group_labels*/ + ctx[32] + ); + let each_blocks_1 = []; + for (let i = 0; i < each_value_5.length; i += 1) { + each_blocks_1[i] = create_each_block_5(get_each_context_5(ctx, each_value_5, i)); + } + const out = (i) => transition_out(each_blocks_1[i], 1, 1, () => { + each_blocks_1[i] = null; + }); + let if_block = !/*group_labels*/ + ctx[32].length && create_if_block_4(ctx); + let each_value_4 = ensure_array_like( + /*settings*/ + ctx[0].edge_field_groups + ); + let each_blocks = []; + for (let i = 0; i < each_value_4.length; i += 1) { + each_blocks[i] = create_each_block_4(get_each_context_4(ctx, each_value_4, i)); + } + function change_handler(...args) { + return ( + /*change_handler*/ + ctx[12]( + /*field*/ + ctx[31], + ...args + ) + ); + } + return { + c() { + div = element("div"); + span = element("span"); + span.textContent = "Groups"; + t1 = space(); + for (let i = 0; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].c(); + } + t2 = space(); + if (if_block) + if_block.c(); + t3 = space(); + select = element("select"); + option = element("option"); + option.textContent = "Add to Group"; + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + option.__value = ""; + set_input_value(option, option.__value); + option.disabled = true; + attr(select, "class", "dropdown"); + attr(div, "class", "flex flex-wrap items-center gap-1.5"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, span); + append(div, t1); + for (let i = 0; i < each_blocks_1.length; i += 1) { + if (each_blocks_1[i]) { + each_blocks_1[i].m(div, null); + } + } + append(div, t2); + if (if_block) + if_block.m(div, null); + append(div, t3); + append(div, select); + append(select, option); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(select, null); + } + } + select_option(select, ""); + current = true; + if (!mounted) { + dispose = listen(select, "change", change_handler); + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if (dirty[0] & /*settings, filters, actions, context_menus*/ + 15) { + each_value_5 = ensure_array_like( + /*group_labels*/ + ctx[32] + ); + let i; + for (i = 0; i < each_value_5.length; i += 1) { + const child_ctx = get_each_context_5(ctx, each_value_5, i); + if (each_blocks_1[i]) { + each_blocks_1[i].p(child_ctx, dirty); + transition_in(each_blocks_1[i], 1); + } else { + each_blocks_1[i] = create_each_block_5(child_ctx); + each_blocks_1[i].c(); + transition_in(each_blocks_1[i], 1); + each_blocks_1[i].m(div, t2); + } + } + group_outros(); + for (i = each_value_5.length; i < each_blocks_1.length; i += 1) { + out(i); + } + check_outros(); + } + if (!/*group_labels*/ + ctx[32].length) { + if (if_block) { + } else { + if_block = create_if_block_4(ctx); + if_block.c(); + if_block.m(div, t3); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + if (dirty[0] & /*settings, filters*/ + 3) { + each_value_4 = ensure_array_like( + /*settings*/ + ctx[0].edge_field_groups + ); + let i; + for (i = 0; i < each_value_4.length; i += 1) { + const child_ctx = get_each_context_4(ctx, each_value_4, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_4(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(select, null); + } + } + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + each_blocks.length = each_value_4.length; + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value_5.length; i += 1) { + transition_in(each_blocks_1[i]); + } + current = true; + }, + o(local) { + each_blocks_1 = each_blocks_1.filter(Boolean); + for (let i = 0; i < each_blocks_1.length; i += 1) { + transition_out(each_blocks_1[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_each(each_blocks_1, detaching); + if (if_block) + if_block.d(); + destroy_each(each_blocks, detaching); + mounted = false; + dispose(); + } + }; +} +function create_each_block_3(ctx) { + let div1; + let div0; + let input; + let input_id_value; + let input_value_value; + let t0; + let button; + let t2; + let previous_key = ( + /*settings*/ + ctx[0].edge_field_groups + ); + let current; + let mounted; + let dispose; + function blur_handler(...args) { + return ( + /*blur_handler*/ + ctx[9]( + /*field*/ + ctx[31], + ...args + ) + ); + } + function click_handler_2() { + return ( + /*click_handler_2*/ + ctx[10]( + /*field*/ + ctx[31] + ) + ); + } + let key_block = create_key_block(ctx); + return { + c() { + div1 = element("div"); + div0 = element("div"); + input = element("input"); + t0 = space(); + button = element("button"); + button.textContent = "X"; + t2 = space(); + key_block.c(); + attr(input, "id", input_id_value = /*actions*/ + ctx[2].fields.make_id( + /*field*/ + ctx[31].label + )); + attr(input, "type", "text"); + attr(input, "class", "w-48 scroll-mt-40"); + attr(input, "placeholder", "Field Label"); + input.value = input_value_value = /*field*/ + ctx[31].label; + attr(button, "class", "w-8"); + attr(button, "title", "Remove Field"); + attr(div0, "class", "flex flex-wrap items-center gap-1"); + attr(div1, "class", "flex flex-col gap-2"); }, m(target, anchor) { - insert(target, h5, anchor); - append(h5, t0); - append(h5, t1); - append(h5, t2); - append(h5, t3); - insert(target, t4, anchor); insert(target, div1, anchor); - if (if_block0) - if_block0.m(div1, null); - append(div1, t5); append(div1, div0); - append(div0, pre); - append(pre, t6); - append(pre, strong); - append(strong, t7); - append(pre, t8); - append(div1, t9); - if (if_block1) - if_block1.m(div1, null); - append(div1, t10); - append(div1, select); - append(select, option0); - append(select, option1); - append(select, option2); - select_option( - select, - /*rel*/ - ctx[0], - true - ); - append(div1, t14); - append(div1, input); - ctx[9](input); - set_input_value( - input, - /*newItem*/ - ctx[5] - ); - append(div1, t15); - append(div1, button); + append(div0, input); + append(div0, t0); + append(div0, button); + append(div1, t2); + key_block.m(div1, null); + current = true; if (!mounted) { dispose = [ - listen( - select, - "change", - /*select_change_handler*/ - ctx[8] - ), - listen( - input, - "input", - /*input_input_handler*/ - ctx[10] - ), - listen( - button, - "click", - /*click_handler*/ - ctx[11] - ) + listen(input, "blur", blur_handler), + listen(button, "click", click_handler_2) ]; mounted = true; } }, - p(ctx2, [dirty]) { - if (dirty & /*rel*/ - 1 && t1_value !== (t1_value = ARROW_DIRECTIONS[ - /*rel*/ - ctx2[0] - ] + "")) - set_data(t1, t1_value); - if (dirty & /*hnItem*/ - 4 && t3_value !== (t3_value = dropWikilinks( - /*hnItem*/ - ctx2[2].line - ) + "")) - set_data(t3, t3_value); - if ( - /*rel*/ - ctx2[0] === "up" - ) { - if (if_block0) { - if_block0.p(ctx2, dirty); - } else { - if_block0 = create_if_block_23(ctx2); - if_block0.c(); - if_block0.m(div1, t5); - } - } else if (if_block0) { - if_block0.d(1); - if_block0 = null; + p(new_ctx, dirty) { + ctx = new_ctx; + if (!current || dirty[0] & /*settings, filters*/ + 3 && input_id_value !== (input_id_value = /*actions*/ + ctx[2].fields.make_id( + /*field*/ + ctx[31].label + ))) { + attr(input, "id", input_id_value); } - if (dirty & /*hnItem*/ - 4 && t7_value !== (t7_value = /*buildNewItem*/ - ctx2[6]( - dropWikilinks( - /*hnItem*/ - ctx2[2].line - ), - /*hnItem*/ - ctx2[2].depth, - true - ) + "")) - set_data(t7, t7_value); - if (current_block_type === (current_block_type = select_block_type_1(ctx2, dirty)) && if_block1) { - if_block1.p(ctx2, dirty); + if (!current || dirty[0] & /*settings, filters*/ + 3 && input_value_value !== (input_value_value = /*field*/ + ctx[31].label) && input.value !== input_value_value) { + input.value = input_value_value; + } + if (dirty[0] & /*settings*/ + 1 && safe_not_equal(previous_key, previous_key = /*settings*/ + ctx[0].edge_field_groups)) { + group_outros(); + transition_out(key_block, 1, 1, noop); + check_outros(); + key_block = create_key_block(ctx); + key_block.c(); + transition_in(key_block, 1); + key_block.m(div1, null); } else { - if (if_block1) - if_block1.d(1); - if_block1 = current_block_type && current_block_type(ctx2); - if (if_block1) { - if_block1.c(); - if_block1.m(div1, t10); - } - } - if (dirty & /*rel*/ - 1) { - select_option( - select, - /*rel*/ - ctx2[0] - ); - } - if (dirty & /*newItem*/ - 32 && input.value !== /*newItem*/ - ctx2[5]) { - set_input_value( - input, - /*newItem*/ - ctx2[5] - ); + key_block.p(ctx, dirty); } }, - i: noop, - o: noop, + i(local) { + if (current) + return; + transition_in(key_block); + current = true; + }, + o(local) { + transition_out(key_block); + current = false; + }, d(detaching) { - if (detaching) - detach(h5); - if (detaching) - detach(t4); - if (detaching) + if (detaching) { detach(div1); - if (if_block0) - if_block0.d(); - if (if_block1) { - if_block1.d(); } - ctx[9](null); + key_block.d(detaching); mounted = false; run_all(dispose); } }; } -function instance8($$self, $$props, $$invalidate) { - ; - ; - let { modal } = $$props; - let { settings } = $$props; - let { hnItem } = $$props; - let { file } = $$props; - let { rel } = $$props; - let inputEl; - let newItem = app.workspace.activeLeaf.view.file.basename; - const buildNewItem = (newItem2, depth = hnItem.depth, preview = false) => `${" ".repeat(Math.round(depth / (preview ? 2 : 1)))}- ${preview ? newItem2 || "" : makeWiki(newItem2)}`; - function select_change_handler() { - rel = select_value(this); - $$invalidate(0, rel); - } - function input_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - inputEl = $$value; - $$invalidate(4, inputEl); - }); - } - function input_input_handler() { - newItem = this.value; - $$invalidate(5, newItem); - } - const click_handler = async (e) => { - if (rel === "up" && hnItem.depth === 0) { - new import_obsidian11.Notice("Can't add parent to top level item, choose another direction"); - return; - } else { - try { - const content = await app.vault.read(file); - const lines = content.split("\n"); - const lineNo = rel === "up" ? hnItem.lineNo : hnItem.lineNo + 1; - const depth = rel === "up" ? hnItem.depth - 4 : rel === "down" ? hnItem.depth + 4 : hnItem.depth; - lines.splice(lineNo, 0, buildNewItem(newItem, depth)); - await app.vault.modify(file, lines.join("\n")); - modal.close(); - } catch (err) { - (0, import_console.error)(err); - new import_obsidian11.Notice("An error occured, please check the console"); +function create_if_block_2(ctx) { + let button; + let arrowdown; + let current; + let mounted; + let dispose; + arrowdown = new arrow_down_default({ props: { size: ICON_SIZE } }); + return { + c() { + button = element("button"); + create_component(arrowdown.$$.fragment); + attr(button, "class", "w-10"); + attr(button, "aria-label", "Jump to bottom"); + }, + m(target, anchor) { + insert(target, button, anchor); + mount_component(arrowdown, button, null); + current = true; + if (!mounted) { + dispose = listen( + button, + "click", + /*click_handler_5*/ + ctx[16] + ); + mounted = true; } + }, + p: noop, + i(local) { + if (current) + return; + transition_in(arrowdown.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(arrowdown.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(button); + } + destroy_component(arrowdown); + mounted = false; + dispose(); } }; - $$self.$$set = ($$props2) => { - if ("modal" in $$props2) - $$invalidate(1, modal = $$props2.modal); - if ("settings" in $$props2) - $$invalidate(7, settings = $$props2.settings); - if ("hnItem" in $$props2) - $$invalidate(2, hnItem = $$props2.hnItem); - if ("file" in $$props2) - $$invalidate(3, file = $$props2.file); - if ("rel" in $$props2) - $$invalidate(0, rel = $$props2.rel); - }; - return [ - rel, - modal, - hnItem, - file, - inputEl, - newItem, - buildNewItem, - settings, - select_change_handler, - input_binding, - input_input_handler, - click_handler - ]; } -var ModifyHNItemComp = class extends SvelteComponent { - constructor(options) { - super(); - init( - this, - options, - instance8, - create_fragment8, - safe_not_equal, - { - modal: 1, - settings: 7, - hnItem: 2, - file: 3, - rel: 0 - }, - add_css6 +function create_each_block_2(ctx) { + let div; + let tag; + let current; + function click_handler_7() { + return ( + /*click_handler_7*/ + ctx[20]( + /*field_label*/ + ctx[28] + ) ); } -}; -var ModifyHNItemComp_default = ModifyHNItemComp; - -// src/AlternativeHierarchies/HierarchyNotes/ModifyHierItemModal.ts -var ModifyHierItemModal = class extends import_obsidian12.Modal { - constructor(plugin, hnItem, file, rel) { - super(app); - this.plugin = plugin; - this.modal = this; - this.hnItem = hnItem; - this.file = file; - this.rel = rel; - } - onOpen() { - const { contentEl } = this; - contentEl.empty(); - this.mount = new ModifyHNItemComp_default({ - target: contentEl, - props: { - modal: this, - settings: this.plugin.settings, - hnItem: this.hnItem, - file: this.file, - rel: this.rel - } - }); - } - onClose() { - this.mount.$destroy(); - this.contentEl.empty(); - } -}; - -// src/AlternativeHierarchies/HierarchyNotes/HierarchyNoteManipulator.ts -var HierarchyNoteManipulator = class extends import_obsidian13.FuzzySuggestModal { - constructor(plugin, hierNoteName) { - super(app); - this.plugin = plugin; - this.settings = this.plugin.settings; - this.hierNoteName = hierNoteName; - const chooseOverride = (evt) => { - this.chooser.useSelectedItem(evt); - return false; - }; - this.scope.register([], "Delete", chooseOverride); - this.scope.register(["Shift"], "ArrowUp", chooseOverride); - this.scope.register(["Shift"], "ArrowRight", chooseOverride); - this.scope.register(["Shift"], "ArrowDown", chooseOverride); - } - async onOpen() { - this.setPlaceholder("HN Manipulator"); - this.setInstructions([ - { command: "Shift + Enter", purpose: "Jump to item" }, - { command: "Shift + \u2191", purpose: "Add parent" }, - { command: "Shift + \u2192", purpose: "Add sibling" }, - { command: "Shift + \u2193 / Enter / Click", purpose: "Add child" }, - { command: "Delete", purpose: "Delete item" } - ]); - this.file = app.metadataCache.getFirstLinkpathDest(this.hierNoteName, ""); - if (!this.file) - this.lines = []; - console.log(this); - const content = await app.vault.cachedRead(this.file); - this.lines = content.split("\n"); - this.listItems = app.metadataCache.getFileCache(this.file).listItems; - console.log(this); - super.onOpen(); - } - getItems() { - const items = this.listItems.map((item) => { - const i = item.position.start.line; - return { i, line: this.lines[i] }; - }).map((item) => { - const splits = item.line.split("- "); - const depth = splits[0].length; - const line = splits.slice(1).join("- "); - return { depth, line, lineNo: item.i }; - }); - (0, import_loglevel15.info)(items); - return items; - } - getItemText(item) { - return `${" ".repeat(item.depth)}- ${dropWikilinks(item.line)}`; - } - renderSuggestion(item, el) { - super.renderSuggestion(item, el); - el.innerText = `${" ".repeat(item.item.depth)}- ${dropWikilinks( - item.item.line - )}`; - } - async deleteItem(item) { - try { - this.lines.splice(item.lineNo, 1); - this.listItems.splice(item.lineNo, 1); - await app.vault.modify(this.file, this.lines.join("\n")); - new import_obsidian13.Notice("Item deleted Succesfully"); - } catch (err) { - (0, import_loglevel15.error)(err); - new import_obsidian13.Notice("An error occured. Please check the console"); + tag = new tag_default({ + props: { + tag: ( + /*field_label*/ + ctx[28] + ), + title: "Jump to field. Right click for more actions." } - } - onChooseItem(item, evt) { - if (evt instanceof KeyboardEvent && evt.key === "Delete") { - this.deleteItem(item); - } else if (evt instanceof KeyboardEvent && evt.key == "Enter" && evt.shiftKey) { - const view = app.workspace.getActiveViewOfType(import_obsidian13.MarkdownView); - const { editor } = view != null ? view : {}; - if (!editor) - return; - view.leaf.openFile(this.file, { active: true, mode: "source" }); - editor.setCursor({ line: item.lineNo, ch: item.depth + 2 }); - } else if (evt instanceof KeyboardEvent || evt instanceof MouseEvent) { - let rel; - if (evt instanceof MouseEvent && evt.type == "click") - rel = "down"; - if (evt instanceof KeyboardEvent) { - if (evt.key === "Enter") - rel = "down"; - } - if (evt instanceof KeyboardEvent && evt.shiftKey) { - if (evt.key === "ArrowUp") - rel = "up"; - if (evt.key === "ArrowDown") - rel = "down"; - if (evt.key === "ArrowRight") - rel = "same"; - } - new ModifyHierItemModal( - this.plugin, - item, - this.file, - rel - ).open(); - this.close(); - } - } -}; - -// src/AlternativeHierarchies/HierarchyNotes/HierNoteModal.ts -var HierarchyNoteSelectorModal = class extends import_obsidian14.FuzzySuggestModal { - constructor(plugin) { - super(app); - this.plugin = plugin; - this.settings = this.plugin.settings; - } - onOpen() { - this.setPlaceholder("HN Chooser"); - const { hierarchyNotes } = this.settings; - if (hierarchyNotes.length === 0) { - this.close(); - new import_obsidian14.Notice("No hierarchy notes found"); - } else if (hierarchyNotes.length === 1 && !hierarchyNotes[0].endsWith("/")) { - this.close(); - new HierarchyNoteManipulator( - this.plugin, - hierarchyNotes[0] - ).open(); - } else { - super.onOpen(); - } - } - getItems() { - const { hierarchyNotes } = this.settings; - if (hierarchyNotes.length == 1 && hierarchyNotes[0].endsWith("/")) { - let folder = hierarchyNotes[0].slice(0, -1); - if (app.plugins.plugins.dataview != void 0) { - let pages = app.plugins.plugins.dataview.api.pages( - `"${folder}"` - ); - return pages.values.map((page) => page.file.path); - } else { - new import_obsidian14.Notice("make sure you have dataview enabled"); - } - } else - return hierarchyNotes; - } - getItemText(item) { - return `${item}`; - } - renderSuggestion(item, el) { - super.renderSuggestion(item, el); - } - onChooseItem(item, evt) { - new HierarchyNoteManipulator(this.plugin, item).open(); - this.close(); - } -}; - -// src/Codeblocks.ts -var import_loglevel16 = __toESM(require_loglevel()); -var import_obsidian16 = require("obsidian"); - -// src/Components/RenderMarkdown.svelte -var import_obsidian15 = require("obsidian"); -function add_css7(target) { - append_styles(target, "svelte-7e9i10", "div.BC-note-content.svelte-7e9i10{padding-left:20px}"); -} -function create_fragment9(ctx) { - let div; + }); + tag.$on("click", click_handler_7); + tag.$on("contextmenu", function() { + if (is_function( + /*context_menus*/ + ctx[3].group_field( + /*group*/ + ctx[22], + /*field_label*/ + ctx[28] + ) + )) + ctx[3].group_field( + /*group*/ + ctx[22], + /*field_label*/ + ctx[28] + ).apply(this, arguments); + }); return { c() { div = element("div"); - attr(div, "class", "BC-note-content svelte-7e9i10"); + create_component(tag.$$.fragment); + attr(div, "class", "flex items-center gap-0.5"); }, m(target, anchor) { insert(target, div, anchor); - ctx[2](div); + mount_component(tag, div, null); + current = true; + }, + p(new_ctx, dirty) { + ctx = new_ctx; + const tag_changes = {}; + if (dirty[0] & /*settings, filters*/ + 3) + tag_changes.tag = /*field_label*/ + ctx[28]; + tag.$set(tag_changes); + }, + i(local) { + if (current) + return; + transition_in(tag.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(tag.$$.fragment, local); + current = false; }, - p: noop, - i: noop, - o: noop, d(detaching) { - if (detaching) + if (detaching) { detach(div); - ctx[2](null); + } + destroy_component(tag); } }; } -function instance9($$self, $$props, $$invalidate) { - var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); +function create_if_block_1(ctx) { + let span; + return { + c() { + span = element("span"); + span.textContent = `${""}`; + attr(span, "class", "search-empty-state my-0"); + }, + m(target, anchor) { + insert(target, span, anchor); + }, + d(detaching) { + if (detaching) { + detach(span); + } } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); + }; +} +function create_if_block2(ctx) { + let option; + let t_value = ( + /*edge_field*/ + ctx[25].label + "" + ); + let t; + let option_value_value; + return { + c() { + option = element("option"); + t = text(t_value); + option.__value = option_value_value = /*edge_field*/ + ctx[25].label; + set_input_value(option, option.__value); + }, + m(target, anchor) { + insert(target, option, anchor); + append(option, t); + }, + p(ctx2, dirty) { + if (dirty[0] & /*settings*/ + 1 && t_value !== (t_value = /*edge_field*/ + ctx2[25].label + "")) + set_data(t, t_value); + if (dirty[0] & /*settings*/ + 1 && option_value_value !== (option_value_value = /*edge_field*/ + ctx2[25].label)) { + option.__value = option_value_value; + set_input_value(option, option.__value); + } + }, + d(detaching) { + if (detaching) { + detach(option); + } + } + }; +} +function create_each_block_1(ctx) { + let show_if = !/*group*/ + ctx[22].fields.includes( + /*edge_field*/ + ctx[25].label + ); + let if_block_anchor; + let if_block = show_if && create_if_block2(ctx); + return { + c() { + if (if_block) + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if (if_block) + if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + }, + p(ctx2, dirty) { + if (dirty[0] & /*settings, filters*/ + 3) + show_if = !/*group*/ + ctx2[22].fields.includes( + /*edge_field*/ + ctx2[25].label + ); + if (show_if) { + if (if_block) { + if_block.p(ctx2, dirty); + } else { + if_block = create_if_block2(ctx2); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + d(detaching) { + if (detaching) { + detach(if_block_anchor); + } + if (if_block) + if_block.d(detaching); + } + }; +} +function create_each_block2(ctx) { + let div2; + let div0; + let input; + let input_id_value; + let input_value_value; + let t0; + let button; + let t2; + let div1; + let span; + let t4; + let t5; + let t6; + let select; + let option; + let current; + let mounted; + let dispose; + function blur_handler_1(...args) { + return ( + /*blur_handler_1*/ + ctx[18]( + /*group*/ + ctx[22], + ...args + ) + ); + } + function click_handler_6() { + return ( + /*click_handler_6*/ + ctx[19]( + /*group*/ + ctx[22] + ) + ); + } + let each_value_2 = ensure_array_like( + /*group*/ + ctx[22].fields + ); + let each_blocks_1 = []; + for (let i = 0; i < each_value_2.length; i += 1) { + each_blocks_1[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i)); + } + const out = (i) => transition_out(each_blocks_1[i], 1, 1, () => { + each_blocks_1[i] = null; + }); + let if_block = !/*group*/ + ctx[22].fields.length && create_if_block_1(ctx); + let each_value_1 = ensure_array_like( + /*settings*/ + ctx[0].edge_fields + ); + let each_blocks = []; + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i)); + } + function change_handler_1(...args) { + return ( + /*change_handler_1*/ + ctx[21]( + /*group*/ + ctx[22], + ...args + ) + ); + } + return { + c() { + div2 = element("div"); + div0 = element("div"); + input = element("input"); + t0 = space(); + button = element("button"); + button.textContent = "X"; + t2 = space(); + div1 = element("div"); + span = element("span"); + span.textContent = "Fields"; + t4 = space(); + for (let i = 0; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].c(); + } + t5 = space(); + if (if_block) + if_block.c(); + t6 = space(); + select = element("select"); + option = element("option"); + option.textContent = "Add Field"; + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(input, "id", input_id_value = /*actions*/ + ctx[2].groups.make_id( + /*group*/ + ctx[22].label + )); + attr(input, "type", "text"); + attr(input, "class", "w-48 scroll-mt-40"); + attr(input, "placeholder", "Group Label"); + input.value = input_value_value = /*group*/ + ctx[22].label; + attr(button, "class", "w-8"); + attr(button, "title", "Remove Group"); + attr(div0, "class", "flex flex-wrap items-center gap-1"); + option.__value = ""; + set_input_value(option, option.__value); + option.disabled = true; + attr(select, "class", "dropdown"); + attr(div1, "class", "flex flex-wrap items-center gap-1.5"); + attr(div2, "class", "flex flex-col gap-2"); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, div0); + append(div0, input); + append(div0, t0); + append(div0, button); + append(div2, t2); + append(div2, div1); + append(div1, span); + append(div1, t4); + for (let i = 0; i < each_blocks_1.length; i += 1) { + if (each_blocks_1[i]) { + each_blocks_1[i].m(div1, null); } } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); + append(div1, t5); + if (if_block) + if_block.m(div1, null); + append(div1, t6); + append(div1, select); + append(select, option); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(select, null); } } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + select_option(select, ""); + current = true; + if (!mounted) { + dispose = [ + listen(input, "blur", blur_handler_1), + listen(button, "click", click_handler_6), + listen(select, "change", change_handler_1) + ]; + mounted = true; } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if (!current || dirty[0] & /*settings, filters*/ + 3 && input_id_value !== (input_id_value = /*actions*/ + ctx[2].groups.make_id( + /*group*/ + ctx[22].label + ))) { + attr(input, "id", input_id_value); + } + if (!current || dirty[0] & /*settings, filters*/ + 3 && input_value_value !== (input_value_value = /*group*/ + ctx[22].label) && input.value !== input_value_value) { + input.value = input_value_value; + } + if (dirty[0] & /*settings, filters, actions, context_menus*/ + 15) { + each_value_2 = ensure_array_like( + /*group*/ + ctx[22].fields + ); + let i; + for (i = 0; i < each_value_2.length; i += 1) { + const child_ctx = get_each_context_2(ctx, each_value_2, i); + if (each_blocks_1[i]) { + each_blocks_1[i].p(child_ctx, dirty); + transition_in(each_blocks_1[i], 1); + } else { + each_blocks_1[i] = create_each_block_2(child_ctx); + each_blocks_1[i].c(); + transition_in(each_blocks_1[i], 1); + each_blocks_1[i].m(div1, t5); + } + } + group_outros(); + for (i = each_value_2.length; i < each_blocks_1.length; i += 1) { + out(i); + } + check_outros(); + } + if (!/*group*/ + ctx[22].fields.length) { + if (if_block) { + } else { + if_block = create_if_block_1(ctx); + if_block.c(); + if_block.m(div1, t6); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + if (dirty[0] & /*settings, filters*/ + 3) { + each_value_1 = ensure_array_like( + /*settings*/ + ctx[0].edge_fields + ); + let i; + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_1(ctx, each_value_1, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block_1(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(select, null); + } + } + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + each_blocks.length = each_value_1.length; + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value_2.length; i += 1) { + transition_in(each_blocks_1[i]); + } + current = true; + }, + o(local) { + each_blocks_1 = each_blocks_1.filter(Boolean); + for (let i = 0; i < each_blocks_1.length; i += 1) { + transition_out(each_blocks_1[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(div2); + } + destroy_each(each_blocks_1, detaching); + if (if_block) + if_block.d(); + destroy_each(each_blocks, detaching); + mounted = false; + run_all(dispose); + } }; - let { path: path2 } = $$props; - function getContent(note) { - return __awaiter(this, void 0, void 0, function* () { - const file = app.metadataCache.getFirstLinkpathDest(note, ""); - return yield app.vault.cachedRead(file); - }); - } - let el; - onMount(() => __awaiter(void 0, void 0, void 0, function* () { - import_obsidian15.MarkdownRenderer.renderMarkdown(yield getContent(path2), el, path2, null); - })); - function div_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - el = $$value; - $$invalidate(0, el); - }); - } - $$self.$$set = ($$props2) => { - if ("path" in $$props2) - $$invalidate(1, path2 = $$props2.path); - }; - return [el, path2, div_binding]; } -var RenderMarkdown = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance9, create_fragment9, safe_not_equal, { path: 1 }, add_css7); - } -}; -var RenderMarkdown_default = RenderMarkdown; - -// src/Components/CBTree.svelte -function add_css8(target) { - append_styles(target, "svelte-1df5nr5", ".BC-tree.svelte-1df5nr5{padding-left:5px}pre.indent.svelte-1df5nr5{display:inline;background-color:transparent;position:top}details.svelte-1df5nr5{display:inline-block}.is-unresolved.svelte-1df5nr5{color:var(--text-muted)}"); -} -function get_each_context5(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[17] = list[i][0]; - child_ctx[18] = list[i][1]; - return child_ctx; -} -function create_if_block_24(ctx) { - let h3; +function create_fragment22(ctx) { + let div7; + let div0; + let button0; + let saveicon; let t0; let t1; let t2; + let div2; + let h40; + let t4; + let div1; + let input0; + let t5; + let button1; + let t6; + let button1_disabled_value; + let t7; + let t8; + let div3; + let t9; + let button2; + let plusicon0; + let t10; + let t11; + let hr; + let t12; + let div5; + let h41; + let t14; + let div4; + let input1; + let t15; + let button3; + let t16; + let button3_disabled_value; + let t17; + let t18; + let div6; + let t19; + let button4; + let plusicon1; + let t20; + let current; + let mounted; + let dispose; + saveicon = new save_default({ props: { size: ICON_SIZE } }); + let if_block0 = ( + /*settings*/ + ctx[0].is_dirty && create_if_block_6(ctx) + ); + let if_block1 = ( + /*settings*/ + ctx[0].edge_fields.length > 3 && create_if_block_5(ctx) + ); + let each_value_3 = ensure_array_like( + /*settings*/ + ctx[0].edge_fields.filter( + /*func*/ + ctx[8] + ) + ); + let each_blocks_1 = []; + for (let i = 0; i < each_value_3.length; i += 1) { + each_blocks_1[i] = create_each_block_3(get_each_context_3(ctx, each_value_3, i)); + } + const out = (i) => transition_out(each_blocks_1[i], 1, 1, () => { + each_blocks_1[i] = null; + }); + plusicon0 = new plus_default({ props: { size: ICON_SIZE } }); + let if_block2 = ( + /*settings*/ + ctx[0].edge_field_groups.length > 3 && create_if_block_2(ctx) + ); + let each_value = ensure_array_like( + /*settings*/ + ctx[0].edge_field_groups.filter( + /*func_3*/ + ctx[17] + ) + ); + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i)); + } + const out_1 = (i) => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + plusicon1 = new plus_default({ props: { size: ICON_SIZE } }); return { c() { - h3 = element("h3"); - t0 = text( - /*dir*/ - ctx[8] - ); - t1 = text(" of "); - t2 = text( - /*basename*/ - ctx[4] - ); + div7 = element("div"); + div0 = element("div"); + button0 = element("button"); + create_component(saveicon.$$.fragment); + t0 = text("\n Save"); + t1 = space(); + if (if_block0) + if_block0.c(); + t2 = space(); + div2 = element("div"); + h40 = element("h4"); + h40.textContent = "Fields"; + t4 = space(); + div1 = element("div"); + input0 = element("input"); + t5 = space(); + button1 = element("button"); + t6 = text("X"); + t7 = space(); + if (if_block1) + if_block1.c(); + t8 = space(); + div3 = element("div"); + for (let i = 0; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].c(); + } + t9 = space(); + button2 = element("button"); + create_component(plusicon0.$$.fragment); + t10 = text("\n New Edge Field"); + t11 = space(); + hr = element("hr"); + t12 = space(); + div5 = element("div"); + h41 = element("h4"); + h41.textContent = "Groups"; + t14 = space(); + div4 = element("div"); + input1 = element("input"); + t15 = space(); + button3 = element("button"); + t16 = text("X"); + t17 = space(); + if (if_block2) + if_block2.c(); + t18 = space(); + div6 = element("div"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + t19 = space(); + button4 = element("button"); + create_component(plusicon1.$$.fragment); + t20 = text("\n New Group"); + attr(button0, "class", "flex items-center gap-1"); + attr(div0, "class", "my-2 flex items-center gap-2"); + attr(input0, "type", "text"); + attr(input0, "placeholder", "Filter Fields by Name"); + attr(button1, "class", "w-8"); + attr(button1, "aria-label", "Clear Filter"); + button1.disabled = button1_disabled_value = /*filters*/ + ctx[1].fields === ""; + attr(div1, "class", "flex gap-1"); + attr(div2, "class", "flex items-center gap-4"); + attr(button2, "class", "flex items-center gap-1"); + attr(div3, "class", "flex flex-col gap-7"); + attr(input1, "type", "text"); + attr(input1, "placeholder", "Filter Groups by Name"); + attr(button3, "class", "w-8"); + attr(button3, "aria-label", "Clear Filter"); + button3.disabled = button3_disabled_value = /*filters*/ + ctx[1].groups === ""; + attr(div4, "class", "flex gap-1"); + attr(div5, "class", "flex items-center gap-4"); + attr(button4, "class", "flex items-center gap-1"); + attr(div6, "class", "flex flex-col gap-7"); + attr(div7, "class", "flex flex-col"); }, m(target, anchor) { - insert(target, h3, anchor); - append(h3, t0); - append(h3, t1); - append(h3, t2); + insert(target, div7, anchor); + append(div7, div0); + append(div0, button0); + mount_component(saveicon, button0, null); + append(button0, t0); + append(div0, t1); + if (if_block0) + if_block0.m(div0, null); + append(div7, t2); + append(div7, div2); + append(div2, h40); + append(div2, t4); + append(div2, div1); + append(div1, input0); + set_input_value( + input0, + /*filters*/ + ctx[1].fields + ); + append(div1, t5); + append(div1, button1); + append(button1, t6); + append(div2, t7); + if (if_block1) + if_block1.m(div2, null); + append(div7, t8); + append(div7, div3); + for (let i = 0; i < each_blocks_1.length; i += 1) { + if (each_blocks_1[i]) { + each_blocks_1[i].m(div3, null); + } + } + append(div3, t9); + append(div3, button2); + mount_component(plusicon0, button2, null); + append(button2, t10); + append(div7, t11); + append(div7, hr); + append(div7, t12); + append(div7, div5); + append(div5, h41); + append(div5, t14); + append(div5, div4); + append(div4, input1); + set_input_value( + input1, + /*filters*/ + ctx[1].groups + ); + append(div4, t15); + append(div4, button3); + append(button3, t16); + append(div5, t17); + if (if_block2) + if_block2.m(div5, null); + append(div7, t18); + append(div7, div6); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div6, null); + } + } + append(div6, t19); + append(div6, button4); + mount_component(plusicon1, button4, null); + append(button4, t20); + current = true; + if (!mounted) { + dispose = [ + listen( + button0, + "click", + /*actions*/ + ctx[2].save + ), + listen( + input0, + "input", + /*input0_input_handler*/ + ctx[5] + ), + listen( + button1, + "click", + /*click_handler*/ + ctx[6] + ), + listen( + button2, + "click", + /*actions*/ + ctx[2].fields.add + ), + listen( + input1, + "input", + /*input1_input_handler*/ + ctx[14] + ), + listen( + button3, + "click", + /*click_handler_4*/ + ctx[15] + ), + listen( + button4, + "click", + /*actions*/ + ctx[2].groups.add + ) + ]; + mounted = true; + } }, p(ctx2, dirty) { - if (dirty & /*basename*/ - 16) - set_data( - t2, - /*basename*/ - ctx2[4] + if ( + /*settings*/ + ctx2[0].is_dirty + ) { + if (if_block0) { + } else { + if_block0 = create_if_block_6(ctx2); + if_block0.c(); + if_block0.m(div0, null); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + if (dirty[0] & /*filters*/ + 2 && input0.value !== /*filters*/ + ctx2[1].fields) { + set_input_value( + input0, + /*filters*/ + ctx2[1].fields ); + } + if (!current || dirty[0] & /*filters*/ + 2 && button1_disabled_value !== (button1_disabled_value = /*filters*/ + ctx2[1].fields === "")) { + button1.disabled = button1_disabled_value; + } + if ( + /*settings*/ + ctx2[0].edge_fields.length > 3 + ) { + if (if_block1) { + if_block1.p(ctx2, dirty); + if (dirty[0] & /*settings*/ + 1) { + transition_in(if_block1, 1); + } + } else { + if_block1 = create_if_block_5(ctx2); + if_block1.c(); + transition_in(if_block1, 1); + if_block1.m(div2, null); + } + } else if (if_block1) { + group_outros(); + transition_out(if_block1, 1, 1, () => { + if_block1 = null; + }); + check_outros(); + } + if (dirty[0] & /*settings, actions, filters, context_menus*/ + 15) { + each_value_3 = ensure_array_like( + /*settings*/ + ctx2[0].edge_fields.filter( + /*func*/ + ctx2[8] + ) + ); + let i; + for (i = 0; i < each_value_3.length; i += 1) { + const child_ctx = get_each_context_3(ctx2, each_value_3, i); + if (each_blocks_1[i]) { + each_blocks_1[i].p(child_ctx, dirty); + transition_in(each_blocks_1[i], 1); + } else { + each_blocks_1[i] = create_each_block_3(child_ctx); + each_blocks_1[i].c(); + transition_in(each_blocks_1[i], 1); + each_blocks_1[i].m(div3, t9); + } + } + group_outros(); + for (i = each_value_3.length; i < each_blocks_1.length; i += 1) { + out(i); + } + check_outros(); + } + if (dirty[0] & /*filters*/ + 2 && input1.value !== /*filters*/ + ctx2[1].groups) { + set_input_value( + input1, + /*filters*/ + ctx2[1].groups + ); + } + if (!current || dirty[0] & /*filters*/ + 2 && button3_disabled_value !== (button3_disabled_value = /*filters*/ + ctx2[1].groups === "")) { + button3.disabled = button3_disabled_value; + } + if ( + /*settings*/ + ctx2[0].edge_field_groups.length > 3 + ) { + if (if_block2) { + if_block2.p(ctx2, dirty); + if (dirty[0] & /*settings*/ + 1) { + transition_in(if_block2, 1); + } + } else { + if_block2 = create_if_block_2(ctx2); + if_block2.c(); + transition_in(if_block2, 1); + if_block2.m(div5, null); + } + } else if (if_block2) { + group_outros(); + transition_out(if_block2, 1, 1, () => { + if_block2 = null; + }); + check_outros(); + } + if (dirty[0] & /*actions, settings, filters, context_menus*/ + 15) { + each_value = ensure_array_like( + /*settings*/ + ctx2[0].edge_field_groups.filter( + /*func_3*/ + ctx2[17] + ) + ); + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context2(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block2(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(div6, t19); + } + } + group_outros(); + for (i = each_value.length; i < each_blocks.length; i += 1) { + out_1(i); + } + check_outros(); + } + }, + i(local) { + if (current) + return; + transition_in(saveicon.$$.fragment, local); + transition_in(if_block1); + for (let i = 0; i < each_value_3.length; i += 1) { + transition_in(each_blocks_1[i]); + } + transition_in(plusicon0.$$.fragment, local); + transition_in(if_block2); + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + transition_in(plusicon1.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(saveicon.$$.fragment, local); + transition_out(if_block1); + each_blocks_1 = each_blocks_1.filter(Boolean); + for (let i = 0; i < each_blocks_1.length; i += 1) { + transition_out(each_blocks_1[i]); + } + transition_out(plusicon0.$$.fragment, local); + transition_out(if_block2); + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + transition_out(plusicon1.$$.fragment, local); + current = false; }, d(detaching) { - if (detaching) - detach(h3); + if (detaching) { + detach(div7); + } + destroy_component(saveicon); + if (if_block0) + if_block0.d(); + if (if_block1) + if_block1.d(); + destroy_each(each_blocks_1, detaching); + destroy_component(plusicon0); + if (if_block2) + if_block2.d(); + destroy_each(each_blocks, detaching); + destroy_component(plusicon1); + mounted = false; + run_all(dispose); } }; } -function create_if_block6(ctx) { +function instance22($$self, $$props, $$invalidate) { + let { plugin } = $$props; + const settings = plugin.settings; + let filters = { fields: "", groups: "" }; + const actions = { + save: () => __awaiter(void 0, void 0, void 0, function* () { + yield Promise.all([plugin.saveSettings(), plugin.refresh({ redraw_side_views: true })]); + $$invalidate(4, plugin); + }), + fields: { + make_id: (label) => `BC-edge-field-${label}`, + scroll_to: (label) => { + const el = document.getElementById(actions.fields.make_id(label)); + if (el) { + el.scrollIntoView({ behavior: "smooth", block: "center" }); + el.focus(); + } + }, + add: () => { + const field = { + label: `Edge Field ${settings.edge_fields.length + 1}` + }; + settings.edge_fields.push(field); + setTimeout(() => actions.fields.scroll_to(field.label), 0); + $$invalidate(0, settings.is_dirty = true, settings); + $$invalidate(4, plugin); + }, + remove: (edge_field) => { + $$invalidate(0, settings.edge_fields = settings.edge_fields.filter((f) => f.label !== edge_field.label), settings); + settings.edge_field_groups.forEach((group) => { + group.fields = group.fields.filter((f) => f !== edge_field.label); + }); + $$invalidate(0, settings.is_dirty = true, settings); + $$invalidate(4, plugin); + }, + rename: (edge_field, new_label) => { + if (edge_field.label === new_label) { + return; + } else if (new_label === "") { + return new import_obsidian7.Notice("Field label cannot be empty."); + } else if (settings.edge_fields.some((f) => f.label === new_label)) { + return new import_obsidian7.Notice("Field label must be unique."); + } + settings.edge_field_groups.forEach((group) => { + const index = group.fields.indexOf(edge_field.label); + if (index === -1) + return; + group.fields[index] = new_label; + }); + settings.implied_relations.transitive.forEach((rule) => { + rule.chain = rule.chain.map((attr2) => attr2.field === edge_field.label ? Object.assign(Object.assign({}, attr2), { field: new_label }) : attr2); + rule.close_field = rule.close_field === edge_field.label ? new_label : rule.close_field; + }); + $$invalidate( + 0, + settings.explicit_edge_sources.tag_note.default_field = settings.explicit_edge_sources.tag_note.default_field === edge_field.label ? new_label : settings.explicit_edge_sources.tag_note.default_field, + settings + ); + $$invalidate( + 0, + settings.explicit_edge_sources.list_note.default_neighbour_field = settings.explicit_edge_sources.list_note.default_neighbour_field === edge_field.label ? new_label : settings.explicit_edge_sources.list_note.default_neighbour_field, + settings + ); + $$invalidate( + 0, + settings.explicit_edge_sources.dendron_note.default_field = settings.explicit_edge_sources.dendron_note.default_field === edge_field.label ? new_label : settings.explicit_edge_sources.dendron_note.default_field, + settings + ); + $$invalidate( + 0, + settings.explicit_edge_sources.johnny_decimal_note.default_field = settings.explicit_edge_sources.johnny_decimal_note.default_field === edge_field.label ? new_label : settings.explicit_edge_sources.johnny_decimal_note.default_field, + settings + ); + $$invalidate( + 0, + settings.explicit_edge_sources.date_note.default_field = settings.explicit_edge_sources.date_note.default_field === edge_field.label ? new_label : settings.explicit_edge_sources.date_note.default_field, + settings + ); + $$invalidate( + 0, + settings.explicit_edge_sources.regex_note.default_field = settings.explicit_edge_sources.regex_note.default_field === edge_field.label ? new_label : settings.explicit_edge_sources.regex_note.default_field, + settings + ); + edge_field.label = new_label; + $$invalidate(0, settings.is_dirty = true, settings); + $$invalidate(4, plugin); + } + }, + groups: { + make_id: (label) => `BC-edge-group-${label}`, + scroll_to: (label) => { + const el = document.getElementById(actions.groups.make_id(label)); + if (el) { + el.scrollIntoView({ behavior: "smooth", block: "center" }); + el.focus(); + } + }, + add: () => { + const group = { + label: `Group ${settings.edge_field_groups.length + 1}`, + fields: [] + }; + settings.edge_field_groups.push(group); + setTimeout(() => actions.groups.scroll_to(group.label), 0); + $$invalidate(0, settings.is_dirty = true, settings); + $$invalidate(4, plugin); + }, + remove: (group) => { + $$invalidate(0, settings.edge_field_groups = settings.edge_field_groups.filter((g) => g.label !== group.label), settings); + $$invalidate(0, settings.is_dirty = true, settings); + $$invalidate(4, plugin); + }, + rename: (group, new_label) => { + if (group.label === new_label) + return; + $$invalidate(0, settings.views.page.trail.field_group_labels = settings.views.page.trail.field_group_labels.map((label) => label === group.label ? new_label : label), settings); + $$invalidate(0, settings.views.page.prev_next.field_group_labels.prev = settings.views.page.prev_next.field_group_labels.prev.map((label) => label === group.label ? new_label : label), settings); + $$invalidate(0, settings.views.page.prev_next.field_group_labels.next = settings.views.page.prev_next.field_group_labels.next.map((label) => label === group.label ? new_label : label), settings); + $$invalidate(0, settings.views.side.matrix.field_group_labels = settings.views.side.matrix.field_group_labels.map((label) => label === group.label ? new_label : label), settings); + $$invalidate(0, settings.views.side.matrix.field_group_labels = settings.views.side.matrix.field_group_labels.map((label) => label === group.label ? new_label : label), settings); + group.label = new_label; + $$invalidate(0, settings.is_dirty = true, settings); + $$invalidate(4, plugin); + }, + add_field: (group, field_label) => { + if (!group) + return; + group.fields.push(field_label); + $$invalidate(0, settings.is_dirty = true, settings); + $$invalidate(4, plugin); + }, + remove_field: (group, field_label) => { + if (!group) + return; + group.fields = group.fields.filter((f) => f !== field_label); + $$invalidate(0, settings.is_dirty = true, settings); + $$invalidate(4, plugin); + } + } + }; + const context_menus = { + field_group: (edge_field, group_label) => (e) => { + const menu = new import_obsidian7.Menu(); + menu.addItem((item) => item.setTitle("Remove from Group").setIcon("x").onClick(() => actions.groups.remove_field(settings.edge_field_groups.find((g) => g.label === group_label), edge_field.label))); + menu.showAtMouseEvent(e); + }, + group_field: (group, field_label) => (e) => { + const menu = new import_obsidian7.Menu(); + menu.addItem((item) => item.setTitle("Remove Field").setIcon("x").onClick(() => actions.groups.remove_field(group, field_label))); + menu.showAtMouseEvent(e); + } + }; + function input0_input_handler() { + filters.fields = this.value; + $$invalidate(1, filters); + } + const click_handler = () => $$invalidate(1, filters.fields = "", filters); + const click_handler_1 = () => { + var _a, _b; + return actions.fields.scroll_to((_b = (_a = settings.edge_fields.last()) == null ? void 0 : _a.label) != null ? _b : ""); + }; + const func = (f) => f.label.includes(filters.fields.toLowerCase()); + const blur_handler = (field, e) => actions.fields.rename(field, e.currentTarget.value); + const click_handler_2 = (field) => actions.fields.remove(field); + const click_handler_3 = (group_label) => actions.groups.scroll_to(group_label); + const change_handler = (field, e) => { + if (e.currentTarget.value) { + actions.groups.add_field(settings.edge_field_groups.find((g) => g.label === e.currentTarget.value), field.label); + e.currentTarget.value = ""; + } + }; + const func_1 = (field, group) => group.fields.includes(field.label); + function input1_input_handler() { + filters.groups = this.value; + $$invalidate(1, filters); + } + const click_handler_4 = () => $$invalidate(1, filters.groups = "", filters); + const click_handler_5 = () => { + var _a, _b; + return actions.groups.scroll_to((_b = (_a = settings.edge_field_groups.last()) == null ? void 0 : _a.label) != null ? _b : ""); + }; + const func_3 = (group) => group.label.includes(filters.groups.toLowerCase()); + const blur_handler_1 = (group, e) => actions.groups.rename(group, e.currentTarget.value); + const click_handler_6 = (group) => actions.groups.remove(group); + const click_handler_7 = (field_label) => actions.fields.scroll_to(field_label); + const change_handler_1 = (group, e) => { + if (e.currentTarget.value) { + actions.groups.add_field(group, e.currentTarget.value); + e.currentTarget.value = ""; + } + }; + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(4, plugin = $$props2.plugin); + }; + return [ + settings, + filters, + actions, + context_menus, + plugin, + input0_input_handler, + click_handler, + click_handler_1, + func, + blur_handler, + click_handler_2, + click_handler_3, + change_handler, + func_1, + input1_input_handler, + click_handler_4, + click_handler_5, + func_3, + blur_handler_1, + click_handler_6, + click_handler_7, + change_handler_1 + ]; +} +var EdgeFieldSettings = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance22, create_fragment22, safe_not_equal, { plugin: 4 }, null, [-1, -1]); + } +}; +var EdgeFieldSettings_default = EdgeFieldSettings; + +// src/components/settings/TransitiveImpliedRelations.svelte +var import_obsidian10 = require("obsidian"); + +// src/components/button/ChevronOpener.svelte +function create_else_block2(ctx) { + let chevronright; + let current; + chevronright = new chevron_right_default({ props: { size: ICON_SIZE } }); + return { + c() { + create_component(chevronright.$$.fragment); + }, + m(target, anchor) { + mount_component(chevronright, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(chevronright.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(chevronright.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(chevronright, detaching); + } + }; +} +function create_if_block3(ctx) { + let chevrondown; + let current; + chevrondown = new chevron_down_default({ props: { size: ICON_SIZE } }); + return { + c() { + create_component(chevrondown.$$.fragment); + }, + m(target, anchor) { + mount_component(chevrondown, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(chevrondown.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(chevrondown.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(chevrondown, detaching); + } + }; +} +function create_fragment23(ctx) { let current_block_type_index; let if_block; let if_block_anchor; let current; - const if_block_creators = [create_if_block_14, create_else_block3]; + const if_block_creators = [create_if_block3, create_else_block2]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ( - /*content*/ - ctx2[7] === "open" || /*content*/ - ctx2[7] === "closed" + /*open*/ + ctx2[0] ) return 0; return 1; @@ -23813,8 +29084,24 @@ function create_if_block6(ctx) { insert(target, if_block_anchor, anchor); current = true; }, - p(ctx2, dirty) { - if_block.p(ctx2, dirty); + p(ctx2, [dirty]) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index !== previous_block_index) { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + } + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } }, i(local) { if (current) @@ -23827,244 +29114,235 @@ function create_if_block6(ctx) { current = false; }, d(detaching) { - if_blocks[current_block_type_index].d(detaching); - if (detaching) + if (detaching) { detach(if_block_anchor); + } + if_blocks[current_block_type_index].d(detaching); } }; } -function create_else_block3(ctx) { +function instance23($$self, $$props, $$invalidate) { + let { open } = $$props; + $$self.$$set = ($$props2) => { + if ("open" in $$props2) + $$invalidate(0, open = $$props2.open); + }; + return [open]; +} +var ChevronOpener = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance23, create_fragment23, safe_not_equal, { open: 0 }); + } +}; +var ChevronOpener_default = ChevronOpener; + +// src/components/obsidian/RenderMarkdown.svelte +var import_obsidian9 = require("obsidian"); + +// src/stores/active_file.ts +var import_obsidian8 = require("obsidian"); + +// node_modules/svelte/src/runtime/store/index.js +var subscriber_queue = []; +function writable(value, start = noop) { + let stop; + const subscribers = /* @__PURE__ */ new Set(); + function set(new_value) { + if (safe_not_equal(value, new_value)) { + value = new_value; + if (stop) { + const run_queue = !subscriber_queue.length; + for (const subscriber of subscribers) { + subscriber[1](); + subscriber_queue.push(subscriber, value); + } + if (run_queue) { + for (let i = 0; i < subscriber_queue.length; i += 2) { + subscriber_queue[i][0](subscriber_queue[i + 1]); + } + subscriber_queue.length = 0; + } + } + } + } + function update2(fn) { + set(fn(value)); + } + function subscribe2(run2, invalidate = noop) { + const subscriber = [run2, invalidate]; + subscribers.add(subscriber); + if (subscribers.size === 1) { + stop = start(set, update2) || noop; + } + run2(value); + return () => { + subscribers.delete(subscriber); + if (subscribers.size === 0 && stop) { + stop(); + stop = null; + } + }; + } + return { set, update: update2, subscribe: subscribe2 }; +} + +// src/stores/active_file.ts +var store = writable(null); +var active_file_store = { + ...store, + refresh: (app) => store.set(app.workspace.getActiveFile()) +}; + +// src/components/obsidian/RenderMarkdown.svelte +function create_fragment24(ctx) { let div; - let pre; - let t0_value = ( - /*indent*/ - ctx[17] + "-" - ); - let t0; - let t1; - let span; - let a2; - let t2_value = dropDendron( - /*link*/ - ctx[18], - /*settings*/ - ctx[5] - ) + ""; - let t2; - let a_class_value; - let t3; - let mounted; - let dispose; - function click_handler_1(...args) { - return ( - /*click_handler_1*/ - ctx[15]( - /*link*/ - ctx[18], - ...args - ) - ); - } - function mouseover_handler_1(...args) { - return ( - /*mouseover_handler_1*/ - ctx[16]( - /*link*/ - ctx[18], - ...args - ) - ); - } + let div_class_value; return { c() { div = element("div"); - pre = element("pre"); - t0 = text(t0_value); - t1 = space(); - span = element("span"); - a2 = element("a"); - t2 = text(t2_value); - t3 = space(); - attr(pre, "class", "indent svelte-1df5nr5"); - attr(a2, "class", a_class_value = "internal-link " + (isInVault( - /*link*/ - ctx[18] - ) ? "" : "is-unresolved") + " svelte-1df5nr5"); - attr(span, "class", "internal-link"); + attr(div, "class", div_class_value = "markdown-rendered " + /*cls*/ + ctx[0]); }, m(target, anchor) { insert(target, div, anchor); - append(div, pre); - append(pre, t0); - append(div, t1); - append(div, span); - append(span, a2); - append(a2, t2); - append(div, t3); - if (!mounted) { - dispose = [ - listen(span, "click", click_handler_1), - listen(span, "mouseover", mouseover_handler_1) - ]; - mounted = true; - } + ctx[5](div); }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (dirty & /*lines*/ - 1 && t0_value !== (t0_value = /*indent*/ - ctx[17] + "-")) - set_data(t0, t0_value); - if (dirty & /*lines*/ - 1 && t2_value !== (t2_value = dropDendron( - /*link*/ - ctx[18], - /*settings*/ - ctx[5] - ) + "")) - set_data(t2, t2_value); - if (dirty & /*lines*/ - 1 && a_class_value !== (a_class_value = "internal-link " + (isInVault( - /*link*/ - ctx[18] - ) ? "" : "is-unresolved") + " svelte-1df5nr5")) { - attr(a2, "class", a_class_value); + p(ctx2, [dirty]) { + if (dirty & /*cls*/ + 1 && div_class_value !== (div_class_value = "markdown-rendered " + /*cls*/ + ctx2[0])) { + attr(div, "class", div_class_value); } }, i: noop, o: noop, d(detaching) { - if (detaching) + if (detaching) { detach(div); - mounted = false; - run_all(dispose); + } + ctx[5](null); } }; } -function create_if_block_14(ctx) { - let div; - let pre; - let t0_value = ( - /*indent*/ - ctx[17] + "" - ); - let t0; - let t1; - let details2; - let summary; - let span; - let a2; - let t2_value = dropDendron( - /*link*/ - ctx[18], - /*settings*/ - ctx[5] - ) + ""; - let t2; - let a_class_value; - let t3; +function instance24($$self, $$props, $$invalidate) { + let $active_file_store; + component_subscribe($$self, active_file_store, ($$value) => $$invalidate(6, $active_file_store = $$value)); + let { cls = "" } = $$props; + let { markdown } = $$props; + let { plugin } = $$props; + let { source_path = void 0 } = $$props; + let el; + const render = (markdown2, el2) => { + var _a; + if (!el2) + return; + log.debug("rendering markdown"); + el2.empty(); + import_obsidian9.MarkdownRenderer.render( + plugin.app, + markdown2, + el2, + (_a = source_path !== null && source_path !== void 0 ? source_path : $active_file_store === null || $active_file_store === void 0 ? void 0 : $active_file_store.path) !== null && _a !== void 0 ? _a : "", + plugin + ); + }; + function div_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + el = $$value; + $$invalidate(1, el); + }); + } + $$self.$$set = ($$props2) => { + if ("cls" in $$props2) + $$invalidate(0, cls = $$props2.cls); + if ("markdown" in $$props2) + $$invalidate(2, markdown = $$props2.markdown); + if ("plugin" in $$props2) + $$invalidate(3, plugin = $$props2.plugin); + if ("source_path" in $$props2) + $$invalidate(4, source_path = $$props2.source_path); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*markdown, el*/ + 6) { + $: + render(markdown, el); + } + }; + return [cls, el, markdown, plugin, source_path, div_binding]; +} +var RenderMarkdown = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance24, create_fragment24, safe_not_equal, { + cls: 0, + markdown: 2, + plugin: 3, + source_path: 4 + }); + } +}; +var RenderMarkdown_default = RenderMarkdown; + +// src/components/obsidian/RenderExternalCodeblock.svelte +function create_fragment25(ctx) { let rendermarkdown; - let details_open_value; - let t4; + let updating_plugin; let current; - let mounted; - let dispose; - function click_handler(...args) { - return ( - /*click_handler*/ - ctx[13]( - /*link*/ - ctx[18], - ...args - ) - ); + function rendermarkdown_plugin_binding(value) { + ctx[4](value); } - function mouseover_handler(...args) { - return ( - /*mouseover_handler*/ - ctx[14]( - /*link*/ - ctx[18], - ...args - ) - ); + let rendermarkdown_props = { + source_path: ( + /*source_path*/ + ctx[3] + ), + markdown: wrap_in_codeblock( + /*code*/ + ctx[1], + /*type*/ + ctx[2] + ) + }; + if ( + /*plugin*/ + ctx[0] !== void 0 + ) { + rendermarkdown_props.plugin = /*plugin*/ + ctx[0]; } - rendermarkdown = new RenderMarkdown_default({ props: { path: ( - /*link*/ - ctx[18] - ) } }); + rendermarkdown = new RenderMarkdown_default({ props: rendermarkdown_props }); + binding_callbacks.push(() => bind(rendermarkdown, "plugin", rendermarkdown_plugin_binding)); return { c() { - div = element("div"); - pre = element("pre"); - t0 = text(t0_value); - t1 = space(); - details2 = element("details"); - summary = element("summary"); - span = element("span"); - a2 = element("a"); - t2 = text(t2_value); - t3 = space(); create_component(rendermarkdown.$$.fragment); - t4 = space(); - attr(pre, "class", "indent svelte-1df5nr5"); - attr(a2, "class", a_class_value = "internal-link " + (isInVault( - /*link*/ - ctx[18] - ) ? "" : "is-unresolved") + " svelte-1df5nr5"); - attr(span, "class", "internal-link"); - details2.open = details_open_value = /*content*/ - ctx[7] === "open"; - attr(details2, "class", "svelte-1df5nr5"); }, m(target, anchor) { - insert(target, div, anchor); - append(div, pre); - append(pre, t0); - append(div, t1); - append(div, details2); - append(details2, summary); - append(summary, span); - append(span, a2); - append(a2, t2); - append(details2, t3); - mount_component(rendermarkdown, details2, null); - append(div, t4); + mount_component(rendermarkdown, target, anchor); current = true; - if (!mounted) { - dispose = [ - listen(span, "click", click_handler), - listen(span, "mouseover", mouseover_handler) - ]; - mounted = true; - } }, - p(new_ctx, dirty) { - ctx = new_ctx; - if ((!current || dirty & /*lines*/ - 1) && t0_value !== (t0_value = /*indent*/ - ctx[17] + "")) - set_data(t0, t0_value); - if ((!current || dirty & /*lines*/ - 1) && t2_value !== (t2_value = dropDendron( - /*link*/ - ctx[18], - /*settings*/ - ctx[5] - ) + "")) - set_data(t2, t2_value); - if (!current || dirty & /*lines*/ - 1 && a_class_value !== (a_class_value = "internal-link " + (isInVault( - /*link*/ - ctx[18] - ) ? "" : "is-unresolved") + " svelte-1df5nr5")) { - attr(a2, "class", a_class_value); - } + p(ctx2, [dirty]) { const rendermarkdown_changes = {}; - if (dirty & /*lines*/ - 1) - rendermarkdown_changes.path = /*link*/ - ctx[18]; + if (dirty & /*source_path*/ + 8) + rendermarkdown_changes.source_path = /*source_path*/ + ctx2[3]; + if (dirty & /*code, type*/ + 6) + rendermarkdown_changes.markdown = wrap_in_codeblock( + /*code*/ + ctx2[1], + /*type*/ + ctx2[2] + ); + if (!updating_plugin && dirty & /*plugin*/ + 1) { + updating_plugin = true; + rendermarkdown_changes.plugin = /*plugin*/ + ctx2[0]; + add_flush_callback(() => updating_plugin = false); + } rendermarkdown.$set(rendermarkdown_changes); }, i(local) { @@ -24078,76 +29356,2793 @@ function create_if_block_14(ctx) { current = false; }, d(detaching) { - if (detaching) + destroy_component(rendermarkdown, detaching); + } + }; +} +function instance25($$self, $$props, $$invalidate) { + let { code } = $$props; + let { type } = $$props; + let { plugin } = $$props; + let { source_path = void 0 } = $$props; + function rendermarkdown_plugin_binding(value) { + plugin = value; + $$invalidate(0, plugin); + } + $$self.$$set = ($$props2) => { + if ("code" in $$props2) + $$invalidate(1, code = $$props2.code); + if ("type" in $$props2) + $$invalidate(2, type = $$props2.type); + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + if ("source_path" in $$props2) + $$invalidate(3, source_path = $$props2.source_path); + }; + return [plugin, code, type, source_path, rendermarkdown_plugin_binding]; +} +var RenderExternalCodeblock = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance25, create_fragment25, safe_not_equal, { + code: 1, + type: 2, + plugin: 0, + source_path: 3 + }); + } +}; +var RenderExternalCodeblock_default = RenderExternalCodeblock; + +// src/components/selector/EdgeFieldSelector.svelte +function get_each_context3(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[5] = list[i].label; + return child_ctx; +} +function create_each_block3(ctx) { + let option; + let t_value = ( + /*label*/ + ctx[5] + "" + ); + let t; + let option_value_value; + return { + c() { + option = element("option"); + t = text(t_value); + option.__value = option_value_value = /*label*/ + ctx[5]; + set_input_value(option, option.__value); + }, + m(target, anchor) { + insert(target, option, anchor); + append(option, t); + }, + p(ctx2, dirty) { + if (dirty & /*fields*/ + 2 && t_value !== (t_value = /*label*/ + ctx2[5] + "")) + set_data(t, t_value); + if (dirty & /*fields*/ + 2 && option_value_value !== (option_value_value = /*label*/ + ctx2[5])) { + option.__value = option_value_value; + set_input_value(option, option.__value); + } + }, + d(detaching) { + if (detaching) { + detach(option); + } + } + }; +} +function create_fragment26(ctx) { + let select; + let option; + let t; + let select_value_value; + let mounted; + let dispose; + let each_value = ensure_array_like( + /*fields*/ + ctx[1] + ); + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block3(get_each_context3(ctx, each_value, i)); + } + return { + c() { + select = element("select"); + option = element("option"); + t = text("Select Field"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + option.__value = void 0; + set_input_value(option, option.__value); + option.disabled = true; + attr(select, "class", "dropdown"); + }, + m(target, anchor) { + var _a; + insert(target, select, anchor); + append(select, option); + append(option, t); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(select, null); + } + } + select_option( + select, + /*field*/ + (_a = ctx[0]) == null ? void 0 : _a.label + ); + if (!mounted) { + dispose = listen( + select, + "change", + /*change_handler*/ + ctx[4] + ); + mounted = true; + } + }, + p(ctx2, [dirty]) { + var _a, _b; + if (dirty & /*fields*/ + 2) { + each_value = ensure_array_like( + /*fields*/ + ctx2[1] + ); + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context3(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + } else { + each_blocks[i] = create_each_block3(child_ctx); + each_blocks[i].c(); + each_blocks[i].m(select, null); + } + } + for (; i < each_blocks.length; i += 1) { + each_blocks[i].d(1); + } + each_blocks.length = each_value.length; + } + if (dirty & /*field, fields, undefined*/ + 3 && select_value_value !== (select_value_value = /*field*/ + (_a = ctx2[0]) == null ? void 0 : _a.label)) { + select_option( + select, + /*field*/ + (_b = ctx2[0]) == null ? void 0 : _b.label + ); + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(select); + } + destroy_each(each_blocks, detaching); + mounted = false; + dispose(); + } + }; +} +function instance26($$self, $$props, $$invalidate) { + let { fields } = $$props; + let { undefine_on_change = true } = $$props; + let { field = void 0 } = $$props; + const dispatch = createEventDispatcher(); + const change_handler = (e) => { + $$invalidate(0, field = fields.find((field2) => field2.label === e.currentTarget.value)); + dispatch("select", field); + if (undefine_on_change) + $$invalidate(0, field = void 0); + }; + $$self.$$set = ($$props2) => { + if ("fields" in $$props2) + $$invalidate(1, fields = $$props2.fields); + if ("undefine_on_change" in $$props2) + $$invalidate(2, undefine_on_change = $$props2.undefine_on_change); + if ("field" in $$props2) + $$invalidate(0, field = $$props2.field); + }; + return [field, fields, undefine_on_change, dispatch, change_handler]; +} +var EdgeFieldSelector = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance26, create_fragment26, safe_not_equal, { + fields: 1, + undefine_on_change: 2, + field: 0 + }); + } +}; +var EdgeFieldSelector_default = EdgeFieldSelector; + +// src/components/settings/TransitiveImpliedRelations.svelte +function add_css(target) { + append_styles(target, "svelte-91sdw2", ".border.svelte-91sdw2{border-radius:var(--radius-m);border:var(--modal-border-width) solid\n var(--background-modifier-border)}"); +} +function get_each_context4(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[25] = list[i].rule; + child_ctx[26] = list[i].rule_i; + child_ctx[27] = list[i].name; + child_ctx[28] = list; + child_ctx[29] = i; + return child_ctx; +} +function get_each_context_12(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[30] = list[i]; + child_ctx[32] = i; + return child_ctx; +} +function create_if_block_32(ctx) { + let button; + let arrowdown; + let current; + let mounted; + let dispose; + arrowdown = new arrow_down_default({ props: { size: ICON_SIZE } }); + return { + c() { + button = element("button"); + create_component(arrowdown.$$.fragment); + attr(button, "class", "w-10"); + attr(button, "aria-label", "Jump to bottom"); + }, + m(target, anchor) { + insert(target, button, anchor); + mount_component(arrowdown, button, null); + current = true; + if (!mounted) { + dispose = listen( + button, + "click", + /*click_handler_1*/ + ctx[9] + ); + mounted = true; + } + }, + p: noop, + i(local) { + if (current) + return; + transition_in(arrowdown.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(arrowdown.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(button); + } + destroy_component(arrowdown); + mounted = false; + dispose(); + } + }; +} +function create_if_block_22(ctx) { + let span; + return { + c() { + span = element("span"); + span.textContent = "Unsaved changes"; + attr(span, "class", "text-warning"); + }, + m(target, anchor) { + insert(target, span, anchor); + }, + d(detaching) { + if (detaching) { + detach(span); + } + } + }; +} +function create_else_block3(ctx) { + let span; + return { + c() { + span = element("span"); + span.textContent = "No fields in the chain."; + attr(span, "class", "search-empty-state my-0"); + }, + m(target, anchor) { + insert(target, span, anchor); + }, + p: noop, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(span); + } + } + }; +} +function create_if_block_12(ctx) { + let div; + let each_blocks = []; + let each_1_lookup = /* @__PURE__ */ new Map(); + let current; + let each_value_1 = ensure_array_like( + /*rule*/ + ctx[25].chain + ); + const get_key = (ctx2) => { + var _a; + return ( + /*attr_i*/ + ctx2[32] + /*attr*/ + ((_a = ctx2[30].field) != null ? _a : "") + ); + }; + for (let i = 0; i < each_value_1.length; i += 1) { + let child_ctx = get_each_context_12(ctx, each_value_1, i); + let key = get_key(child_ctx); + each_1_lookup.set(key, each_blocks[i] = create_each_block_12(key, child_ctx)); + } + return { + c() { + div = element("div"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(div, "class", "flex flex-wrap gap-3"); + }, + m(target, anchor) { + insert(target, div, anchor); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div, null); + } + } + current = true; + }, + p(ctx2, dirty) { + if (dirty[0] & /*transitives, filter, context_menus*/ + 76) { + each_value_1 = ensure_array_like( + /*rule*/ + ctx2[25].chain + ); + group_outros(); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value_1, each_1_lookup, div, outro_and_destroy_block, create_each_block_12, null, get_each_context_12); + check_outros(); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value_1.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { detach(div); - destroy_component(rendermarkdown); + } + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].d(); + } + } + }; +} +function create_each_block_12(key_1, ctx) { + var _a; + let first; + let tag; + let current; + tag = new tag_default({ + props: { + tag: ( + /*attr*/ + (_a = ctx[30].field) != null ? _a : "" + ), + title: "Right click for more actions." + } + }); + tag.$on("contextmenu", function() { + if (is_function( + /*context_menus*/ + ctx[6].chain_field( + /*rule_i*/ + ctx[26], + /*attr_i*/ + ctx[32] + ) + )) + ctx[6].chain_field( + /*rule_i*/ + ctx[26], + /*attr_i*/ + ctx[32] + ).apply(this, arguments); + }); + return { + key: key_1, + first: null, + c() { + first = empty(); + create_component(tag.$$.fragment); + this.first = first; + }, + m(target, anchor) { + insert(target, first, anchor); + mount_component(tag, target, anchor); + current = true; + }, + p(new_ctx, dirty) { + var _a2; + ctx = new_ctx; + const tag_changes = {}; + if (dirty[0] & /*transitives, filter*/ + 12) + tag_changes.tag = /*attr*/ + (_a2 = ctx[30].field) != null ? _a2 : ""; + tag.$set(tag_changes); + }, + i(local) { + if (current) + return; + transition_in(tag.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(tag.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(first); + } + destroy_component(tag, detaching); + } + }; +} +function create_if_block4(ctx) { + let renderexternalcodeblock; + let current; + renderexternalcodeblock = new RenderExternalCodeblock_default({ + props: { + plugin: ( + /*plugin*/ + ctx[0] + ), + type: "mermaid", + code: Mermaid.from_edges(transitive_rule_to_edges( + /*rule*/ + ctx[25] + ), { + show_attributes: ["field"], + collapse_opposing_edges: false + }) + } + }); + return { + c() { + create_component(renderexternalcodeblock.$$.fragment); + }, + m(target, anchor) { + mount_component(renderexternalcodeblock, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const renderexternalcodeblock_changes = {}; + if (dirty[0] & /*plugin*/ + 1) + renderexternalcodeblock_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty[0] & /*transitives, filter*/ + 12) + renderexternalcodeblock_changes.code = Mermaid.from_edges(transitive_rule_to_edges( + /*rule*/ + ctx2[25] + ), { + show_attributes: ["field"], + collapse_opposing_edges: false + }); + renderexternalcodeblock.$set(renderexternalcodeblock_changes); + }, + i(local) { + if (current) + return; + transition_in(renderexternalcodeblock.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(renderexternalcodeblock.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(renderexternalcodeblock, detaching); + } + }; +} +function create_key_block2(ctx) { + let div6; + let div0; + let span0; + let t1; + let current_block_type_index; + let if_block0; + let t2; + let edgefieldselector0; + let t3; + let div1; + let span1; + let t5; + let edgefieldselector1; + let t6; + let div2; + let span2; + let t8; + let input0; + let t9; + let div3; + let span3; + let t11; + let input1; + let input1_min_value; + let input1_max_value; + let input1_value_value; + let t12; + let div5; + let span4; + let t14; + let div4; + let input2; + let input2_value_value; + let t15; + let button; + let t17; + let current; + let mounted; + let dispose; + const if_block_creators = [create_if_block_12, create_else_block3]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*rule*/ + ctx2[25].chain.length + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, [-1, -1]); + if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + function select_handler(...args) { + return ( + /*select_handler*/ + ctx[16]( + /*rule_i*/ + ctx[26], + ...args + ) + ); + } + edgefieldselector0 = new EdgeFieldSelector_default({ + props: { fields: ( + /*settings*/ + ctx[1].edge_fields + ) } + }); + edgefieldselector0.$on("select", select_handler); + function func_2(...args) { + return ( + /*func_2*/ + ctx[17]( + /*rule*/ + ctx[25], + ...args + ) + ); + } + function select_handler_1(...args) { + return ( + /*select_handler_1*/ + ctx[18]( + /*rule_i*/ + ctx[26], + ...args + ) + ); + } + edgefieldselector1 = new EdgeFieldSelector_default({ + props: { + undefine_on_change: false, + fields: ( + /*settings*/ + ctx[1].edge_fields + ), + field: ( + /*settings*/ + ctx[1].edge_fields.find(func_2) + ) + } + }); + edgefieldselector1.$on("select", select_handler_1); + function input0_change_handler() { + ctx[19].call( + input0, + /*each_value*/ + ctx[28], + /*each_index*/ + ctx[29] + ); + } + function click_handler_6(...args) { + return ( + /*click_handler_6*/ + ctx[20]( + /*rule_i*/ + ctx[26], + ...args + ) + ); + } + function blur_handler(...args) { + return ( + /*blur_handler*/ + ctx[21]( + /*rule_i*/ + ctx[26], + ...args + ) + ); + } + function blur_handler_1(...args) { + return ( + /*blur_handler_1*/ + ctx[22]( + /*rule_i*/ + ctx[26], + ...args + ) + ); + } + function click_handler_7() { + return ( + /*click_handler_7*/ + ctx[23]( + /*rule_i*/ + ctx[26] + ) + ); + } + let if_block1 = ( + /*opens*/ + ctx[4][ + /*rule_i*/ + ctx[26] + ] && create_if_block4(ctx) + ); + return { + c() { + div6 = element("div"); + div0 = element("div"); + span0 = element("span"); + span0.textContent = "Edge Chain:"; + t1 = space(); + if_block0.c(); + t2 = space(); + create_component(edgefieldselector0.$$.fragment); + t3 = space(); + div1 = element("div"); + span1 = element("span"); + span1.textContent = "Closing Field:"; + t5 = space(); + create_component(edgefieldselector1.$$.fragment); + t6 = space(); + div2 = element("div"); + span2 = element("span"); + span2.textContent = "Close Reversed:"; + t8 = space(); + input0 = element("input"); + t9 = space(); + div3 = element("div"); + span3 = element("span"); + span3.textContent = "Rounds:"; + t11 = space(); + input1 = element("input"); + t12 = space(); + div5 = element("div"); + span4 = element("span"); + span4.textContent = "Name (optional):"; + t14 = space(); + div4 = element("div"); + input2 = element("input"); + t15 = space(); + button = element("button"); + button.textContent = "X"; + t17 = space(); + if (if_block1) + if_block1.c(); + attr(span0, "class", "font-semibold"); + attr(div0, "class", "flex flex-wrap items-center gap-3"); + attr(span1, "class", "font-semibold"); + attr(span2, "class", "font-semibold"); + attr(input0, "type", "checkbox"); + attr(div2, "class", "flex items-center gap-2"); + attr(span3, "class", "font-semibold"); + attr(input1, "type", "number"); + attr(input1, "min", input1_min_value = 0); + attr(input1, "max", input1_max_value = 100); + input1.value = input1_value_value = /*rule*/ + ctx[25].rounds; + attr(span4, "class", "font-semibold"); + attr(input2, "type", "text"); + input2.value = input2_value_value = /*rule*/ + ctx[25].name; + attr(input2, "placeholder", "Rule Name"); + attr(button, "aria-label", "Reset Name"); + attr(div4, "class", "flex gap-1"); + attr(div5, "class", "flex flex-wrap items-center gap-3"); + attr(div6, "class", "my-2 flex flex-col gap-3 px-4 py-2"); + }, + m(target, anchor) { + insert(target, div6, anchor); + append(div6, div0); + append(div0, span0); + append(div0, t1); + if_blocks[current_block_type_index].m(div0, null); + append(div0, t2); + mount_component(edgefieldselector0, div0, null); + append(div6, t3); + append(div6, div1); + append(div1, span1); + append(div1, t5); + mount_component(edgefieldselector1, div1, null); + append(div6, t6); + append(div6, div2); + append(div2, span2); + append(div2, t8); + append(div2, input0); + input0.checked = /*rule*/ + ctx[25].close_reversed; + append(div6, t9); + append(div6, div3); + append(div3, span3); + append(div3, t11); + append(div3, input1); + append(div6, t12); + append(div6, div5); + append(div5, span4); + append(div5, t14); + append(div5, div4); + append(div4, input2); + append(div4, t15); + append(div4, button); + append(div6, t17); + if (if_block1) + if_block1.m(div6, null); + current = true; + if (!mounted) { + dispose = [ + listen(input0, "change", input0_change_handler), + listen(input0, "click", click_handler_6), + listen(input1, "blur", blur_handler), + listen(input2, "blur", blur_handler_1), + listen(button, "click", click_handler_7) + ]; + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block0 = if_blocks[current_block_type_index]; + if (!if_block0) { + if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + if_block0.c(); + } else { + if_block0.p(ctx, dirty); + } + transition_in(if_block0, 1); + if_block0.m(div0, t2); + } + const edgefieldselector0_changes = {}; + if (dirty[0] & /*settings*/ + 2) + edgefieldselector0_changes.fields = /*settings*/ + ctx[1].edge_fields; + edgefieldselector0.$set(edgefieldselector0_changes); + const edgefieldselector1_changes = {}; + if (dirty[0] & /*settings*/ + 2) + edgefieldselector1_changes.fields = /*settings*/ + ctx[1].edge_fields; + if (dirty[0] & /*settings, transitives, filter*/ + 14) + edgefieldselector1_changes.field = /*settings*/ + ctx[1].edge_fields.find(func_2); + edgefieldselector1.$set(edgefieldselector1_changes); + if (dirty[0] & /*transitives, filter*/ + 12) { + input0.checked = /*rule*/ + ctx[25].close_reversed; + } + if (!current || dirty[0] & /*transitives, filter*/ + 12 && input1_value_value !== (input1_value_value = /*rule*/ + ctx[25].rounds) && input1.value !== input1_value_value) { + input1.value = input1_value_value; + } + if (!current || dirty[0] & /*transitives, filter*/ + 12 && input2_value_value !== (input2_value_value = /*rule*/ + ctx[25].name) && input2.value !== input2_value_value) { + input2.value = input2_value_value; + } + if ( + /*opens*/ + ctx[4][ + /*rule_i*/ + ctx[26] + ] + ) { + if (if_block1) { + if_block1.p(ctx, dirty); + if (dirty[0] & /*opens, transitives, filter*/ + 28) { + transition_in(if_block1, 1); + } + } else { + if_block1 = create_if_block4(ctx); + if_block1.c(); + transition_in(if_block1, 1); + if_block1.m(div6, null); + } + } else if (if_block1) { + group_outros(); + transition_out(if_block1, 1, 1, () => { + if_block1 = null; + }); + check_outros(); + } + }, + i(local) { + if (current) + return; + transition_in(if_block0); + transition_in(edgefieldselector0.$$.fragment, local); + transition_in(edgefieldselector1.$$.fragment, local); + transition_in(if_block1); + current = true; + }, + o(local) { + transition_out(if_block0); + transition_out(edgefieldselector0.$$.fragment, local); + transition_out(edgefieldselector1.$$.fragment, local); + transition_out(if_block1); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div6); + } + if_blocks[current_block_type_index].d(); + destroy_component(edgefieldselector0); + destroy_component(edgefieldselector1); + if (if_block1) + if_block1.d(); mounted = false; run_all(dispose); } }; } -function create_each_block5(ctx) { - let show_if = meetsConditions( - /*indent*/ - ctx[17], - /*link*/ - ctx[18], - /*froms*/ - ctx[1], - /*min*/ - ctx[2], - /*max*/ - ctx[3] +function create_each_block4(key_1, ctx) { + let details; + let summary; + let div0; + let chevronopener; + let t0; + let code; + let t1_value = ( + /*name*/ + ctx[27] + "" ); - let if_block_anchor; + let t1; + let t2; + let div1; + let button0; + let arrowup; + let button0_disabled_value; + let t3; + let button1; + let arrowdown; + let button1_disabled_value; + let t4; + let button2; + let clipboardicon; + let t5; + let button3; + let t7; + let previous_key = ( + /*rule*/ + ctx[25] + ); + let details_id_value; let current; - let if_block = show_if && create_if_block6(ctx); + let mounted; + let dispose; + chevronopener = new ChevronOpener_default({ + props: { + open: ( + /*opens*/ + ctx[4][ + /*rule_i*/ + ctx[26] + ] + ) + } + }); + arrowup = new arrow_up_default({ props: { size: ICON_SIZE } }); + function click_handler_2() { + return ( + /*click_handler_2*/ + ctx[12]( + /*rule_i*/ + ctx[26] + ) + ); + } + arrowdown = new arrow_down_default({ props: { size: ICON_SIZE } }); + function click_handler_3() { + return ( + /*click_handler_3*/ + ctx[13]( + /*rule_i*/ + ctx[26] + ) + ); + } + clipboardicon = new clipboard_default({ props: { size: ICON_SIZE } }); + function click_handler_4() { + return ( + /*click_handler_4*/ + ctx[14]( + /*rule_i*/ + ctx[26] + ) + ); + } + function click_handler_5() { + return ( + /*click_handler_5*/ + ctx[15]( + /*rule_i*/ + ctx[26] + ) + ); + } + let key_block = create_key_block2(ctx); + function details_toggle_handler() { + ctx[24].call( + details, + /*rule_i*/ + ctx[26] + ); + } return { + key: key_1, + first: null, c() { - if (if_block) - if_block.c(); - if_block_anchor = empty(); + details = element("details"); + summary = element("summary"); + div0 = element("div"); + create_component(chevronopener.$$.fragment); + t0 = space(); + code = element("code"); + t1 = text(t1_value); + t2 = space(); + div1 = element("div"); + button0 = element("button"); + create_component(arrowup.$$.fragment); + t3 = space(); + button1 = element("button"); + create_component(arrowdown.$$.fragment); + t4 = space(); + button2 = element("button"); + create_component(clipboardicon.$$.fragment); + t5 = space(); + button3 = element("button"); + button3.textContent = "X"; + t7 = space(); + key_block.c(); + attr(div0, "class", "flex items-center gap-2"); + button0.disabled = button0_disabled_value = /*rule_i*/ + ctx[26] === 0; + button1.disabled = button1_disabled_value = /*rule_i*/ + ctx[26] === /*transitives*/ + ctx[3].length - 1; + attr(button2, "aria-label", "Copy Transitive Implied Relation"); + attr(button3, "aria-label", "Delete Transitive Implied Relation"); + attr(div1, "class", "flex gap-1"); + attr(summary, "class", "flex items-center justify-between gap-2"); + attr(details, "id", details_id_value = /*actions*/ + ctx[5].make_id( + /*rule_i*/ + ctx[26] + )); + attr(details, "class", "scroll-mt-40 border p-2 svelte-91sdw2"); + this.first = details; }, m(target, anchor) { - if (if_block) - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); + insert(target, details, anchor); + append(details, summary); + append(summary, div0); + mount_component(chevronopener, div0, null); + append(div0, t0); + append(div0, code); + append(code, t1); + append(summary, t2); + append(summary, div1); + append(div1, button0); + mount_component(arrowup, button0, null); + append(div1, t3); + append(div1, button1); + mount_component(arrowdown, button1, null); + append(div1, t4); + append(div1, button2); + mount_component(clipboardicon, button2, null); + append(div1, t5); + append(div1, button3); + append(details, t7); + key_block.m(details, null); + details.open = /*opens*/ + ctx[4][ + /*rule_i*/ + ctx[26] + ]; + current = true; + if (!mounted) { + dispose = [ + listen(button0, "click", click_handler_2), + listen(button1, "click", click_handler_3), + listen(button2, "click", click_handler_4), + listen(button3, "click", click_handler_5), + listen(details, "toggle", details_toggle_handler) + ]; + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + const chevronopener_changes = {}; + if (dirty[0] & /*opens, transitives, filter*/ + 28) + chevronopener_changes.open = /*opens*/ + ctx[4][ + /*rule_i*/ + ctx[26] + ]; + chevronopener.$set(chevronopener_changes); + if ((!current || dirty[0] & /*transitives, filter*/ + 12) && t1_value !== (t1_value = /*name*/ + ctx[27] + "")) + set_data(t1, t1_value); + if (!current || dirty[0] & /*transitives, filter*/ + 12 && button0_disabled_value !== (button0_disabled_value = /*rule_i*/ + ctx[26] === 0)) { + button0.disabled = button0_disabled_value; + } + if (!current || dirty[0] & /*transitives, filter*/ + 12 && button1_disabled_value !== (button1_disabled_value = /*rule_i*/ + ctx[26] === /*transitives*/ + ctx[3].length - 1)) { + button1.disabled = button1_disabled_value; + } + if (dirty[0] & /*transitives, filter*/ + 12 && safe_not_equal(previous_key, previous_key = /*rule*/ + ctx[25])) { + group_outros(); + transition_out(key_block, 1, 1, noop); + check_outros(); + key_block = create_key_block2(ctx); + key_block.c(); + transition_in(key_block, 1); + key_block.m(details, null); + } else { + key_block.p(ctx, dirty); + } + if (!current || dirty[0] & /*transitives, filter*/ + 12 && details_id_value !== (details_id_value = /*actions*/ + ctx[5].make_id( + /*rule_i*/ + ctx[26] + ))) { + attr(details, "id", details_id_value); + } + if (dirty[0] & /*opens, transitives, filter*/ + 28) { + details.open = /*opens*/ + ctx[4][ + /*rule_i*/ + ctx[26] + ]; + } + }, + i(local) { + if (current) + return; + transition_in(chevronopener.$$.fragment, local); + transition_in(arrowup.$$.fragment, local); + transition_in(arrowdown.$$.fragment, local); + transition_in(clipboardicon.$$.fragment, local); + transition_in(key_block); + current = true; + }, + o(local) { + transition_out(chevronopener.$$.fragment, local); + transition_out(arrowup.$$.fragment, local); + transition_out(arrowdown.$$.fragment, local); + transition_out(clipboardicon.$$.fragment, local); + transition_out(key_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(details); + } + destroy_component(chevronopener); + destroy_component(arrowup); + destroy_component(arrowdown); + destroy_component(clipboardicon); + key_block.d(detaching); + mounted = false; + run_all(dispose); + } + }; +} +function create_fragment27(ctx) { + let div4; + let p0; + let t0; + let em; + let t2; + let code0; + let t5; + let t6; + let div1; + let button0; + let saveicon; + let t7; + let t8; + let div0; + let input; + let t9; + let button1; + let t10; + let button1_disabled_value; + let t11; + let t12; + let t13; + let div3; + let each_blocks = []; + let each_1_lookup = /* @__PURE__ */ new Map(); + let t14; + let button2; + let plusicon; + let t15; + let t16; + let details; + let summary; + let t18; + let div2; + let p1; + let t22; + let textarea; + let t23; + let button3; + let current; + let mounted; + let dispose; + saveicon = new save_default({ props: { size: ICON_SIZE } }); + let if_block0 = ( + /*transitives*/ + ctx[3].length > 3 && create_if_block_32(ctx) + ); + let if_block1 = ( + /*settings*/ + ctx[1].is_dirty && create_if_block_22(ctx) + ); + let each_value = ensure_array_like( + /*transitives*/ + ctx[3].map( + /*func*/ + ctx[10] + ).filter( + /*func_1*/ + ctx[11] + ) + ); + const get_key = (ctx2) => ( + /*name*/ + ctx2[27] + /*rule_i*/ + ctx2[26] + ); + for (let i = 0; i < each_value.length; i += 1) { + let child_ctx = get_each_context4(ctx, each_value, i); + let key = get_key(child_ctx); + each_1_lookup.set(key, each_blocks[i] = create_each_block4(key, child_ctx)); + } + plusicon = new plus_default({ props: { size: ICON_SIZE } }); + return { + c() { + div4 = element("div"); + p0 = element("p"); + t0 = text("Transitive implied relations represent "); + em = element("em"); + em.textContent = "chains"; + t2 = text(' of your\n Breadcrumbs fields that collapse into a single field. For example, if\n you have the fields: "spouse", "sibling", and "sibling-in-law", you can\n add the transitive chain\n '); + code0 = element("code"); + code0.textContent = `${stringify_transitive_relation({ + close_reversed: false, + close_field: "sibling-in-law", + chain: [{ field: "spouse" }, { field: "sibling" }] + })} `; + t5 = text(". In other words, your spouse's sibling is your sibling-in-law."); + t6 = space(); + div1 = element("div"); + button0 = element("button"); + create_component(saveicon.$$.fragment); + t7 = text("\n Save"); + t8 = space(); + div0 = element("div"); + input = element("input"); + t9 = space(); + button1 = element("button"); + t10 = text("X"); + t11 = space(); + if (if_block0) + if_block0.c(); + t12 = space(); + if (if_block1) + if_block1.c(); + t13 = space(); + div3 = element("div"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + t14 = space(); + button2 = element("button"); + create_component(plusicon.$$.fragment); + t15 = text("\n Add New Transitive Implied Relation"); + t16 = space(); + details = element("details"); + summary = element("summary"); + summary.textContent = "Bulk Add Rules (Advanced)"; + t18 = space(); + div2 = element("div"); + p1 = element("p"); + p1.innerHTML = `Quickly add multiple rules using the shorthand syntax: [field-one, field-two] -> close-field + . Each rule should be on a new line.`; + t22 = space(); + textarea = element("textarea"); + t23 = space(); + button3 = element("button"); + button3.textContent = "Bulk Add"; + attr(button0, "class", "flex items-center gap-1"); + attr(input, "type", "text"); + attr(input, "placeholder", "Filter Rules by Name"); + attr(button1, "class", "w-8"); + attr(button1, "aria-label", "Clear Filter"); + button1.disabled = button1_disabled_value = /*filter*/ + ctx[2] === ""; + attr(div0, "class", "flex gap-1"); + attr(div1, "class", "my-2 flex items-center gap-2"); + attr(button2, "class", "flex items-center gap-1"); + attr(textarea, "id", "BC-transitive-bulk-str"); + attr(textarea, "class", "h-32 w-60"); + attr(textarea, "placeholder", "[up] <- down"); + attr(button3, "class", "w-60"); + attr(div2, "class", "flex flex-col gap-1"); + attr(div3, "class", "flex flex-col gap-3"); + attr(div4, "class", "BC-custom-transitive-implied-relations"); + }, + m(target, anchor) { + insert(target, div4, anchor); + append(div4, p0); + append(p0, t0); + append(p0, em); + append(p0, t2); + append(p0, code0); + append(p0, t5); + append(div4, t6); + append(div4, div1); + append(div1, button0); + mount_component(saveicon, button0, null); + append(button0, t7); + append(div1, t8); + append(div1, div0); + append(div0, input); + set_input_value( + input, + /*filter*/ + ctx[2] + ); + append(div0, t9); + append(div0, button1); + append(button1, t10); + append(div1, t11); + if (if_block0) + if_block0.m(div1, null); + append(div1, t12); + if (if_block1) + if_block1.m(div1, null); + append(div4, t13); + append(div4, div3); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div3, null); + } + } + append(div3, t14); + append(div3, button2); + mount_component(plusicon, button2, null); + append(button2, t15); + append(div3, t16); + append(div3, details); + append(details, summary); + append(details, t18); + append(details, div2); + append(div2, p1); + append(div2, t22); + append(div2, textarea); + append(div2, t23); + append(div2, button3); + current = true; + if (!mounted) { + dispose = [ + listen( + button0, + "click", + /*actions*/ + ctx[5].save + ), + listen( + input, + "input", + /*input_input_handler*/ + ctx[7] + ), + listen( + button1, + "click", + /*click_handler*/ + ctx[8] + ), + listen( + button2, + "click", + /*actions*/ + ctx[5].add_transitive + ), + listen( + button3, + "click", + /*actions*/ + ctx[5].add_bulk + ) + ]; + mounted = true; + } + }, + p(ctx2, dirty) { + if (dirty[0] & /*filter*/ + 4 && input.value !== /*filter*/ + ctx2[2]) { + set_input_value( + input, + /*filter*/ + ctx2[2] + ); + } + if (!current || dirty[0] & /*filter*/ + 4 && button1_disabled_value !== (button1_disabled_value = /*filter*/ + ctx2[2] === "")) { + button1.disabled = button1_disabled_value; + } + if ( + /*transitives*/ + ctx2[3].length > 3 + ) { + if (if_block0) { + if_block0.p(ctx2, dirty); + if (dirty[0] & /*transitives*/ + 8) { + transition_in(if_block0, 1); + } + } else { + if_block0 = create_if_block_32(ctx2); + if_block0.c(); + transition_in(if_block0, 1); + if_block0.m(div1, t12); + } + } else if (if_block0) { + group_outros(); + transition_out(if_block0, 1, 1, () => { + if_block0 = null; + }); + check_outros(); + } + if ( + /*settings*/ + ctx2[1].is_dirty + ) { + if (if_block1) { + } else { + if_block1 = create_if_block_22(ctx2); + if_block1.c(); + if_block1.m(div1, null); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + if (dirty[0] & /*actions, transitives, filter, opens, plugin, settings, context_menus*/ + 127) { + each_value = ensure_array_like( + /*transitives*/ + ctx2[3].map( + /*func*/ + ctx2[10] + ).filter( + /*func_1*/ + ctx2[11] + ) + ); + group_outros(); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx2, each_value, each_1_lookup, div3, outro_and_destroy_block, create_each_block4, t14, get_each_context4); + check_outros(); + } + }, + i(local) { + if (current) + return; + transition_in(saveicon.$$.fragment, local); + transition_in(if_block0); + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + transition_in(plusicon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(saveicon.$$.fragment, local); + transition_out(if_block0); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + transition_out(plusicon.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div4); + } + destroy_component(saveicon); + if (if_block0) + if_block0.d(); + if (if_block1) + if_block1.d(); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].d(); + } + destroy_component(plusicon); + mounted = false; + run_all(dispose); + } + }; +} +function instance27($$self, $$props, $$invalidate) { + let { plugin } = $$props; + const settings = plugin.settings; + let filter = ""; + let transitives = [...settings.implied_relations.transitive]; + const opens = transitives.map(() => false); + const actions = { + save: () => __awaiter(void 0, void 0, void 0, function* () { + for (const { close_field } of transitives) { + if (!close_field) { + return new import_obsidian10.Notice("Closing field cannot be empty."); + } + } + $$invalidate(1, settings.implied_relations.transitive = transitives, settings); + yield Promise.all([plugin.saveSettings(), plugin.refresh({ redraw_side_views: true })]); + $$invalidate(0, plugin); + }), + make_id: (rule_i) => `BC-transitive-rule-${rule_i}`, + scroll_to: (rule_i) => { + var _a; + return (_a = document.getElementById(actions.make_id(rule_i))) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ behavior: "smooth" }); + }, + add_transitive: () => { + const new_length = transitives.push({ + name: "", + chain: [], + // NOTE: Max by default, users can lower if needed + // It seems to fit with intuition that the implied relations just keep going + rounds: 10, + close_reversed: false, + close_field: settings.edge_fields[0].label + }); + $$invalidate(4, opens[new_length - 1] = true, opens); + setTimeout(() => actions.scroll_to(new_length - 1), 0); + $$invalidate(3, transitives); + $$invalidate(1, settings.is_dirty = true, settings); + }, + add_bulk: () => { + const textarea = document.getElementById("BC-transitive-bulk-str"); + if (!textarea) + return new import_obsidian10.Notice("Could not find textarea."); + const value = textarea.value.trim(); + if (!value) + return new import_obsidian10.Notice("No rules to parse."); + const lines = split_and_trim(value, "\n").filter(Boolean); + const parsed = lines.map(parse_transitive_relation).filter((r) => r.ok); + if (parsed.length !== lines.length) { + return new import_obsidian10.Notice("Some rules could not be parsed. Ensure you're using the correct syntax of `[field-one, field-two] -> close-field`, with each rule of a new line."); + } + const validated = parsed.map((r) => input_transitive_rule_schema({ fields: plugin.settings.edge_fields }).safeParse(r.data)); + const validation_errors = validated.filter((r) => !r.success); + if (validation_errors.length) { + log.error("Bulk-add transitive rule errors >", validation_errors.map((r) => { + var _a; + return r.success ? null : (_a = r.error) === null || _a === void 0 ? void 0 : _a.issues; + })); + return new import_obsidian10.Notice("Some rules could not be parsed. Check the logs for more information."); + } + validated.forEach((r) => { + if (r.success) { + transitives.push(Object.assign(Object.assign({}, r.data), { name: "", rounds: 10 })); + } + }); + new import_obsidian10.Notice(`Bulk added ${validated.length} rules \u2705`); + $$invalidate(3, transitives); + $$invalidate(1, settings.is_dirty = true, settings); + }, + copy_transitive: (i) => { + const new_length = transitives.push(Object.assign(Object.assign({}, transitives[i]), { + name: `${get_transitive_rule_name(transitives[i])} (copy)` + })); + $$invalidate(4, opens[new_length - 1] = true, opens); + setTimeout(() => actions.scroll_to(new_length - 1), 0); + $$invalidate(3, transitives); + $$invalidate(1, settings.is_dirty = true, settings); + }, + remove_transitive: (i) => { + $$invalidate(3, transitives = transitives.filter((_, j) => j !== i)); + $$invalidate(1, settings.is_dirty = true, settings); + }, + rename_transitive: (i, new_name) => { + if (transitives[i].name === new_name) + return; + $$invalidate(3, transitives[i].name = new_name, transitives); + $$invalidate(3, transitives); + $$invalidate(1, settings.is_dirty = true, settings); + }, + reorder_transitive: (i, j) => { + const temp = transitives[i]; + $$invalidate(3, transitives[i] = transitives[j], transitives); + $$invalidate(3, transitives[j] = temp, transitives); + $$invalidate(3, transitives); + $$invalidate(1, settings.is_dirty = true, settings); + }, + add_chain_field: (i, field) => { + if (!field) + return; + transitives[i].chain.push({ field: field.label }); + $$invalidate(3, transitives); + $$invalidate(1, settings.is_dirty = true, settings); + }, + remove_chain_field: (i, j) => { + $$invalidate(3, transitives[i].chain = transitives[i].chain.filter((_, k) => k !== j), transitives); + $$invalidate(3, transitives); + $$invalidate(1, settings.is_dirty = true, settings); + }, + set_close_field: (i, field) => { + if (!field) + return; + $$invalidate(3, transitives[i].close_field = field.label, transitives); + $$invalidate(3, transitives); + $$invalidate(1, settings.is_dirty = true, settings); + }, + set_rounds: (i, rounds) => { + if (isNaN(rounds) || rounds < 0) + return; + $$invalidate(3, transitives[i].rounds = rounds, transitives); + $$invalidate(3, transitives); + $$invalidate(1, settings.is_dirty = true, settings); + }, + set_close_reversed: (i, reversed) => { + $$invalidate(3, transitives[i].close_reversed = reversed, transitives); + $$invalidate(3, transitives); + $$invalidate(1, settings.is_dirty = true, settings); + } + }; + const context_menus = { + chain_field: (rule_i, attr_i) => (e) => { + const menu = new import_obsidian10.Menu(); + menu.addItem((item) => item.setTitle("Remove Field").setIcon("x").onClick(() => actions.remove_chain_field(rule_i, attr_i))); + menu.showAtMouseEvent(e); + } + }; + function input_input_handler() { + filter = this.value; + $$invalidate(2, filter); + } + const click_handler = () => $$invalidate(2, filter = ""); + const click_handler_1 = () => actions.scroll_to(transitives.length - 1); + const func = (rule, rule_i) => ({ + rule, + rule_i, + name: get_transitive_rule_name(rule) + }); + const func_1 = (r) => r.name.includes(filter.toLowerCase()); + const click_handler_2 = (rule_i) => actions.reorder_transitive(rule_i, rule_i - 1); + const click_handler_3 = (rule_i) => actions.reorder_transitive(rule_i, rule_i + 1); + const click_handler_4 = (rule_i) => actions.copy_transitive(rule_i); + const click_handler_5 = (rule_i) => actions.remove_transitive(rule_i); + const select_handler = (rule_i, e) => actions.add_chain_field(rule_i, e.detail); + const func_2 = (rule, f) => f.label === rule.close_field; + const select_handler_1 = (rule_i, e) => actions.set_close_field(rule_i, e.detail); + function input0_change_handler(each_value, each_index) { + each_value[each_index].rule.close_reversed = this.checked; + $$invalidate(3, transitives); + $$invalidate(2, filter); + } + const click_handler_6 = (rule_i, e) => actions.set_close_reversed(rule_i, e.currentTarget.checked); + const blur_handler = (rule_i, e) => actions.set_rounds(rule_i, +e.currentTarget.value); + const blur_handler_1 = (rule_i, e) => actions.rename_transitive(rule_i, e.currentTarget.value); + const click_handler_7 = (rule_i) => actions.rename_transitive(rule_i, ""); + function details_toggle_handler(rule_i) { + opens[rule_i] = this.open; + $$invalidate(4, opens); + } + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + }; + return [ + plugin, + settings, + filter, + transitives, + opens, + actions, + context_menus, + input_input_handler, + click_handler, + click_handler_1, + func, + func_1, + click_handler_2, + click_handler_3, + click_handler_4, + click_handler_5, + select_handler, + func_2, + select_handler_1, + input0_change_handler, + click_handler_6, + blur_handler, + blur_handler_1, + click_handler_7, + details_toggle_handler + ]; +} +var TransitiveImpliedRelations = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance27, create_fragment27, safe_not_equal, { plugin: 0 }, add_css, [-1, -1]); + } +}; +var TransitiveImpliedRelations_default = TransitiveImpliedRelations; + +// src/settings/ShowNodeOptions.ts +var import_obsidian11 = require("obsidian"); +var _add_settings_show_node_options = (plugin, containerEl, cb, options) => { + let show_node_options = cb.get(); + const setting = new import_obsidian11.Setting(containerEl).setName("Note display options").setDesc("How to display note links"); + setting.controlEl.addClasses(["flex", "flex-wrap", "gap-2"]); + setting.addToggle((toggle) => { + toggle.toggleEl.before("Folder"); + toggle.setTooltip("Folder path").setValue(show_node_options.folder).onChange(async (value) => { + show_node_options.folder = value; + cb.set(show_node_options); + if ((options == null ? void 0 : options.save_and_refresh) !== false) { + await Promise.all([plugin.saveSettings()]); + plugin.refresh({ rebuild_graph: false }); + } + }); + }); + setting.addToggle((toggle) => { + toggle.toggleEl.before("Extension"); + toggle.setTooltip("File extension").setValue(show_node_options.ext).onChange(async (value) => { + show_node_options.ext = value; + cb.set(show_node_options); + if ((options == null ? void 0 : options.save_and_refresh) !== false) { + await Promise.all([plugin.saveSettings()]); + plugin.refresh({ rebuild_graph: false }); + } + }); + }); + setting.addToggle((toggle) => { + toggle.toggleEl.before("Alias"); + toggle.setTooltip("Alias (first alias, if available)").setValue(show_node_options.alias).onChange(async (value) => { + show_node_options.alias = value; + cb.set(show_node_options); + if ((options == null ? void 0 : options.save_and_refresh) !== false) { + await Promise.all([plugin.saveSettings()]); + plugin.refresh({ rebuild_graph: false }); + } + }); + }); + return setting; +}; + +// src/settings/CodeblockSettings.ts +var _add_settings_codeblocks = (plugin, containerEl) => { + _add_settings_show_node_options(plugin, containerEl, { + get: () => plugin.settings.views.codeblocks.show_node_options, + set: (value) => plugin.settings.views.codeblocks.show_node_options = value + }); +}; + +// src/settings/DateNoteSettings.ts +var import_obsidian13 = require("obsidian"); + +// src/utils/settings.ts +var import_obsidian12 = require("obsidian"); +var new_setting = (container_el, config) => { + const setting = new import_obsidian12.Setting(container_el); + if (config.name) + setting.setName(config.name); + if (config.desc) + setting.setDesc(config.desc); + if (config.toggle) { + setting.addToggle((toggle) => { + toggle.setValue(config.toggle.value).onChange(config.toggle.cb); + }); + } else if (config.input) { + setting.addText((text2) => { + var _a; + if ((_a = config.input) == null ? void 0 : _a.placeholder) { + text2.setPlaceholder(config.input.placeholder); + } + text2.setValue(config.input.value); + text2.inputEl.onblur = () => { + config.input.cb(text2.getValue()); + }; + }); + } else if (config.select) { + setting.addDropdown((dropdown) => { + const options = Array.isArray(config.select.options) ? config.select.options.reduce( + (acc, option) => { + acc[option] = option; + return acc; + }, + {} + ) : config.select.options; + dropdown.addOptions(options).setValue(config.select.value).onChange(config.select.cb); + }); + } else if (config.checklist) { + const checklist_el = setting.controlEl.createEl("div", { + attr: { class: "flex flex-wrap gap-3" } + }); + let state = { ...config.checklist.options }; + Object.keys(config.checklist.options).forEach((key) => { + const attr2 = { type: "checkbox" }; + if (config.checklist.options[key]) + attr2.checked = true; + checklist_el.createEl("label", { + text: key, + cls: "flex items-center gap-1.5 grow" + }).createEl("input", { attr: attr2 }, (el) => { + el.classList.add("shrink"); + el.onchange = (e) => { + if (!(e.target instanceof HTMLInputElement)) + return; + state[key] = e.target.checked; + config.checklist.cb(state); + }; + }); + }); + } + return setting; +}; + +// src/settings/DateNoteSettings.ts +var _add_settings_date_note = (plugin, containerEl) => { + new_setting(containerEl, { + name: "Enabled", + desc: "Look for date notes to use as edge sources", + toggle: { + value: plugin.settings.explicit_edge_sources.date_note.enabled, + cb: async (value) => { + plugin.settings.explicit_edge_sources.date_note.enabled = value; + await Promise.all([plugin.refresh(), plugin.saveSettings()]); + } + } + }); + new_setting(containerEl, { + name: "Default Field", + desc: "Field used to join date notes together. Breadcrumbs takes the current note's date, adds one day, and joins the two notes with this field.", + select: { + value: plugin.settings.explicit_edge_sources.date_note.default_field, + options: plugin.settings.edge_fields.map((f) => f.label), + cb: async (value) => { + plugin.settings.explicit_edge_sources.date_note.default_field = value; + await Promise.all([plugin.refresh(), plugin.saveSettings()]); + } + } + }); + const date_format_fragment = new DocumentFragment(); + date_format_fragment.createEl( + "span", + {}, + (el) => el.innerHTML = `Luxon date format to use` + ); + new_setting(containerEl, { + name: "Date Format", + desc: date_format_fragment, + input: { + value: plugin.settings.explicit_edge_sources.date_note.date_format, + cb: async (value) => { + if (!value) + new import_obsidian13.Notice("Date format cannot be empty"); + else { + plugin.settings.explicit_edge_sources.date_note.date_format = value; + await Promise.all([ + plugin.refresh(), + plugin.saveSettings() + ]); + } + } + } + }); + new_setting(containerEl, { + name: "Stretch to Existing", + desc: "If there is a gap from one day to another, should the next note be the unresolved one in one day or should it 'stretch' to the next resolved (existing) note?", + toggle: { + value: plugin.settings.explicit_edge_sources.date_note.stretch_to_existing, + cb: async (value) => { + plugin.settings.explicit_edge_sources.date_note.stretch_to_existing = value; + await Promise.all([plugin.refresh(), plugin.saveSettings()]); + } + } + }); +}; + +// src/settings/DebugSettings.ts +var _add_settings_debug = (plugin, containerEl) => { + new_setting(containerEl, { + name: "Debug Level", + desc: "Set the level of debug logging", + select: { + options: LOG_LEVELS, + value: plugin.settings.debug.level, + cb: async (value) => { + log.set_level(value); + plugin.settings.debug.level = value; + await plugin.saveSettings(); + } + } + }); +}; + +// src/settings/DendronNoteSettings.ts +var import_obsidian14 = require("obsidian"); +var _add_settings_dendron_note = (plugin, containerEl) => { + new_setting(containerEl, { + name: "Enabled", + desc: "Look for dendron notes to use as edge sources", + toggle: { + value: plugin.settings.explicit_edge_sources.dendron_note.enabled, + cb: async (value) => { + plugin.settings.explicit_edge_sources.dendron_note.enabled = value; + await Promise.all([plugin.refresh(), plugin.saveSettings()]); + } + } + }); + new_setting(containerEl, { + name: "Delimiter", + desc: "Delimiter to use to split the note name", + input: { + value: plugin.settings.explicit_edge_sources.dendron_note.delimiter, + cb: async (value) => { + if (!value) + new import_obsidian14.Notice("Delimiter cannot be empty"); + else { + plugin.settings.explicit_edge_sources.dendron_note.delimiter = value; + await Promise.all([ + plugin.refresh(), + plugin.saveSettings() + ]); + } + } + } + }); + new_setting(containerEl, { + name: "Default Field", + desc: "Field to use if the BC-dendron-note-field is not specified", + select: { + value: plugin.settings.explicit_edge_sources.dendron_note.default_field, + options: plugin.settings.edge_fields.map((f) => f.label), + cb: async (value) => { + plugin.settings.explicit_edge_sources.dendron_note.default_field = value; + await Promise.all([plugin.refresh(), plugin.saveSettings()]); + } + } + }); + new_setting(containerEl, { + name: "Display Trimmed", + desc: "Display Dendron note names as the right-most split of the delimiter. e.g. `a.b.c` -> `c`", + toggle: { + value: plugin.settings.explicit_edge_sources.dendron_note.display_trimmed, + cb: async (value) => { + plugin.settings.explicit_edge_sources.dendron_note.display_trimmed = value; + await Promise.all([plugin.refresh(), plugin.saveSettings()]); + } + } + }); +}; + +// src/settings/EdgeFieldSuggestorSettings.ts +var import_obsidian15 = require("obsidian"); +var _add_settings_edge_field_suggestor = (plugin, contentEl) => { + const { settings } = plugin; + new_setting(contentEl, { + name: "Enabled", + desc: "Whether to enable the edge field suggestor", + toggle: { + value: settings.suggestors.edge_field.enabled, + cb: async (value) => { + settings.suggestors.edge_field.enabled = value; + if (value) { + new import_obsidian15.Notice( + "Please restart Obsidian for the changes to take effect" + ); + } + await plugin.saveSettings(); + } + } + }); + new_setting(contentEl, { + name: "Trigger String", + desc: "The string that triggers the suggestor (when entered at the start of a line)", + input: { + value: settings.suggestors.edge_field.trigger, + cb: async (value) => { + if (!value) { + new import_obsidian15.Notice("Trigger string cannot be empty"); + return; + } + settings.suggestors.edge_field.trigger = value; + await plugin.saveSettings(); + } + } + }); +}; + +// src/settings/FreezeImpliedEdgesSettings.ts +var _add_settings_freeze_implied_edges = (plugin, contentEl) => { + const { settings } = plugin; + new_setting(contentEl, { + name: "Destination", + desc: "Where to write the frozen edges to", + select: { + options: ["frontmatter", "dataview-inline"], + value: settings.commands.freeze_implied_edges.default_options.destination, + cb: async (value) => { + settings.commands.freeze_implied_edges.default_options.destination = value; + await plugin.saveSettings(); + } + } + }); +}; + +// src/settings/GridSettings.ts +var import_obsidian17 = require("obsidian"); + +// src/menus/FieldGroupsSelector.ts +var import_obsidian16 = require("obsidian"); +var FieldGroupsSelectorMenu = ({ + cb, + value, + edge_field_groups +}) => { + const menu = new import_obsidian16.Menu(); + const checks = edge_field_groups.map( + (group) => value.includes(group.label) + ); + const all_checked = checks.every((check) => check); + menu.addItem( + (item) => item.setTitle(all_checked ? "None" : "All").onClick(() => { + value = all_checked ? [] : edge_field_groups.map((group) => group.label); + cb(value); + }) + ); + menu.addSeparator(); + edge_field_groups.forEach((group, group_i) => { + const checked = checks[group_i]; + menu.addItem( + (item) => item.setTitle(group.label).setChecked(checked).onClick(() => { + if (checked) { + value = value.filter((label) => label !== group.label); + } else { + value.push(group.label); + } + cb(value); + }) + ); + }); + return menu; +}; + +// src/components/selector/FieldGroupLabelsSelector.svelte +function create_fragment28(ctx) { + let button; + let groupicon; + let current; + let mounted; + let dispose; + groupicon = new group_default({ props: { size: ICON_SIZE } }); + return { + c() { + button = element("button"); + create_component(groupicon.$$.fragment); + attr( + button, + "class", + /*cls*/ + ctx[1] + ); + attr(button, "aria-label", "Choose edge field groups"); + }, + m(target, anchor) { + insert(target, button, anchor); + mount_component(groupicon, button, null); + current = true; + if (!mounted) { + dispose = listen( + button, + "click", + /*click_handler*/ + ctx[3] + ); + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (!current || dirty & /*cls*/ + 2) { + attr( + button, + "class", + /*cls*/ + ctx2[1] + ); + } + }, + i(local) { + if (current) + return; + transition_in(groupicon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(groupicon.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(button); + } + destroy_component(groupicon); + mounted = false; + dispose(); + } + }; +} +function instance28($$self, $$props, $$invalidate) { + let { cls = "" } = $$props; + let { field_group_labels } = $$props; + let { edge_field_groups } = $$props; + const click_handler = (e) => { + FieldGroupsSelectorMenu({ + edge_field_groups, + value: field_group_labels, + cb: (value) => $$invalidate(0, field_group_labels = value) + }).showAtMouseEvent(e); + }; + $$self.$$set = ($$props2) => { + if ("cls" in $$props2) + $$invalidate(1, cls = $$props2.cls); + if ("field_group_labels" in $$props2) + $$invalidate(0, field_group_labels = $$props2.field_group_labels); + if ("edge_field_groups" in $$props2) + $$invalidate(2, edge_field_groups = $$props2.edge_field_groups); + }; + return [field_group_labels, cls, edge_field_groups, click_handler]; +} +var FieldGroupLabelsSelector = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance28, create_fragment28, safe_not_equal, { + cls: 1, + field_group_labels: 0, + edge_field_groups: 2 + }); + } +}; +var FieldGroupLabelsSelector_default = FieldGroupLabelsSelector; + +// src/components/settings/SettingItem.svelte +function create_fragment29(ctx) { + let div4; + let div2; + let div0; + let t0; + let t1; + let div1; + let t2; + let t3; + let div3; + let current; + const default_slot_template = ( + /*#slots*/ + ctx[3].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[2], + null + ); + return { + c() { + div4 = element("div"); + div2 = element("div"); + div0 = element("div"); + t0 = text( + /*name*/ + ctx[0] + ); + t1 = space(); + div1 = element("div"); + t2 = text( + /*description*/ + ctx[1] + ); + t3 = space(); + div3 = element("div"); + if (default_slot) + default_slot.c(); + attr(div0, "class", "setting-item-name"); + attr(div1, "class", "setting-item-description"); + attr(div2, "class", "setting-item-info"); + attr(div3, "class", "setting-item-control"); + attr(div4, "class", "setting-item"); + }, + m(target, anchor) { + insert(target, div4, anchor); + append(div4, div2); + append(div2, div0); + append(div0, t0); + append(div2, t1); + append(div2, div1); + append(div1, t2); + append(div4, t3); + append(div4, div3); + if (default_slot) { + default_slot.m(div3, null); + } + current = true; + }, + p(ctx2, [dirty]) { + if (!current || dirty & /*name*/ + 1) + set_data( + t0, + /*name*/ + ctx2[0] + ); + if (!current || dirty & /*description*/ + 2) + set_data( + t2, + /*description*/ + ctx2[1] + ); + if (default_slot) { + if (default_slot.p && (!current || dirty & /*$$scope*/ + 4)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[2], + !current ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[2] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[2], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current) + return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div4); + } + if (default_slot) + default_slot.d(detaching); + } + }; +} +function instance29($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + let { name } = $$props; + let { description } = $$props; + $$self.$$set = ($$props2) => { + if ("name" in $$props2) + $$invalidate(0, name = $$props2.name); + if ("description" in $$props2) + $$invalidate(1, description = $$props2.description); + if ("$$scope" in $$props2) + $$invalidate(2, $$scope = $$props2.$$scope); + }; + return [name, description, $$scope, slots]; +} +var SettingItem = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance29, create_fragment29, safe_not_equal, { name: 0, description: 1 }); + } +}; +var SettingItem_default = SettingItem; + +// src/components/settings/FieldGroupLabelsSettingItem.svelte +function create_default_slot20(ctx) { + let fieldgrouplabelsselector; + let updating_field_group_labels; + let current; + function fieldgrouplabelsselector_field_group_labels_binding(value) { + ctx[4](value); + } + let fieldgrouplabelsselector_props = { + edge_field_groups: ( + /*edge_field_groups*/ + ctx[3] + ) + }; + if ( + /*field_group_labels*/ + ctx[0] !== void 0 + ) { + fieldgrouplabelsselector_props.field_group_labels = /*field_group_labels*/ + ctx[0]; + } + fieldgrouplabelsselector = new FieldGroupLabelsSelector_default({ props: fieldgrouplabelsselector_props }); + binding_callbacks.push(() => bind(fieldgrouplabelsselector, "field_group_labels", fieldgrouplabelsselector_field_group_labels_binding)); + return { + c() { + create_component(fieldgrouplabelsselector.$$.fragment); + }, + m(target, anchor) { + mount_component(fieldgrouplabelsselector, target, anchor); current = true; }, p(ctx2, dirty) { - if (dirty & /*lines, froms, min, max*/ - 15) - show_if = meetsConditions( - /*indent*/ - ctx2[17], - /*link*/ - ctx2[18], - /*froms*/ - ctx2[1], - /*min*/ - ctx2[2], - /*max*/ - ctx2[3] - ); - if (show_if) { - if (if_block) { - if_block.p(ctx2, dirty); - if (dirty & /*lines, froms, min, max*/ - 15) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block6(ctx2); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); + const fieldgrouplabelsselector_changes = {}; + if (dirty & /*edge_field_groups*/ + 8) + fieldgrouplabelsselector_changes.edge_field_groups = /*edge_field_groups*/ + ctx2[3]; + if (!updating_field_group_labels && dirty & /*field_group_labels*/ + 1) { + updating_field_group_labels = true; + fieldgrouplabelsselector_changes.field_group_labels = /*field_group_labels*/ + ctx2[0]; + add_flush_callback(() => updating_field_group_labels = false); + } + fieldgrouplabelsselector.$set(fieldgrouplabelsselector_changes); + }, + i(local) { + if (current) + return; + transition_in(fieldgrouplabelsselector.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(fieldgrouplabelsselector.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(fieldgrouplabelsselector, detaching); + } + }; +} +function create_fragment30(ctx) { + let settingitem; + let current; + settingitem = new SettingItem_default({ + props: { + name: ( + /*name*/ + ctx[1] + ), + description: ( + /*description*/ + ctx[2] + ), + $$slots: { default: [create_default_slot20] }, + $$scope: { ctx } + } + }); + return { + c() { + create_component(settingitem.$$.fragment); + }, + m(target, anchor) { + mount_component(settingitem, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const settingitem_changes = {}; + if (dirty & /*name*/ + 2) + settingitem_changes.name = /*name*/ + ctx2[1]; + if (dirty & /*description*/ + 4) + settingitem_changes.description = /*description*/ + ctx2[2]; + if (dirty & /*$$scope, edge_field_groups, field_group_labels*/ + 73) { + settingitem_changes.$$scope = { dirty, ctx: ctx2 }; + } + settingitem.$set(settingitem_changes); + }, + i(local) { + if (current) + return; + transition_in(settingitem.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(settingitem.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(settingitem, detaching); + } + }; +} +function instance30($$self, $$props, $$invalidate) { + let { name = "Field Groups" } = $$props; + let { description = "Select the field groups to use for this traversal." } = $$props; + let { field_group_labels } = $$props; + let { edge_field_groups } = $$props; + const dispatch = createEventDispatcher(); + function fieldgrouplabelsselector_field_group_labels_binding(value) { + field_group_labels = value; + $$invalidate(0, field_group_labels); + } + $$self.$$set = ($$props2) => { + if ("name" in $$props2) + $$invalidate(1, name = $$props2.name); + if ("description" in $$props2) + $$invalidate(2, description = $$props2.description); + if ("field_group_labels" in $$props2) + $$invalidate(0, field_group_labels = $$props2.field_group_labels); + if ("edge_field_groups" in $$props2) + $$invalidate(3, edge_field_groups = $$props2.edge_field_groups); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*field_group_labels*/ + 1) { + $: + if (field_group_labels) { + dispatch("select", field_group_labels); } - } else if (if_block) { + } + }; + return [ + field_group_labels, + name, + description, + edge_field_groups, + fieldgrouplabelsselector_field_group_labels_binding + ]; +} +var FieldGroupLabelsSettingItem = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance30, create_fragment30, safe_not_equal, { + name: 1, + description: 2, + field_group_labels: 0, + edge_field_groups: 3 + }); + } +}; +var FieldGroupLabelsSettingItem_default = FieldGroupLabelsSettingItem; + +// src/settings/GridSettings.ts +var _add_settings_trail_view = (plugin, containerEl) => { + new_setting(containerEl, { + name: "Enable trail view", + desc: "Show the trail view at the top of the page", + toggle: { + value: plugin.settings.views.page.trail.enabled, + cb: async (value) => { + plugin.settings.views.page.trail.enabled = value; + await Promise.all([plugin.saveSettings()]); + plugin.refresh({ rebuild_graph: false }); + } + } + }); + new_setting(containerEl, { + name: "Format", + desc: "Format of the trail view", + select: { + value: plugin.settings.views.page.trail.format, + options: ["grid", "path"], + cb: async (value) => { + plugin.settings.views.page.trail.format = value; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ rebuild_graph: false }) + ]); + } + } + }); + new_setting(containerEl, { + name: "Path Selection", + desc: "How to select the path(s) to display in the trail view", + select: { + value: plugin.settings.views.page.trail.selection, + options: ["all", "shortest", "longest"], + cb: async (value) => { + plugin.settings.views.page.trail.selection = value; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ rebuild_graph: false }) + ]); + } + } + }); + new_setting(containerEl, { + name: "Default depth", + desc: "Default depth of the trail view", + input: { + value: plugin.settings.views.page.trail.default_depth.toString(), + cb: async (value) => { + const int2 = parseInt(value); + if (isNaN(int2)) { + return new import_obsidian17.Notice("Depth must be a number"); + } else if (int2 < 0) { + return new import_obsidian17.Notice("Depth must be a non-negative number"); + } + plugin.settings.views.page.trail.default_depth = int2; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ rebuild_graph: false }) + ]); + } + } + }); + new FieldGroupLabelsSettingItem_default({ + target: containerEl, + props: { + edge_field_groups: plugin.settings.edge_field_groups, + field_group_labels: plugin.settings.views.page.trail.field_group_labels + } + }).$on("select", async (e) => { + plugin.settings.views.page.trail.field_group_labels = e.detail; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ rebuild_graph: false }) + ]); + }); + new_setting(containerEl, { + name: "Merge Fields", + desc: "Merge fields in the traversal, instead of keeping their paths separate", + toggle: { + value: plugin.settings.views.page.trail.merge_fields, + cb: async (value) => { + plugin.settings.views.page.trail.merge_fields = value; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ rebuild_graph: false }) + ]); + } + } + }); + new_setting(containerEl, { + name: "Show controls", + desc: "Show controls to change the depth/format/path-selection of the trail view", + toggle: { + value: plugin.settings.views.page.trail.show_controls, + cb: async (value) => { + plugin.settings.views.page.trail.show_controls = value; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ rebuild_graph: false }) + ]); + } + } + }); + new_setting(containerEl, { + name: "No path message", + desc: "Message to display when there is no path to display. Leave blank to hide the trail view when there is no path.", + input: { + value: plugin.settings.views.page.trail.no_path_message, + cb: async (value) => { + plugin.settings.views.page.trail.no_path_message = value; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ rebuild_graph: false }) + ]); + } + } + }); + _add_settings_show_node_options(plugin, containerEl, { + get: () => plugin.settings.views.page.trail.show_node_options, + set: (value) => plugin.settings.views.page.trail.show_node_options = value + }); +}; + +// src/settings/JohnnyDecimalSettings.ts +var import_obsidian18 = require("obsidian"); +var _add_settings_johnny_decimal_note = (plugin, containerEl) => { + new_setting(containerEl, { + name: "Enabled", + desc: "Look for Johnny Decimal notes to use as edge sources", + toggle: { + value: plugin.settings.explicit_edge_sources.johnny_decimal_note.enabled, + cb: async (value) => { + plugin.settings.explicit_edge_sources.johnny_decimal_note.enabled = value; + await Promise.all([plugin.refresh(), plugin.saveSettings()]); + } + } + }); + new_setting(containerEl, { + name: "Delimiter", + desc: "Delimiter to use to split the note name", + input: { + value: plugin.settings.explicit_edge_sources.johnny_decimal_note.delimiter, + cb: async (value) => { + if (!value) + new import_obsidian18.Notice("Delimiter cannot be empty"); + else { + plugin.settings.explicit_edge_sources.johnny_decimal_note.delimiter = value; + await Promise.all([ + plugin.refresh(), + plugin.saveSettings() + ]); + } + } + } + }); + new_setting(containerEl, { + name: "Default Field", + desc: "Field to use to point to next note in the Johnny Decimal system", + select: { + value: plugin.settings.explicit_edge_sources.johnny_decimal_note.default_field, + options: plugin.settings.edge_fields.map((f) => f.label), + cb: async (value) => { + plugin.settings.explicit_edge_sources.johnny_decimal_note.default_field = value; + await Promise.all([plugin.refresh(), plugin.saveSettings()]); + } + } + }); +}; + +// src/menus/EdgeSortIdMenu.ts +var import_obsidian19 = require("obsidian"); +var ORDERS = [1, -1]; +var EdgeSortIdMenu = ({ + cb, + value, + exclude_fields +}) => { + const menu = new import_obsidian19.Menu(); + ORDERS.forEach((order) => { + menu.addItem( + (item) => item.setTitle(`Order: ${order === 1 ? "asc" : "desc"}`).setChecked(value.order === order).onClick(() => { + value.order = order; + cb(value); + }) + ); + }); + menu.addSeparator(); + SIMPLE_EDGE_SORT_FIELDS.filter((f) => !(exclude_fields == null ? void 0 : exclude_fields.includes(f))).forEach( + (field) => { + menu.addItem( + (item) => item.setTitle("Field: " + field).setChecked(value.field === field).onClick(() => { + value.field = field; + cb(value); + }) + ); + } + ); + return menu; +}; + +// src/components/selector/EdgeSortIdSelector.svelte +function create_else_block4(ctx) { + let arrowdownwidenarrow; + let current; + arrowdownwidenarrow = new arrow_down_wide_narrow_default({ props: { size: ICON_SIZE } }); + return { + c() { + create_component(arrowdownwidenarrow.$$.fragment); + }, + m(target, anchor) { + mount_component(arrowdownwidenarrow, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(arrowdownwidenarrow.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(arrowdownwidenarrow.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(arrowdownwidenarrow, detaching); + } + }; +} +function create_if_block5(ctx) { + let arrowupnarrowwide; + let current; + arrowupnarrowwide = new arrow_up_narrow_wide_default({ props: { size: ICON_SIZE } }); + return { + c() { + create_component(arrowupnarrowwide.$$.fragment); + }, + m(target, anchor) { + mount_component(arrowupnarrowwide, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(arrowupnarrowwide.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(arrowupnarrowwide.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(arrowupnarrowwide, detaching); + } + }; +} +function create_fragment31(ctx) { + let button; + let current_block_type_index; + let if_block; + let button_class_value; + let current; + let mounted; + let dispose; + const if_block_creators = [create_if_block5, create_else_block4]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*edge_sort_id*/ + ctx2[0].order === 1 + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + button = element("button"); + if_block.c(); + attr(button, "class", button_class_value = "flex gap-1 " + /*cls*/ + ctx[2]); + attr(button, "aria-label", "Change sort field/order"); + }, + m(target, anchor) { + insert(target, button, anchor); + if_blocks[current_block_type_index].m(button, null); + current = true; + if (!mounted) { + dispose = listen( + button, + "click", + /*click_handler*/ + ctx[3] + ); + mounted = true; + } + }, + p(ctx2, [dirty]) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index !== previous_block_index) { group_outros(); - transition_out(if_block, 1, 1, () => { - if_block = null; + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; }); check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + } + transition_in(if_block, 1); + if_block.m(button, null); + } + if (!current || dirty & /*cls*/ + 4 && button_class_value !== (button_class_value = "flex gap-1 " + /*cls*/ + ctx2[2])) { + attr(button, "class", button_class_value); } }, i(local) { @@ -24161,47 +32156,1720 @@ function create_each_block5(ctx) { current = false; }, d(detaching) { - if (if_block) - if_block.d(detaching); - if (detaching) - detach(if_block_anchor); + if (detaching) { + detach(button); + } + if_blocks[current_block_type_index].d(); + mounted = false; + dispose(); } }; } -function create_fragment10(ctx) { - let t; - let div; +function instance31($$self, $$props, $$invalidate) { + let { edge_sort_id } = $$props; + let { exclude_fields = [] } = $$props; + let { cls = "" } = $$props; + const click_handler = (e) => { + EdgeSortIdMenu({ + exclude_fields, + value: edge_sort_id, + cb: (value) => $$invalidate(0, edge_sort_id = value) + }).showAtMouseEvent(e); + }; + $$self.$$set = ($$props2) => { + if ("edge_sort_id" in $$props2) + $$invalidate(0, edge_sort_id = $$props2.edge_sort_id); + if ("exclude_fields" in $$props2) + $$invalidate(1, exclude_fields = $$props2.exclude_fields); + if ("cls" in $$props2) + $$invalidate(2, cls = $$props2.cls); + }; + return [edge_sort_id, exclude_fields, cls, click_handler]; +} +var EdgeSortIdSelector = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance31, create_fragment31, safe_not_equal, { + edge_sort_id: 0, + exclude_fields: 1, + cls: 2 + }); + } +}; +var EdgeSortIdSelector_default = EdgeSortIdSelector; + +// src/components/settings/EdgeSortIdSettingItem.svelte +function create_default_slot21(ctx) { + let edgesortidselector; + let updating_edge_sort_id; let current; - let if_block = ( - /*title*/ - ctx[6] !== false && create_if_block_24(ctx) + function edgesortidselector_edge_sort_id_binding(value) { + ctx[1](value); + } + let edgesortidselector_props = {}; + if ( + /*edge_sort_id*/ + ctx[0] !== void 0 + ) { + edgesortidselector_props.edge_sort_id = /*edge_sort_id*/ + ctx[0]; + } + edgesortidselector = new EdgeSortIdSelector_default({ props: edgesortidselector_props }); + binding_callbacks.push(() => bind(edgesortidselector, "edge_sort_id", edgesortidselector_edge_sort_id_binding)); + return { + c() { + create_component(edgesortidselector.$$.fragment); + }, + m(target, anchor) { + mount_component(edgesortidselector, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const edgesortidselector_changes = {}; + if (!updating_edge_sort_id && dirty & /*edge_sort_id*/ + 1) { + updating_edge_sort_id = true; + edgesortidselector_changes.edge_sort_id = /*edge_sort_id*/ + ctx2[0]; + add_flush_callback(() => updating_edge_sort_id = false); + } + edgesortidselector.$set(edgesortidselector_changes); + }, + i(local) { + if (current) + return; + transition_in(edgesortidselector.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(edgesortidselector.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(edgesortidselector, detaching); + } + }; +} +function create_fragment32(ctx) { + let settingitem; + let current; + settingitem = new SettingItem_default({ + props: { + name: "Edge Sort", + description: "Select the sorting method for the edges in the graph.", + $$slots: { default: [create_default_slot21] }, + $$scope: { ctx } + } + }); + return { + c() { + create_component(settingitem.$$.fragment); + }, + m(target, anchor) { + mount_component(settingitem, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const settingitem_changes = {}; + if (dirty & /*$$scope, edge_sort_id*/ + 9) { + settingitem_changes.$$scope = { dirty, ctx: ctx2 }; + } + settingitem.$set(settingitem_changes); + }, + i(local) { + if (current) + return; + transition_in(settingitem.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(settingitem.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(settingitem, detaching); + } + }; +} +function instance32($$self, $$props, $$invalidate) { + let { edge_sort_id } = $$props; + const dispatch = createEventDispatcher(); + function edgesortidselector_edge_sort_id_binding(value) { + edge_sort_id = value; + $$invalidate(0, edge_sort_id); + } + $$self.$$set = ($$props2) => { + if ("edge_sort_id" in $$props2) + $$invalidate(0, edge_sort_id = $$props2.edge_sort_id); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*edge_sort_id*/ + 1) { + $: + if (edge_sort_id) { + dispatch("select", edge_sort_id); + } + } + }; + return [edge_sort_id, edgesortidselector_edge_sort_id_binding]; +} +var EdgeSortIdSettingItem = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance32, create_fragment32, safe_not_equal, { edge_sort_id: 0 }); + } +}; +var EdgeSortIdSettingItem_default = EdgeSortIdSettingItem; + +// src/menus/ShowAttributesMenu.ts +var import_obsidian20 = require("obsidian"); +var ShowAttributesSelectorMenu = ({ + cb, + value, + exclude_attributes +}) => { + const menu = new import_obsidian20.Menu(); + const possible = EDGE_ATTRIBUTES.filter( + (attr2) => !(exclude_attributes == null ? void 0 : exclude_attributes.includes(attr2)) ); - let each_value = ( - /*lines*/ - ctx[0] + const all = possible.length === value.length; + menu.addItem( + (item) => item.setTitle(all ? "None" : "All").onClick(() => { + cb(all ? [] : possible); + }) + ); + menu.addSeparator(); + const add_item = (attr2) => { + const included = value.includes(attr2); + menu.addItem( + (item) => item.setTitle(attr2).setChecked(included).onClick(() => { + if (included) { + cb(value.filter((v) => v !== attr2)); + } else { + cb([...value, attr2]); + } + }) + ); + }; + ["field", "explicit"].filter((attr2) => !(exclude_attributes == null ? void 0 : exclude_attributes.includes(attr2))).forEach(add_item); + menu.addSeparator(); + ["source"].filter((attr2) => !(exclude_attributes == null ? void 0 : exclude_attributes.includes(attr2))).forEach(add_item); + menu.addSeparator(); + ["implied_kind", "round"].filter((attr2) => !(exclude_attributes == null ? void 0 : exclude_attributes.includes(attr2))).forEach(add_item); + return menu; +}; + +// src/components/selector/ShowAttributesSelectorMenu.svelte +function create_fragment33(ctx) { + let button; + let filejson; + let current; + let mounted; + let dispose; + filejson = new file_json_default({ props: { size: ICON_SIZE } }); + return { + c() { + button = element("button"); + create_component(filejson.$$.fragment); + attr( + button, + "class", + /*cls*/ + ctx[2] + ); + attr(button, "aria-label", "Change which edge attributes show"); + }, + m(target, anchor) { + insert(target, button, anchor); + mount_component(filejson, button, null); + current = true; + if (!mounted) { + dispose = listen( + button, + "click", + /*click_handler*/ + ctx[3] + ); + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (!current || dirty & /*cls*/ + 4) { + attr( + button, + "class", + /*cls*/ + ctx2[2] + ); + } + }, + i(local) { + if (current) + return; + transition_in(filejson.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(filejson.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(button); + } + destroy_component(filejson); + mounted = false; + dispose(); + } + }; +} +function instance33($$self, $$props, $$invalidate) { + let { show_attributes } = $$props; + let { exclude_attributes = [] } = $$props; + let { cls = "" } = $$props; + if (exclude_attributes === null || exclude_attributes === void 0 ? void 0 : exclude_attributes.length) { + show_attributes = show_attributes.filter((v) => !(exclude_attributes === null || exclude_attributes === void 0 ? void 0 : exclude_attributes.includes(v))); + } + const click_handler = (e) => { + ShowAttributesSelectorMenu({ + exclude_attributes, + value: show_attributes, + cb: (value) => $$invalidate(0, show_attributes = value) + }).showAtMouseEvent(e); + }; + $$self.$$set = ($$props2) => { + if ("show_attributes" in $$props2) + $$invalidate(0, show_attributes = $$props2.show_attributes); + if ("exclude_attributes" in $$props2) + $$invalidate(1, exclude_attributes = $$props2.exclude_attributes); + if ("cls" in $$props2) + $$invalidate(2, cls = $$props2.cls); + }; + return [show_attributes, exclude_attributes, cls, click_handler]; +} +var ShowAttributesSelectorMenu_1 = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance33, create_fragment33, safe_not_equal, { + show_attributes: 0, + exclude_attributes: 1, + cls: 2 + }); + } +}; +var ShowAttributesSelectorMenu_default = ShowAttributesSelectorMenu_1; + +// src/components/settings/ShowAttributesSettingItem.svelte +function create_default_slot22(ctx) { + let showattributesselectormenu; + let updating_show_attributes; + let current; + function showattributesselectormenu_show_attributes_binding(value) { + ctx[2](value); + } + let showattributesselectormenu_props = { + exclude_attributes: ( + /*exclude_attributes*/ + ctx[1] + ) + }; + if ( + /*show_attributes*/ + ctx[0] !== void 0 + ) { + showattributesselectormenu_props.show_attributes = /*show_attributes*/ + ctx[0]; + } + showattributesselectormenu = new ShowAttributesSelectorMenu_default({ props: showattributesselectormenu_props }); + binding_callbacks.push(() => bind(showattributesselectormenu, "show_attributes", showattributesselectormenu_show_attributes_binding)); + return { + c() { + create_component(showattributesselectormenu.$$.fragment); + }, + m(target, anchor) { + mount_component(showattributesselectormenu, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const showattributesselectormenu_changes = {}; + if (dirty & /*exclude_attributes*/ + 2) + showattributesselectormenu_changes.exclude_attributes = /*exclude_attributes*/ + ctx2[1]; + if (!updating_show_attributes && dirty & /*show_attributes*/ + 1) { + updating_show_attributes = true; + showattributesselectormenu_changes.show_attributes = /*show_attributes*/ + ctx2[0]; + add_flush_callback(() => updating_show_attributes = false); + } + showattributesselectormenu.$set(showattributesselectormenu_changes); + }, + i(local) { + if (current) + return; + transition_in(showattributesselectormenu.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(showattributesselectormenu.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(showattributesselectormenu, detaching); + } + }; +} +function create_fragment34(ctx) { + let settingitem; + let current; + settingitem = new SettingItem_default({ + props: { + name: "Show Attributes", + description: "Select the edge attributes to show.", + $$slots: { default: [create_default_slot22] }, + $$scope: { ctx } + } + }); + return { + c() { + create_component(settingitem.$$.fragment); + }, + m(target, anchor) { + mount_component(settingitem, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const settingitem_changes = {}; + if (dirty & /*$$scope, exclude_attributes, show_attributes*/ + 19) { + settingitem_changes.$$scope = { dirty, ctx: ctx2 }; + } + settingitem.$set(settingitem_changes); + }, + i(local) { + if (current) + return; + transition_in(settingitem.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(settingitem.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(settingitem, detaching); + } + }; +} +function instance34($$self, $$props, $$invalidate) { + let { show_attributes } = $$props; + let { exclude_attributes = [] } = $$props; + const dispatch = createEventDispatcher(); + function showattributesselectormenu_show_attributes_binding(value) { + show_attributes = value; + $$invalidate(0, show_attributes); + } + $$self.$$set = ($$props2) => { + if ("show_attributes" in $$props2) + $$invalidate(0, show_attributes = $$props2.show_attributes); + if ("exclude_attributes" in $$props2) + $$invalidate(1, exclude_attributes = $$props2.exclude_attributes); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*show_attributes*/ + 1) { + $: + if (show_attributes) { + dispatch("select", show_attributes); + } + } + }; + return [ + show_attributes, + exclude_attributes, + showattributesselectormenu_show_attributes_binding + ]; +} +var ShowAttributesSettingItem = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance34, create_fragment34, safe_not_equal, { + show_attributes: 0, + exclude_attributes: 1 + }); + } +}; +var ShowAttributesSettingItem_default = ShowAttributesSettingItem; + +// src/const/links.ts +var LINK_KINDS = ["none", "wiki", "markdown"]; + +// src/settings/ListIndexSettings.ts +var _add_settings_list_index = (plugin, contentEl) => { + const { settings } = plugin; + new FieldGroupLabelsSettingItem_default({ + target: contentEl, + props: { + edge_field_groups: plugin.settings.edge_field_groups, + field_group_labels: settings.commands.list_index.default_options.field_group_labels + } + }).$on("select", async (e) => { + settings.commands.list_index.default_options.field_group_labels = e.detail; + settings.commands.list_index.default_options.fields = resolve_field_group_labels( + plugin.settings.edge_field_groups, + settings.commands.list_index.default_options.field_group_labels + ); + await plugin.saveSettings(); + }); + new_setting(contentEl, { + name: "Link Kind", + desc: "Format to use for links", + select: { + options: LINK_KINDS, + value: settings.commands.list_index.default_options.link_kind, + cb: async (value) => { + settings.commands.list_index.default_options.link_kind = value; + await plugin.saveSettings(); + } + } + }); + new_setting(contentEl, { + name: "Indent", + desc: "Indentation to use for each level", + input: { + value: settings.commands.list_index.default_options.indent, + cb: async (value) => { + settings.commands.list_index.default_options.indent = value; + await plugin.saveSettings(); + } + } + }); + new EdgeSortIdSettingItem_default({ + target: contentEl, + props: { + edge_sort_id: settings.commands.list_index.default_options.edge_sort_id + } + }).$on("select", async (e) => { + settings.commands.list_index.default_options.edge_sort_id = e.detail; + await plugin.saveSettings(); + }); + new ShowAttributesSettingItem_default({ + target: contentEl, + props: { + show_attributes: settings.commands.list_index.default_options.show_attributes + } + }).$on("select", async (e) => { + settings.commands.list_index.default_options.show_attributes = e.detail; + await plugin.saveSettings(); + }); + _add_settings_show_node_options(plugin, contentEl, { + get: () => settings.commands.list_index.default_options.show_node_options, + set: (value) => settings.commands.list_index.default_options.show_node_options = value + }); +}; + +// src/settings/ListNoteSettings.ts +var _add_settings_list_note = (plugin, containerEl) => { + new_setting(containerEl, { + name: "Default Neighbour Field", + desc: "Field to use to join neighbouring list items.", + select: { + value: plugin.settings.explicit_edge_sources.list_note.default_neighbour_field, + options: [""].concat( + plugin.settings.edge_fields.map((f) => f.label) + ), + cb: async (value) => { + plugin.settings.explicit_edge_sources.list_note.default_neighbour_field = value; + await Promise.all([plugin.refresh(), plugin.saveSettings()]); + } + } + }); +}; + +// src/settings/MatrixSettings.ts +var _add_settings_matrix = (plugin, containerEl) => { + new_setting(containerEl, { + name: "Collapse", + desc: "Collapse the matrix by default", + toggle: { + value: plugin.settings.views.side.matrix.collapse, + cb: async (checked) => { + plugin.settings.views.side.matrix.collapse = checked; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ + redraw_side_views: true, + rebuild_graph: false + }) + ]); + } + } + }); + new EdgeSortIdSettingItem_default({ + target: containerEl, + props: { edge_sort_id: plugin.settings.views.side.matrix.edge_sort_id } + }).$on("select", async (e) => { + plugin.settings.views.side.matrix.edge_sort_id = e.detail; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ redraw_side_views: true, rebuild_graph: false }) + ]); + }); + new ShowAttributesSettingItem_default({ + target: containerEl, + props: { + exclude_attributes: ["field", "explicit"], + show_attributes: plugin.settings.views.side.matrix.show_attributes + } + }).$on("select", async (e) => { + plugin.settings.views.side.matrix.show_attributes = e.detail; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ redraw_side_views: true, rebuild_graph: false }) + ]); + }); + new FieldGroupLabelsSettingItem_default({ + target: containerEl, + props: { + edge_field_groups: plugin.settings.edge_field_groups, + field_group_labels: plugin.settings.views.side.matrix.field_group_labels + } + }).$on("select", async (e) => { + plugin.settings.views.side.matrix.field_group_labels = e.detail; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ redraw_side_views: true, rebuild_graph: false }) + ]); + }); + _add_settings_show_node_options(plugin, containerEl, { + get: () => plugin.settings.views.side.matrix.show_node_options, + set: (value) => plugin.settings.views.side.matrix.show_node_options = value + }); +}; + +// src/views/page.ts +var import_obsidian22 = require("obsidian"); + +// src/components/ObsidianLink.svelte +var import_obsidian21 = require("obsidian"); +function create_fragment35(ctx) { + let span; + let t; + let span_class_value; + let span_aria_label_value; + let mounted; + let dispose; + return { + c() { + var _a; + span = element("span"); + t = text( + /*display*/ + ctx[1] + ); + attr(span, "role", "link"); + attr(span, "class", span_class_value = "internal-link cursor-pointer " + /*cls*/ + ctx[4]); + attr( + span, + "data-href", + /*path*/ + ctx[0] + ); + attr(span, "aria-label", span_aria_label_value = /*no_ext*/ + ctx[6] === /*display*/ + ctx[1] ? "" : ( + /*path*/ + ctx[0] + )); + toggle_class(span, "is-unresolved", !/*resolved*/ + ctx[2]); + toggle_class( + span, + "BC-active-note", + /*$active_file_store*/ + ((_a = ctx[5]) == null ? void 0 : _a.path) === /*path*/ + ctx[0] + ); + }, + m(target, anchor) { + insert(target, span, anchor); + append(span, t); + if (!mounted) { + dispose = [ + listen( + span, + "mouseover", + /*mouseover_handler*/ + ctx[7] + ), + listen( + span, + "contextmenu", + /*contextmenu_handler*/ + ctx[8] + ), + listen( + span, + "auxclick", + /*auxclick_handler*/ + ctx[9] + ), + listen( + span, + "click", + /*click_handler*/ + ctx[10] + ) + ]; + mounted = true; + } + }, + p(ctx2, [dirty]) { + var _a; + if (dirty & /*display*/ + 2) + set_data( + t, + /*display*/ + ctx2[1] + ); + if (dirty & /*cls*/ + 16 && span_class_value !== (span_class_value = "internal-link cursor-pointer " + /*cls*/ + ctx2[4])) { + attr(span, "class", span_class_value); + } + if (dirty & /*path*/ + 1) { + attr( + span, + "data-href", + /*path*/ + ctx2[0] + ); + } + if (dirty & /*display, path*/ + 3 && span_aria_label_value !== (span_aria_label_value = /*no_ext*/ + ctx2[6] === /*display*/ + ctx2[1] ? "" : ( + /*path*/ + ctx2[0] + ))) { + attr(span, "aria-label", span_aria_label_value); + } + if (dirty & /*cls, resolved*/ + 20) { + toggle_class(span, "is-unresolved", !/*resolved*/ + ctx2[2]); + } + if (dirty & /*cls, $active_file_store, path*/ + 49) { + toggle_class( + span, + "BC-active-note", + /*$active_file_store*/ + ((_a = ctx2[5]) == null ? void 0 : _a.path) === /*path*/ + ctx2[0] + ); + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(span); + } + mounted = false; + run_all(dispose); + } + }; +} +function instance35($$self, $$props, $$invalidate) { + let $active_file_store; + component_subscribe($$self, active_file_store, ($$value) => $$invalidate(5, $active_file_store = $$value)); + let { path } = $$props; + let { display } = $$props; + let { resolved } = $$props; + let { plugin } = $$props; + let { cls = "" } = $$props; + const no_ext = Paths.drop_ext(path); + const mouseover_handler = (event) => { + plugin.app.workspace.trigger("hover-link", { + event, + linktext: path, + // Must match `plugin.registerHoverSource` source (in `main.ts`) + source: "breadcrumbs", + targetEl: event.currentTarget, + hoverParent: event.currentTarget.parentElement + }); + }; + const contextmenu_handler = (e) => { + const menu = new import_obsidian21.Menu(); + plugin.app.workspace.handleLinkContextMenu(menu, display, path); + menu.showAtMouseEvent(e); + }; + const auxclick_handler = (e) => { + log.debug("on:auxclick e.button", e.button); + if (e.button === 1) { + plugin.app.workspace.openLinkText(path, "", "tab"); + } + }; + const click_handler = (e) => { + plugin.app.workspace.openLinkText(path, "", import_obsidian21.Keymap.isModEvent(e)); + }; + $$self.$$set = ($$props2) => { + if ("path" in $$props2) + $$invalidate(0, path = $$props2.path); + if ("display" in $$props2) + $$invalidate(1, display = $$props2.display); + if ("resolved" in $$props2) + $$invalidate(2, resolved = $$props2.resolved); + if ("plugin" in $$props2) + $$invalidate(3, plugin = $$props2.plugin); + if ("cls" in $$props2) + $$invalidate(4, cls = $$props2.cls); + }; + return [ + path, + display, + resolved, + plugin, + cls, + $active_file_store, + no_ext, + mouseover_handler, + contextmenu_handler, + auxclick_handler, + click_handler + ]; +} +var ObsidianLink = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance35, create_fragment35, safe_not_equal, { + path: 0, + display: 1, + resolved: 2, + plugin: 3, + cls: 4 + }); + } +}; +var ObsidianLink_default = ObsidianLink; + +// src/components/EdgeLink.svelte +function create_fragment36(ctx) { + let obsidianlink; + let current; + obsidianlink = new ObsidianLink_default({ + props: { + plugin: ( + /*plugin*/ + ctx[1] + ), + display: ( + /*display*/ + ctx[3] + ), + path: ( + /*edge*/ + ctx[0].target_id + ), + resolved: ( + /*edge*/ + ctx[0].target_attr.resolved + ), + cls: ( + /*cls*/ + ctx[2] + " BC-edge " + /*edge*/ + (ctx[0].attr.explicit ? "BC-edge-explicit" : `BC-edge-implied BC-edge-implied-${/*edge*/ + ctx[0].attr.implied_kind}`) + ) + } + }); + return { + c() { + create_component(obsidianlink.$$.fragment); + }, + m(target, anchor) { + mount_component(obsidianlink, target, anchor); + current = true; + }, + p(ctx2, [dirty]) { + const obsidianlink_changes = {}; + if (dirty & /*plugin*/ + 2) + obsidianlink_changes.plugin = /*plugin*/ + ctx2[1]; + if (dirty & /*edge*/ + 1) + obsidianlink_changes.path = /*edge*/ + ctx2[0].target_id; + if (dirty & /*edge*/ + 1) + obsidianlink_changes.resolved = /*edge*/ + ctx2[0].target_attr.resolved; + if (dirty & /*cls, edge*/ + 5) + obsidianlink_changes.cls = /*cls*/ + ctx2[2] + " BC-edge " + /*edge*/ + (ctx2[0].attr.explicit ? "BC-edge-explicit" : `BC-edge-implied BC-edge-implied-${/*edge*/ + ctx2[0].attr.implied_kind}`); + obsidianlink.$set(obsidianlink_changes); + }, + i(local) { + if (current) + return; + transition_in(obsidianlink.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(obsidianlink.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(obsidianlink, detaching); + } + }; +} +function instance36($$self, $$props, $$invalidate) { + let { edge } = $$props; + let { plugin } = $$props; + let { show_node_options } = $$props; + let { cls = "" } = $$props; + const { dendron_note } = plugin.settings.explicit_edge_sources; + const display = stringify_node(edge.target_id, edge.target_attr, { + show_node_options, + trim_basename_delimiter: dendron_note.enabled && dendron_note.display_trimmed ? dendron_note.delimiter : void 0 + }); + $$self.$$set = ($$props2) => { + if ("edge" in $$props2) + $$invalidate(0, edge = $$props2.edge); + if ("plugin" in $$props2) + $$invalidate(1, plugin = $$props2.plugin); + if ("show_node_options" in $$props2) + $$invalidate(4, show_node_options = $$props2.show_node_options); + if ("cls" in $$props2) + $$invalidate(2, cls = $$props2.cls); + }; + return [edge, plugin, cls, display, show_node_options]; +} +var EdgeLink = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance36, create_fragment36, safe_not_equal, { + edge: 0, + plugin: 1, + show_node_options: 4, + cls: 2 + }); + } +}; +var EdgeLink_default = EdgeLink; + +// src/components/page_views/PrevNextView.svelte +function add_css2(target) { + append_styles(target, "svelte-deyewb", ".BC-prev-next-view.svelte-deyewb>div.svelte-deyewb{border:1px solid var(--background-modifier-border)}"); +} +function get_each_context5(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[7] = list[i]; + return child_ctx; +} +function get_each_context_13(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[7] = list[i]; + return child_ctx; +} +function create_if_block6(ctx) { + var _a, _b, _c, _d; + let div0; + let t; + let div1; + let current; + let each_value_1 = ensure_array_like( + /*grouped_out_edges*/ + (_b = (_a = ctx[2]) == null ? void 0 : _a.prev) != null ? _b : [] + ); + let each_blocks_1 = []; + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks_1[i] = create_each_block_13(get_each_context_13(ctx, each_value_1, i)); + } + const out = (i) => transition_out(each_blocks_1[i], 1, 1, () => { + each_blocks_1[i] = null; + }); + let each_value = ensure_array_like( + /*grouped_out_edges*/ + (_d = (_c = ctx[2]) == null ? void 0 : _c.next) != null ? _d : [] ); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { each_blocks[i] = create_each_block5(get_each_context5(ctx, each_value, i)); } + const out_1 = (i) => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + return { + c() { + div0 = element("div"); + for (let i = 0; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].c(); + } + t = space(); + div1 = element("div"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + attr(div0, "class", "flex w-full flex-col svelte-deyewb"); + set_style(div0, "border-radius", "var(--radius-m) 0 0 var(--radius-m)"); + attr(div1, "class", "flex w-full flex-col svelte-deyewb"); + set_style(div1, "border-radius", "0 var(--radius-m) var(--radius-m) 0"); + }, + m(target, anchor) { + insert(target, div0, anchor); + for (let i = 0; i < each_blocks_1.length; i += 1) { + if (each_blocks_1[i]) { + each_blocks_1[i].m(div0, null); + } + } + insert(target, t, anchor); + insert(target, div1, anchor); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div1, null); + } + } + current = true; + }, + p(ctx2, dirty) { + var _a2, _b2, _c2, _d2; + if (dirty & /*grouped_out_edges, plugin, show_node_options*/ + 7) { + each_value_1 = ensure_array_like( + /*grouped_out_edges*/ + (_b2 = (_a2 = ctx2[2]) == null ? void 0 : _a2.prev) != null ? _b2 : [] + ); + let i; + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_13(ctx2, each_value_1, i); + if (each_blocks_1[i]) { + each_blocks_1[i].p(child_ctx, dirty); + transition_in(each_blocks_1[i], 1); + } else { + each_blocks_1[i] = create_each_block_13(child_ctx); + each_blocks_1[i].c(); + transition_in(each_blocks_1[i], 1); + each_blocks_1[i].m(div0, null); + } + } + group_outros(); + for (i = each_value_1.length; i < each_blocks_1.length; i += 1) { + out(i); + } + check_outros(); + } + if (dirty & /*grouped_out_edges, plugin, show_node_options*/ + 7) { + each_value = ensure_array_like( + /*grouped_out_edges*/ + (_d2 = (_c2 = ctx2[2]) == null ? void 0 : _c2.next) != null ? _d2 : [] + ); + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context5(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block5(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(div1, null); + } + } + group_outros(); + for (i = each_value.length; i < each_blocks.length; i += 1) { + out_1(i); + } + check_outros(); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value_1.length; i += 1) { + transition_in(each_blocks_1[i]); + } + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + each_blocks_1 = each_blocks_1.filter(Boolean); + for (let i = 0; i < each_blocks_1.length; i += 1) { + transition_out(each_blocks_1[i]); + } + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(div0); + detach(t); + detach(div1); + } + destroy_each(each_blocks_1, detaching); + destroy_each(each_blocks, detaching); + } + }; +} +function create_each_block_13(ctx) { + let div; + let span; + let t1; + let edgelink; + let t2; + let current; + edgelink = new EdgeLink_default({ + props: { + cls: "grow", + edge: ( + /*edge*/ + ctx[7] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + show_node_options: ( + /*show_node_options*/ + ctx[1] + ) + } + }); + return { + c() { + div = element("div"); + span = element("span"); + span.textContent = `${/*edge*/ + ctx[7].attr.field}`; + t1 = space(); + create_component(edgelink.$$.fragment); + t2 = space(); + attr(span, "class", "BC-field pl-2"); + attr(div, "class", "BC-next-prev-item flex gap-3 p-1 text-left"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, span); + append(div, t1); + mount_component(edgelink, div, null); + append(div, t2); + current = true; + }, + p(ctx2, dirty) { + const edgelink_changes = {}; + if (dirty & /*plugin*/ + 1) + edgelink_changes.plugin = /*plugin*/ + ctx2[0]; + edgelink.$set(edgelink_changes); + }, + i(local) { + if (current) + return; + transition_in(edgelink.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(edgelink.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_component(edgelink); + } + }; +} +function create_each_block5(ctx) { + let div; + let edgelink; + let t0; + let span; + let t2; + let current; + edgelink = new EdgeLink_default({ + props: { + cls: "grow", + edge: ( + /*edge*/ + ctx[7] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + show_node_options: ( + /*show_node_options*/ + ctx[1] + ) + } + }); + return { + c() { + div = element("div"); + create_component(edgelink.$$.fragment); + t0 = space(); + span = element("span"); + span.textContent = `${/*edge*/ + ctx[7].attr.field}`; + t2 = space(); + attr(span, "class", "BC-field pr-2"); + attr(div, "class", "BC-next-prev-item flex gap-3 p-1 text-right"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(edgelink, div, null); + append(div, t0); + append(div, span); + append(div, t2); + current = true; + }, + p(ctx2, dirty) { + const edgelink_changes = {}; + if (dirty & /*plugin*/ + 1) + edgelink_changes.plugin = /*plugin*/ + ctx2[0]; + edgelink.$set(edgelink_changes); + }, + i(local) { + if (current) + return; + transition_in(edgelink.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(edgelink.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_component(edgelink); + } + }; +} +function create_fragment37(ctx) { + var _a, _b, _c, _d; + let div; + let current; + let if_block = ( + /*grouped_out_edges*/ + (((_b = (_a = ctx[2]) == null ? void 0 : _a.prev) == null ? void 0 : _b.length) || /*grouped_out_edges*/ + ((_d = (_c = ctx[2]) == null ? void 0 : _c.next) == null ? void 0 : _d.length)) && create_if_block6(ctx) + ); + return { + c() { + div = element("div"); + if (if_block) + if_block.c(); + attr(div, "class", "BC-prev-next-view flex svelte-deyewb"); + }, + m(target, anchor) { + insert(target, div, anchor); + if (if_block) + if_block.m(div, null); + current = true; + }, + p(ctx2, [dirty]) { + var _a2, _b2, _c2, _d2; + if ( + /*grouped_out_edges*/ + ((_b2 = (_a2 = ctx2[2]) == null ? void 0 : _a2.prev) == null ? void 0 : _b2.length) || /*grouped_out_edges*/ + ((_d2 = (_c2 = ctx2[2]) == null ? void 0 : _c2.next) == null ? void 0 : _d2.length) + ) + if_block.p(ctx2, dirty); + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + if (if_block) + if_block.d(); + } + }; +} +function instance37($$self, $$props, $$invalidate) { + let { file_path } = $$props; + let { plugin } = $$props; + const { field_group_labels, show_node_options } = plugin.settings.views.page.prev_next; + const edge_field_labels = { + prev: resolve_field_group_labels(plugin.settings.edge_field_groups, field_group_labels.prev), + next: resolve_field_group_labels(plugin.settings.edge_field_groups, field_group_labels.next) + }; + const merged_field_labels = remove_duplicates([...edge_field_labels.prev, ...edge_field_labels.next]); + const grouped_out_edges = plugin.graph.hasNode(file_path) ? group_by(plugin.graph.get_out_edges(file_path).filter((e) => has_edge_attrs(e, { $or_fields: merged_field_labels })), (e) => edge_field_labels.prev.includes(e.attr.field) ? "prev" : "next") : null; + $$self.$$set = ($$props2) => { + if ("file_path" in $$props2) + $$invalidate(3, file_path = $$props2.file_path); + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + }; + return [plugin, show_node_options, grouped_out_edges, file_path]; +} +var PrevNextView = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance37, create_fragment37, safe_not_equal, { file_path: 3, plugin: 0 }, add_css2); + } +}; +var PrevNextView_default = PrevNextView; + +// src/components/button/MergeFieldsButton.svelte +function create_else_block5(ctx) { + let spliticon; + let current; + spliticon = new split_default({ props: { size: ICON_SIZE } }); + return { + c() { + create_component(spliticon.$$.fragment); + }, + m(target, anchor) { + mount_component(spliticon, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(spliticon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(spliticon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(spliticon, detaching); + } + }; +} +function create_if_block7(ctx) { + let mergeicon; + let current; + mergeicon = new merge_default({ props: { size: ICON_SIZE } }); + return { + c() { + create_component(mergeicon.$$.fragment); + }, + m(target, anchor) { + mount_component(mergeicon, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(mergeicon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(mergeicon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(mergeicon, detaching); + } + }; +} +function create_fragment38(ctx) { + let button; + let current_block_type_index; + let if_block; + let button_aria_label_value; + let current; + let mounted; + let dispose; + const if_block_creators = [create_if_block7, create_else_block5]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*merge_fields*/ + ctx2[0] + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + button = element("button"); + if_block.c(); + attr( + button, + "class", + /*cls*/ + ctx[1] + ); + attr(button, "aria-label", button_aria_label_value = /*merge_fields*/ + ctx[0] ? "Separate Fields" : "Merge Fields"); + }, + m(target, anchor) { + insert(target, button, anchor); + if_blocks[current_block_type_index].m(button, null); + current = true; + if (!mounted) { + dispose = listen( + button, + "click", + /*click_handler*/ + ctx[2] + ); + mounted = true; + } + }, + p(ctx2, [dirty]) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index !== previous_block_index) { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + } + transition_in(if_block, 1); + if_block.m(button, null); + } + if (!current || dirty & /*cls*/ + 2) { + attr( + button, + "class", + /*cls*/ + ctx2[1] + ); + } + if (!current || dirty & /*merge_fields*/ + 1 && button_aria_label_value !== (button_aria_label_value = /*merge_fields*/ + ctx2[0] ? "Separate Fields" : "Merge Fields")) { + attr(button, "aria-label", button_aria_label_value); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(button); + } + if_blocks[current_block_type_index].d(); + mounted = false; + dispose(); + } + }; +} +function instance38($$self, $$props, $$invalidate) { + let { cls = "" } = $$props; + let { merge_fields } = $$props; + const click_handler = () => $$invalidate(0, merge_fields = !merge_fields); + $$self.$$set = ($$props2) => { + if ("cls" in $$props2) + $$invalidate(1, cls = $$props2.cls); + if ("merge_fields" in $$props2) + $$invalidate(0, merge_fields = $$props2.merge_fields); + }; + return [merge_fields, cls, click_handler]; +} +var MergeFieldsButton = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance38, create_fragment38, safe_not_equal, { cls: 1, merge_fields: 0 }); + } +}; +var MergeFieldsButton_default = MergeFieldsButton; + +// src/components/page_views/TrailViewGrid.svelte +function add_css3(target) { + append_styles(target, "svelte-fynvrm", ".BC-trail-view.svelte-fynvrm{overflow:hidden;border-radius:var(--radius-m);border:1px solid var(--background-modifier-border)}.BC-trail-view-item.svelte-fynvrm{margin:-1px -1px 0 0;border-right:1px solid var(--background-modifier-border);border-top:1px solid var(--background-modifier-border)}"); +} +function get_each_context6(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[5] = list[i]; + child_ctx[7] = i; + return child_ctx; +} +function get_each_context_14(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[8] = list[i].first; + child_ctx[9] = list[i].last; + const constants_0 = ( + /*square*/ + child_ctx[1][ + /*first*/ + child_ctx[8] + ][ + /*j*/ + child_ctx[7] + ] + ); + child_ctx[10] = constants_0; + return child_ctx; +} +function create_if_block8(ctx) { + let edgelink; + let current; + edgelink = new EdgeLink_default({ + props: { + edge: ( + /*edge*/ + ctx[10] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + cls: "p-1 grow flex justify-center items-center", + show_node_options: ( + /*plugin*/ + ctx[0].settings.views.page.trail.show_node_options + ) + } + }); + return { + c() { + create_component(edgelink.$$.fragment); + }, + m(target, anchor) { + mount_component(edgelink, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const edgelink_changes = {}; + if (dirty & /*plugin*/ + 1) + edgelink_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*plugin*/ + 1) + edgelink_changes.show_node_options = /*plugin*/ + ctx2[0].settings.views.page.trail.show_node_options; + edgelink.$set(edgelink_changes); + }, + i(local) { + if (current) + return; + transition_in(edgelink.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(edgelink.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(edgelink, detaching); + } + }; +} +function create_each_block_14(ctx) { + let div; + let t; + let current; + let if_block = ( + /*edge*/ + ctx[10] && create_if_block8(ctx) + ); + return { + c() { + div = element("div"); + if (if_block) + if_block.c(); + t = space(); + attr(div, "class", "BC-trail-view-item flex svelte-fynvrm"); + set_style( + div, + "grid-area", + /*first*/ + ctx[8] + 1 + " / " + /*j*/ + (ctx[7] + 1) + " / " + /*last*/ + (ctx[9] + 2) + " / " + /*j*/ + (ctx[7] + 2) + ); + }, + m(target, anchor) { + insert(target, div, anchor); + if (if_block) + if_block.m(div, null); + append(div, t); + current = true; + }, + p(ctx2, dirty) { + if ( + /*edge*/ + ctx2[10] + ) + if_block.p(ctx2, dirty); + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + if (if_block) + if_block.d(); + } + }; +} +function create_each_block6(ctx) { + let each_1_anchor; + let current; + let each_value_1 = ensure_array_like( + /*col*/ + ctx[5] + ); + let each_blocks = []; + for (let i = 0; i < each_value_1.length; i += 1) { + each_blocks[i] = create_each_block_14(get_each_context_14(ctx, each_value_1, i)); + } const out = (i) => transition_out(each_blocks[i], 1, 1, () => { each_blocks[i] = null; }); return { c() { - if (if_block) - if_block.c(); - t = space(); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + each_1_anchor = empty(); + }, + m(target, anchor) { + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(target, anchor); + } + } + insert(target, each_1_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + if (dirty & /*col_runs, square, plugin*/ + 7) { + each_value_1 = ensure_array_like( + /*col*/ + ctx2[5] + ); + let i; + for (i = 0; i < each_value_1.length; i += 1) { + const child_ctx = get_each_context_14(ctx2, each_value_1, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block_14(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } + group_outros(); + for (i = each_value_1.length; i < each_blocks.length; i += 1) { + out(i); + } + check_outros(); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value_1.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(each_1_anchor); + } + destroy_each(each_blocks, detaching); + } + }; +} +function create_fragment39(ctx) { + let div; + let current; + let each_value = ensure_array_like( + /*col_runs*/ + ctx[2] + ); + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block6(get_each_context6(ctx, each_value, i)); + } + const out = (i) => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + return { + c() { + var _a, _b; div = element("div"); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(div, "class", "BC-tree svelte-1df5nr5"); + attr(div, "class", "BC-trail-view grid svelte-fynvrm"); + set_style(div, "grid-template-rows", "min-content"); + set_style(div, "grid-template-columns", "1fr ".repeat( + /*square*/ + (_b = (_a = ctx[1].at(0)) == null ? void 0 : _a.length) != null ? _b : 0 + )); }, m(target, anchor) { - if (if_block) - if_block.m(target, anchor); - insert(target, t, anchor); insert(target, div, anchor); for (let i = 0; i < each_blocks.length; i += 1) { if (each_blocks[i]) { @@ -24211,23 +33879,20 @@ function create_fragment10(ctx) { current = true; }, p(ctx2, [dirty]) { - if ( - /*title*/ - ctx2[6] !== false - ) - if_block.p(ctx2, dirty); - if (dirty & /*content, lines, openOrSwitch, hoverPreview, activeLeafView, isInVault, dropDendron, settings, meetsConditions, froms, min, max*/ - 687) { - each_value = /*lines*/ - ctx2[0]; + if (dirty & /*col_runs, square, plugin*/ + 7) { + each_value = ensure_array_like( + /*col_runs*/ + ctx2[2] + ); let i; for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context5(ctx2, each_value, i); + const child_ctx = get_each_context6(ctx2, each_value, i); if (each_blocks[i]) { each_blocks[i].p(child_ctx, dirty); transition_in(each_blocks[i], 1); } else { - each_blocks[i] = create_each_block5(child_ctx); + each_blocks[i] = create_each_block6(child_ctx); each_blocks[i].c(); transition_in(each_blocks[i], 1); each_blocks[i].m(div, null); @@ -24256,3748 +33921,1296 @@ function create_fragment10(ctx) { current = false; }, d(detaching) { - if (if_block) - if_block.d(detaching); - if (detaching) - detach(t); - if (detaching) + if (detaching) { detach(div); + } destroy_each(each_blocks, detaching); } }; } -function instance10($$self, $$props, $$invalidate) { - ; - ; +function instance39($$self, $$props, $$invalidate) { let { plugin } = $$props; - let { el } = $$props; - let { lines } = $$props; - let { froms } = $$props; - let { min: min3 } = $$props; - let { max: max4 } = $$props; - let { basename } = $$props; - let { parsedSource } = $$props; - const { settings } = plugin; - const { title, content, dir } = parsedSource; - const activeLeafView = app.workspace.activeLeaf.view; - const click_handler = async (link2, e) => await openOrSwitch(link2, e); - const mouseover_handler = (link2, e) => hoverPreview(e, activeLeafView, link2); - const click_handler_1 = async (link2, e) => await openOrSwitch(link2, e); - const mouseover_handler_1 = (link2, e) => hoverPreview(e, activeLeafView, link2); + let { all_paths } = $$props; + const reversed = all_paths.map((path) => [...path].reverse()); + const square = ensure_square_array(reversed, null, true); + const col_runs = transpose(square).map((col) => gather_by_runs(col, (e) => e ? e.target_id : null)); $$self.$$set = ($$props2) => { if ("plugin" in $$props2) - $$invalidate(10, plugin = $$props2.plugin); - if ("el" in $$props2) - $$invalidate(11, el = $$props2.el); - if ("lines" in $$props2) - $$invalidate(0, lines = $$props2.lines); - if ("froms" in $$props2) - $$invalidate(1, froms = $$props2.froms); - if ("min" in $$props2) - $$invalidate(2, min3 = $$props2.min); - if ("max" in $$props2) - $$invalidate(3, max4 = $$props2.max); - if ("basename" in $$props2) - $$invalidate(4, basename = $$props2.basename); - if ("parsedSource" in $$props2) - $$invalidate(12, parsedSource = $$props2.parsedSource); + $$invalidate(0, plugin = $$props2.plugin); + if ("all_paths" in $$props2) + $$invalidate(3, all_paths = $$props2.all_paths); }; - return [ - lines, - froms, - min3, - max4, - basename, - settings, - title, - content, - dir, - activeLeafView, - plugin, - el, - parsedSource, - click_handler, - mouseover_handler, - click_handler_1, - mouseover_handler_1 - ]; + return [plugin, square, col_runs, all_paths]; } -var CBTree = class extends SvelteComponent { +var TrailViewGrid = class extends SvelteComponent { constructor(options) { super(); - init( - this, - options, - instance10, - create_fragment10, - safe_not_equal, - { - plugin: 10, - el: 11, - lines: 0, - froms: 1, - min: 2, - max: 3, - basename: 4, - parsedSource: 12 - }, - add_css8 - ); + init(this, options, instance39, create_fragment39, safe_not_equal, { plugin: 0, all_paths: 3 }, add_css3); } }; -var CBTree_default = CBTree; +var TrailViewGrid_default = TrailViewGrid; -// src/Codeblocks.ts -function getCodeblockCB(plugin) { - const { settings, db } = plugin; - const { userHiers, createIndexIndent } = settings; - return (source, el, ctx) => { - var _a; - db.start2G("Codeblock"); - const parsedSource = parseCodeBlockSource(source); - const err = codeblockError(plugin, parsedSource); - if (err !== "") { - el.innerHTML = err; - db.end2G(); - return; - } - let min3 = 0, max4 = Infinity; - let { depth, dir, fields, from, implied, flat } = parsedSource; - if (depth !== void 0) { - const minNum = parseInt(depth[0]); - if (!isNaN(minNum)) - min3 = minNum; - const maxNum = parseInt(depth[1]); - if (!isNaN(maxNum)) - max4 = maxNum; - } - const currFile = app.metadataCache.getFirstLinkpathDest( - ctx.sourcePath, - "" - ); - const { basename } = currFile; - let froms = void 0; - if (from !== void 0) { - try { - const api = getDVApi(plugin); - if (api) { - const pages = (_a = api.pagePaths(from)) == null ? void 0 : _a.values; - froms = pages.map(dropFolder); - } else - new import_obsidian16.Notice("Dataview must be enabled for `from` to work."); - } catch (e) { - new import_obsidian16.Notice(`The query "${from}" failed.`); - } - } - const oppDir = getOppDir(dir); - const sub = implied === false ? getSubInDirs(plugin.mainG, dir) : getSubInDirs(plugin.mainG, dir, oppDir); - const closed = getReflexiveClosure(sub, userHiers); - const subFields = fields != null ? fields : getFields(userHiers); - const subClosed = getSubForFields(getSubInDirs(closed, dir), subFields); - const allPaths = dfsAllPaths(subClosed, basename); - const index2 = createIndex(allPaths, false, createIndexIndent); - (0, import_loglevel16.info)({ allPaths, index: index2 }); - const lines = indexToLinePairs(index2, flat); - switch (parsedSource.type) { - case "tree": - new CBTree_default({ - target: el, - props: { - plugin, - el, - min: min3, - max: max4, - lines, - froms, - basename, - parsedSource - } - }); - break; - case "juggl": - createdJugglCB( - plugin, - el, - parsedSource, - lines, - froms, - basename, - min3, - max4 - ); - break; - } - db.end2G(); - }; +// src/components/page_views/TrailViewPath.svelte +function add_css4(target) { + append_styles(target, "svelte-4v6yoh", '.BC-trail-view.svelte-4v6yoh{overflow:hidden;border-radius:var(--radius-m);border:1px solid var(--background-modifier-border)}.BC-trail-view-item-separator.svelte-4v6yoh::before{content:">"}'); } -var parseAsBool = (value) => value === "true" ? true : value === "false" ? false : value; -function parseCodeBlockSource(source) { - const lines = source.split("\n"); - const getValue = (type2) => { - var _a, _b, _c; - return (_c = (_b = (_a = lines.find((l2) => l2.startsWith(`${type2}:`))) == null ? void 0 : _a.split(":")) == null ? void 0 : _b[1]) == null ? void 0 : _c.trim(); - }; - const results = {}; - CODEBLOCK_FIELDS.forEach((field) => { - const value = getValue(field); - results[field] = parseAsBool(value); - }); - results.fields = results.fields ? splitAndTrim(results.fields) : void 0; - if (results.depth) { - const match2 = results.depth.match(/(\d*)-?(\d*)/); - results.depth = [match2[1], match2[2]]; - } - return results; -} -function codeblockError(plugin, parsedSource) { - var _a; - const { dir, fields, type: type2, title, depth, flat, content, from, implied } = parsedSource; - const { userHiers } = plugin.settings; - let err = ""; - if (!CODEBLOCK_TYPES.includes(type2)) - err += `type: ${type2} is not a valid type. It must be one of: ${CODEBLOCK_TYPES.map( - (type3) => `${type3}` - ).join(", ")}.
`; - const validDir = DIRECTIONS.includes(dir); - if (!validDir) - err += `dir: ${dir} is not a valid direction.
`; - const allFields = getFields(userHiers); - (_a = [fields].flat()) == null ? void 0 : _a.forEach((f) => { - if (f !== void 0 && !allFields.includes(f)) - err += `fields: ${f} is not a field in your hierarchies.
`; - }); - if (title !== void 0 && title !== false) - err += `title: ${title} is not a valid value. It has to be false, or leave the entire line out.
`; - if (depth !== void 0 && depth.every((num) => isNaN(parseInt(num)))) - err += `depth: ${depth} is not a valid value. It has to be a number.
`; - if (flat !== void 0 && flat !== true) - err += `flat: ${flat} is not a valid value. It has to be true, or leave the entire line out.
`; - if (content !== void 0 && content !== "open" && content !== "closed") - err += `content: ${content} is not a valid value. It has to be open or closed, or leave the entire line out.
`; - if (from !== void 0 && !app.plugins.enabledPlugins.has("dataview")) { - err += `Dataview must be enabled to use from.
`; - } - if (implied !== void 0 && implied !== false) - err += `implied: ${implied} is not a valid value. It has to be false, or leave the entire line out.
`; - return err === "" ? "" : `${err}
- A valid example would be: -

-      type: tree
-      dir: ${validDir ? dir : "down"}
-      fields: ${allFields.map((f) => {
-    return { f, dir: getFieldInfo(userHiers, f).fieldDir };
-  }).filter((info14) => info14.dir === dir).map((info14) => info14.f).join(", ") || "child"}
-      depth: 3
-      
`; -} -var indentToDepth = (indent) => indent.length / 2 + 1; -function meetsConditions(indent, node, froms, min3, max4) { - const depth = indentToDepth(indent); - return depth >= min3 && depth <= max4 && (froms === void 0 || froms.includes(node)); -} -function createdJugglCB(plugin, target, args, lines, froms, source, min3, max4) { - const nodes = lines.filter(([indent, node]) => meetsConditions(indent, node, froms, min3, max4)).map(([_, node]) => node + ".md"); - if (min3 <= 0) - nodes.push(source + ".md"); - createJuggl(plugin, target, nodes, args); -} - -// src/Commands/jumpToFirstDir.ts -var import_obsidian17 = require("obsidian"); -async function jumpToFirstDir(plugin, dir) { - var _a; - const { limitJumpToFirstFields } = plugin.settings; - const file = getCurrFile(); - if (!file) { - new import_obsidian17.Notice("You need to be focussed on a Markdown file"); - return; - } - const { basename } = file; - const realsNImplieds = getRealnImplied(plugin, basename, dir)[dir]; - const allBCs = [...realsNImplieds.reals, ...realsNImplieds.implieds]; - if (allBCs.length === 0) { - new import_obsidian17.Notice(`No ${dir} found`); - return; - } - const toNode = (_a = allBCs.find( - (bc) => limitJumpToFirstFields.includes(bc.field) - )) == null ? void 0 : _a.to; - if (!toNode) { - new import_obsidian17.Notice( - `No note was found in ${dir} given the limited fields allowed: ${limitJumpToFirstFields.join( - ", " - )}` - ); - return; - } - const toFile = app.metadataCache.getFirstLinkpathDest(toNode, ""); - await app.workspace.activeLeaf.openFile(toFile); -} - -// src/Commands/threading.ts -var import_obsidian18 = require("obsidian"); -var resolveThreadingNameTemplate = (template, currFile, field, dir, dateFormat) => template ? template.replace("{{current}}", currFile.basename).replace("{{field}}", field).replace("{{dir}}", dir).replace("{{date}}", moment().format(dateFormat)) : "Untitled"; -function makeFilenameUnique(filename) { - let i = 1, newName = filename; - while (app.metadataCache.getFirstLinkpathDest(newName, "")) { - if (i === 1) - newName += ` ${i}`; - else - newName = newName.slice(0, -2) + ` ${i}`; - i++; - } - return newName; -} -async function resolveThreadingContentTemplate(writeBCsInline, templatePath, oppField, currFile, crumb) { - let newContent = crumb; - if (templatePath) { - const templateFile = app.metadataCache.getFirstLinkpathDest( - templatePath, - "" - ); - const template = await app.vault.cachedRead(templateFile); - newContent = template.replace( - /\{\{BC-thread-crumb\}\}/i, - writeBCsInline ? `${oppField}:: [[${currFile.basename}]]` : `${oppField}: ['${currFile.basename}']` - ); - } - return newContent; -} -async function thread(plugin, field) { - var _a; - const { settings } = plugin; - const { - userHiers, - threadingTemplate, - dateFormat, - threadIntoNewPane, - threadingDirTemplates, - threadUnderCursor, - writeBCsInline - } = settings; - const currFile = getCurrFile(); - if (!currFile) - return; - const newFileParent = app.fileManager.getNewFileParent(currFile.path); - const dir = getFieldInfo(userHiers, field).fieldDir; - const oppField = getOppFields(userHiers, field, dir)[0]; - let newBasename = resolveThreadingNameTemplate( - threadingTemplate, - currFile, - field, - dir, - dateFormat - ); - newBasename = makeFilenameUnique(newBasename); - const oppCrumb = writeBCsInline ? `${oppField}:: [[${currFile.basename}]]` : `--- -${oppField}: ['${currFile.basename}'] ----`; - const templatePath = threadingDirTemplates[dir]; - const newContent = await resolveThreadingContentTemplate( - writeBCsInline, - templatePath, - oppField, - currFile, - oppCrumb - ); - const newFile = await app.vault.create( - (0, import_obsidian18.normalizePath)(`${newFileParent.path}/${newBasename}.md`), - newContent - ); - if (!writeBCsInline) { - const { api } = (_a = app.plugins.plugins.metaedit) != null ? _a : {}; - if (!api) { - new import_obsidian18.Notice( - "Metaedit must be enabled to write to yaml. Alternatively, toggle the setting `Write Breadcrumbs Inline` to use Dataview inline fields instead." - ); - return; - } - await createOrUpdateYaml( - field, - newFile.basename, - currFile, - app.metadataCache.getFileCache(currFile).frontmatter, - api - ); - } else { - const crumb = `${field}:: [[${newFile.basename}]]`; - const { editor } = app.workspace.activeLeaf.view; - if (threadUnderCursor || !editor) { - editor.replaceRange(crumb, editor.getCursor()); - } else { - let content = await app.vault.read(currFile); - const splits = splitAtYaml2(content); - content = splits[0] + (splits[0].length ? "\n" : "") + crumb + (splits[1].length ? "\n" : "") + splits[1]; - await app.vault.modify(currFile, content); - } - } - const leaf = threadIntoNewPane ? app.workspace.getLeaf(true) : app.workspace.activeLeaf; - await leaf.openFile(newFile, { active: true, mode: "source" }); - if (templatePath) { - if (app.plugins.plugins["templater-obsidian"]) { - app.commands.executeCommandById( - "templater-obsidian:replace-in-file-templater" - ); - } else { - new import_obsidian18.Notice( - "The Templater plugin must be enabled to resolve the templates in the new note" - ); - } - } - if (threadingTemplate) { - const editor = leaf.view.editor; - editor.setCursor(editor.getValue().length); - } else { - const noteNameInputs = document.getElementsByClassName("view-header-title"); - const newNoteInputEl = Array.from(noteNameInputs).find( - (input) => input.innerText === newBasename - ); - newNoteInputEl.innerText = ""; - newNoteInputEl.focus(); - } -} - -// src/Commands/WriteBCs.ts -var import_loglevel17 = __toESM(require_loglevel()); -var import_obsidian19 = require("obsidian"); -async function writeBCToFile(plugin, currFile) { - const { settings, mainG } = plugin; - const file = currFile != null ? currFile : getCurrFile(); - const { limitWriteBCCheckboxes, writeBCsInline, userHiers } = settings; - const succInfo = mainG.mapInEdges(file.basename, (k, a2, s2, t) => { - const { field, dir } = a2; - const oppField = getOppFields(userHiers, field, dir)[0]; - return { succ: s2, field: oppField }; - }); - for (const { succ, field } of succInfo) { - if (!limitWriteBCCheckboxes.includes(field)) - return; - const content = await app.vault.read(file); - const [yaml, afterYaml] = splitAtYaml2(content); - if (!writeBCsInline) { - const inner = yaml === "" ? yaml : yaml.slice(4, -4); - const newYaml = changeYaml(inner, field, succ); - const newContent = `--- -${newYaml} ----${afterYaml}`; - await app.vault.modify(file, newContent); - } else { - const newContent = yaml + (yaml.length ? "\n" : "") + `${field}:: [[${succ}]]` + (afterYaml.length ? "\n" : "") + afterYaml; - await app.vault.modify(file, newContent); - } - } -} -async function writeBCsToAllFiles(plugin) { - if (!plugin.settings.showWriteAllBCsCmd) { - new import_obsidian19.Notice( - "You first need to enable this command in Breadcrumbs' settings." - ); - return; - } - if (window.confirm( - "This action will write the implied Breadcrumbs of each file to that file.\nIt uses the MetaEdit plugins API to update the YAML, so it should only affect that frontmatter of your note.\nI can't promise that nothing bad will happen. **This operation cannot be undone**." - )) { - if (window.confirm( - "Are you sure? You have been warned that this operation will attempt to update all files with implied breadcrumbs." - )) { - if (window.confirm("For real, please make a back up before.")) { - const notice = new import_obsidian19.Notice("Operation Started"); - const problemFiles = []; - for (const file of app.vault.getMarkdownFiles()) { - try { - await writeBCToFile(plugin, file); - } catch (e) { - problemFiles.push(file.path); - } - } - notice.setMessage("Operation Complete"); - if (problemFiles.length) { - new import_obsidian19.Notice( - "Some files were not updated due to errors. Check the console to see which ones." - ); - (0, import_loglevel17.warn)({ problemFiles }); - } - } - } - } -} - -// src/FieldSuggestor.ts -var import_obsidian20 = require("obsidian"); -var FieldSuggestor = class extends import_obsidian20.EditorSuggest { - constructor(plugin) { - super(app); - this.getSuggestions = (context) => { - const { query } = context; - return BC_FIELDS_INFO.map((sug) => sug.field).filter( - (sug) => sug.includes(query) - ); - }; - this.plugin = plugin; - } - onTrigger(cursor, editor, _) { - var _a; - const sub = editor.getLine(cursor.line).substring(0, cursor.ch); - const match2 = (_a = sub.match(/^BC-(.*)$/)) == null ? void 0 : _a[1]; - if (match2 !== void 0) { - return { - end: cursor, - start: { - ch: sub.lastIndexOf(match2), - line: cursor.line - }, - query: match2 - }; - } - return null; - } - renderSuggestion(suggestion, el) { - var _a; - el.createDiv({ - text: suggestion.replace("BC-", ""), - cls: "BC-suggester-container", - attr: { - "aria-label": (_a = BC_FIELDS_INFO.find((f) => f.field === suggestion)) == null ? void 0 : _a.desc, - "aria-label-position": "right" - } - }); - } - selectSuggestion(suggestion) { - const { context, plugin } = this; - if (!context) - return; - const field = BC_FIELDS_INFO.find((f) => f.field === suggestion); - const replacement = `${suggestion}${field == null ? void 0 : field[isInsideYaml() ? "afterYaml" : "afterInline"]}`; - context.editor.replaceRange( - replacement, - { ch: 0, line: context.start.line }, - context.end - ); - } -}; - -// src/RelationSuggestor.ts -var import_obsidian21 = require("obsidian"); -var RelationSuggestor = class extends import_obsidian21.EditorSuggest { - constructor(plugin) { - super(app); - this.getSuggestions = (context) => { - const { query } = context; - const { userHiers } = this.plugin.settings; - return getFields(userHiers).filter((sug) => sug.includes(query)); - }; - this.plugin = plugin; - } - onTrigger(cursor, editor, _) { - var _a; - const trig = this.plugin.settings.relSuggestorTrigger; - const sub = editor.getLine(cursor.line).substring(0, cursor.ch); - const regex = new RegExp(`.*?${escapeRegex(trig)}(.*)$`); - const match2 = (_a = regex.exec(sub)) == null ? void 0 : _a[1]; - if (match2 === void 0) - return null; - return { - start: { - ch: sub.lastIndexOf(trig), - line: cursor.line - }, - end: cursor, - query: match2 - }; - } - renderSuggestion(suggestion, el) { - el.createDiv({ - text: suggestion, - cls: "codeblock-suggestion" - }); - } - selectSuggestion(suggestion) { - const { context, plugin } = this; - if (!context) - return; - const trig = plugin.settings.relSuggestorTrigger; - const { start: start2, end, editor } = context; - const replacement = suggestion + (isInsideYaml() ? ": " : ":: ") + "[["; - editor.replaceRange( - replacement, - { ch: start2.ch + 1 - trig.length, line: start2.line }, - end - ); - } -}; - -// src/Settings/BreadcrumbsSettingTab.ts -var import_obsidian40 = require("obsidian"); - -// src/Components/KoFi.svelte -function add_css9(target) { - append_styles(target, "svelte-1j4tt4j", ".BC-Kofi-button.svelte-1j4tt4j{margin-top:10px}"); -} -function create_fragment11(ctx) { - let script; - let script_src_value; - let t; - let div; - let mounted; - let dispose; - return { - c() { - script = element("script"); - t = space(); - div = element("div"); - attr(script, "type", "text/javascript"); - if (!src_url_equal(script.src, script_src_value = "https://ko-fi.com/widgets/widget_2.js")) - attr(script, "src", script_src_value); - attr(div, "class", "BC-Kofi-button svelte-1j4tt4j"); - }, - m(target, anchor) { - append(document.head, script); - insert(target, t, anchor); - insert(target, div, anchor); - ctx[2](div); - if (!mounted) { - dispose = listen( - script, - "load", - /*initializeKofi*/ - ctx[1] - ); - mounted = true; - } - }, - p: noop, - i: noop, - o: noop, - d(detaching) { - detach(script); - if (detaching) - detach(t); - if (detaching) - detach(div); - ctx[2](null); - mounted = false; - dispose(); - } - }; -} -function instance11($$self, $$props, $$invalidate) { - let button; - const initializeKofi = () => { - kofiwidget2.init("Support Breadcrumbs development!", "#29abe0", "G2G454TZF"); - $$invalidate(0, button.innerHTML = kofiwidget2.getHTML(), button); - }; - function div_binding($$value) { - binding_callbacks[$$value ? "unshift" : "push"](() => { - button = $$value; - $$invalidate(0, button); - }); - } - return [button, initializeKofi, div_binding]; -} -var KoFi = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance11, create_fragment11, safe_not_equal, {}, add_css9); - } -}; -var KoFi_default = KoFi; - -// src/Settings/CreateIndexSettings.ts -var import_obsidian22 = require("obsidian"); -function addCreateIndexSettings(plugin, cmdsDetails) { - const { settings } = plugin; - const createIndexDetails = subDetails("Create Index", cmdsDetails); - new import_obsidian22.Setting(createIndexDetails).setName("Add wiklink brackets").setDesc( - fragWithHTML( - "When creating an index, should it wrap the note name in wikilinks [[]] or not.\n\u2705 = yes, \u274C = no." - ) - ).addToggle( - (toggle) => toggle.setValue(settings.wikilinkIndex).onChange(async (value) => { - settings.wikilinkIndex = value; - await plugin.saveSettings(); - }) - ); - new import_obsidian22.Setting(createIndexDetails).setName("Indent Character").setDesc( - fragWithHTML( - "The character(s) used to indent the index. These can be anything you want, but will usually be either spaces or tabs. Enter \\t to use tabs." - ) - ).addText((text2) => { - text2.setValue(settings.createIndexIndent).onChange(async (value) => { - settings.createIndexIndent = value; - await plugin.saveSettings(); - }); - }); - new import_obsidian22.Setting(createIndexDetails).setName("Show aliases of notes in index").setDesc("Show the aliases of each note in brackets.\n\u2705 = yes, \u274C = no.").addToggle( - (toggle) => toggle.setValue(settings.aliasesInIndex).onChange(async (value) => { - settings.aliasesInIndex = value; - await plugin.saveSettings(); - }) - ); -} - -// src/Settings/CSVSettings.ts -var import_obsidian23 = require("obsidian"); -function addCSVSettings(plugin, alternativeHierarchyDetails) { - const { settings } = plugin; - const csvDetails = subDetails("CSV Notes", alternativeHierarchyDetails); - new import_obsidian23.Setting(csvDetails).setName("CSV Breadcrumb Paths").setDesc("The file path of a csv files with breadcrumbs information.").addText((text2) => { - text2.setValue(settings.CSVPaths); - text2.inputEl.onblur = async () => { - settings.CSVPaths = text2.inputEl.value; - await plugin.saveSettings(); - }; - }); -} - -// src/Settings/DataviewNoteSettings.ts -var import_obsidian24 = require("obsidian"); -function addDataviewSettings(plugin, alternativeHierarchyDetails) { - const { settings } = plugin; - const { userHiers } = settings; - const fields = getFields(userHiers); - const dvDetails = subDetails("Dataview Notes", alternativeHierarchyDetails); - new import_obsidian24.Setting(dvDetails).setName("Default Dataview Note Field").setDesc( - fragWithHTML( - "By default, Dataview notes use the first field in your hierarchies (usually an \u2191 field). Choose a different one to use by default, without having to specify BC-dataview-note-field: {field}.
If you don't want to choose a default, select the blank option at the bottom of the list." - ) - ).addDropdown((dd) => { - fields.forEach((field) => dd.addOption(field, field)); - dd.addOption("", "").setValue(settings.dataviewNoteField).onChange(async (field) => { - settings.dataviewNoteField = field; - await plugin.saveSettings(); - await refreshIndex(plugin); - }); - }); -} - -// src/Settings/DateNoteSettings.ts -var import_obsidian25 = require("obsidian"); -function addDateNoteSettings(plugin, alternativeHierarchyDetails) { - const { settings } = plugin; - const { userHiers } = settings; - const fields = getFields(userHiers); - const fieldOptions = { "": "" }; - fields.forEach((field) => fieldOptions[field] = field); - const dateNoteDetails = subDetails("Date Notes", alternativeHierarchyDetails); - new import_obsidian25.Setting(dateNoteDetails).setName("Add Date Notes to Graph").setDesc( - "Breadcrumbs will try to link each daily note to the next one using the date format you provide in the settings below." - ).addToggle((toggle) => { - toggle.setValue(settings.addDateNotes).onChange(async (value) => { - settings.addDateNotes = value; - await plugin.saveSettings(); - await refreshIndex(plugin); - }); - }); - new import_obsidian25.Setting(dateNoteDetails).setName("Daily Note Format").setDesc( - fragWithHTML( - `The Luxon date format of your daily notes.
Note: Luxon uses different formats to Moment, so your format for the Daily Notes plugin may not work here. Be sure to check out the docs to find the right format.
You can escape characters by wrapping them in single quotes (e.g. yyyy-MM-dd 'Daily Note')` - ) - ).addText((text2) => { - text2.setValue(settings.dateNoteFormat); - text2.inputEl.onblur = async () => { - settings.dateNoteFormat = text2.getValue(); - await plugin.saveSettings(); - await refreshIndex(plugin); - }; - }); - new import_obsidian25.Setting(dateNoteDetails).setName("Date Note Field").setDesc( - fragWithHTML( - "Select a field to point to tomorrow's note from the current note. The opposite field will be used to point to yesterday's note." - ) - ).addDropdown((dd) => { - dd.addOptions(fieldOptions).setValue(settings.dateNoteField).onChange(async (field) => { - settings.dateNoteField = field; - await plugin.saveSettings(); - await refreshIndex(plugin); - }); - }); -} - -// src/Settings/DebuggingSettings.ts -var import_loglevel18 = __toESM(require_loglevel()); -var import_obsidian26 = require("obsidian"); -function addDebuggingsSettings(plugin, containerEl) { - const { settings } = plugin; - const debugDetails = details("Debugging", containerEl); - new import_obsidian26.Setting(debugDetails).setName("Debug Mode").setDesc( - fragWithHTML( - "Set the minimum level of debug messages to console log. If you choose TRACE, then everything will be logged. If you choose ERROR, then only the most necessary issues will be logged. SILENT will turn off all logs." - ) - ).addDropdown((dd) => { - Object.keys(import_loglevel18.default.levels).forEach((key) => dd.addOption(key, key)); - dd.setValue(settings.debugMode).onChange(async (value) => { - import_loglevel18.default.setLevel(value); - settings.debugMode = value; - await plugin.saveSettings(); - }); - }); - debugDetails.createEl("button", { text: "Console log settings" }, (el) => { - el.addEventListener("click", () => console.log(settings)); - }); -} - -// src/Settings/DendronSettings.ts -var import_obsidian27 = require("obsidian"); -function addDendronSettings(plugin, alternativeHierarchyDetails) { - const { settings } = plugin; - const { userHiers } = settings; - const fields = getFields(userHiers); - const dendronDetails = subDetails( - "Dendron Notes", - alternativeHierarchyDetails - ); - new import_obsidian27.Setting(dendronDetails).setName("Add Dendron notes to graph").setDesc( - fragWithHTML( - "Dendron notes create a hierarchy using note names.
nmath.algebra is a note about algebra, whose parent is math.
nmath.calculus.limits is a note about limits whose parent is the note math.calculus, the parent of which is math." - ) - ).addToggle( - (toggle) => toggle.setValue(settings.addDendronNotes).onChange(async (value) => { - settings.addDendronNotes = value; - await plugin.saveSettings(); - }) - ); - new import_obsidian27.Setting(dendronDetails).setName("Delimiter").setDesc( - fragWithHTML( - "Which delimiter should Breadcrumbs look for? The default is .." - ) - ).addText((text2) => { - text2.setPlaceholder("Delimiter").setValue(settings.dendronNoteDelimiter); - text2.inputEl.onblur = async () => { - const value = text2.getValue(); - if (value) - settings.dendronNoteDelimiter = value; - else { - new import_obsidian27.Notice(`The delimiter can't be blank`); - settings.dendronNoteDelimiter = DEFAULT_SETTINGS.dendronNoteDelimiter; - } - await plugin.saveSettings(); - }; - }); - new import_obsidian27.Setting(dendronDetails).setName("Trim Dendron Note Names").setDesc( - fragWithHTML( - "When displaying a dendron note name, should it be trimmed to only show the last item in the chain?
e.g. A.B.C \u2192 C." - ) - ).addToggle( - (toggle) => toggle.setValue(settings.trimDendronNotes).onChange(async (value) => { - settings.trimDendronNotes = value; - await plugin.saveSettings(); - await plugin.getActiveTYPEView(MATRIX_VIEW).draw(); - }) - ); - new import_obsidian27.Setting(dendronDetails).setName("Dendron Note Field").setDesc("Which field should Breadcrumbs use for Dendron notes?").addDropdown((dd) => { - fields.forEach((field) => dd.addOption(field, field)); - dd.setValue(settings.dendronNoteField); - dd.onChange(async (value) => { - settings.dendronNoteField = value; - await plugin.saveSettings(); - await refreshIndex(plugin); - }); - }); -} - -// src/Settings/GeneralSettings.ts -var import_obsidian28 = require("obsidian"); -function addGeneralSettings(plugin, containerEl) { - const { settings } = plugin; - const generalDetails = details("General Options", containerEl); - new import_obsidian28.Setting(generalDetails).setName("Refresh Index on Note Change").setDesc( - fragWithHTML( - "Refresh the Breadcrumbs index data everytime you change notes.
Note: This can be very slow on large vaults." - ) - ).addToggle( - (toggle) => toggle.setValue(settings.refreshOnNoteChange).onChange(async (value) => { - settings.refreshOnNoteChange = value; - await plugin.saveSettings(); - }) - ); - new import_obsidian28.Setting(generalDetails).setName("Refresh Index On Note Save").addToggle( - (toggle) => toggle.setValue(settings.refreshOnNoteSave).onChange(async (value) => { - settings.refreshOnNoteSave = value; - await plugin.saveSettings(); - }) - ); - new import_obsidian28.Setting(generalDetails).setName("Show Refresh Index Notice").setDesc( - "When Refreshing Index, should it show a notice once the operation is complete?" - ).addToggle( - (toggle) => toggle.setValue(settings.showRefreshNotice).onChange(async (value) => { - settings.showRefreshNotice = value; - await plugin.saveSettings(); - }) - ); - new import_obsidian28.Setting(generalDetails).setName("Alias Fields").setDesc( - fragWithHTML( - "A comma-separated list of fields used to specify aliases. These fields will be checked, in order, to display an alternate note title in different views.
This field will probably be alias or aliases, but it can be anything, like title." - ) - ).addText((text2) => { - text2.setValue(settings.altLinkFields.join(", ")); - text2.inputEl.onblur = async () => { - settings.altLinkFields = splitAndTrim(text2.getValue()); - await plugin.saveSettings(); - }; - }); - new import_obsidian28.Setting(generalDetails).setName("Only show first alias").setDesc( - "If a note has an alias (using the fields in the setting above), should only the first one be shown?" - ).addToggle( - (toggle) => toggle.setValue(!settings.showAllAliases).onChange(async (value) => { - settings.showAllAliases = !value; - await plugin.saveSettings(); - await refreshIndex(plugin); - }) - ); - new import_obsidian28.Setting(generalDetails).setName("Use yaml or inline fields for hierarchy data").setDesc( - "If enabled, Breadcrumbs will make it's hierarchy using yaml fields, and inline Dataview fields.\nIf this is disabled, it will only use Juggl links (See below)." - ).addToggle( - (toggle) => toggle.setValue(settings.useAllMetadata).onChange(async (value) => { - settings.useAllMetadata = value; - await plugin.saveSettings(); - await refreshIndex(plugin); - }) - ); - new import_obsidian28.Setting(generalDetails).setName("Use Juggl link syntax without having Juggl installed.").setDesc( - fragWithHTML( - `Should Breadcrumbs look for Juggl links even if you don't have Juggl installed? If you do have Juggl installed, it will always look for Juggl links.` - ) - ).addToggle( - (toggle) => toggle.setValue(settings.parseJugglLinksWithoutJuggl).onChange(async (value) => { - settings.parseJugglLinksWithoutJuggl = value; - await plugin.saveSettings(); - }) - ); - new import_obsidian28.Setting(generalDetails).setName("Enable Field Suggestor").setDesc( - fragWithHTML( - "Alot of Breadcrumbs features require a metadata (or inline Dataview) field to work. For example, `BC-folder-note`.
The Field Suggestor will show an autocomplete menu with all available Breadcrumbs field options when you type BC- at the start of a line." - ) - ).addToggle( - (toggle) => toggle.setValue(settings.fieldSuggestor).onChange(async (value) => { - settings.fieldSuggestor = value; - await plugin.saveSettings(); - }) - ); - new import_obsidian28.Setting(generalDetails).setName("Enable Relation Suggestor").setDesc( - fragWithHTML( - "Enable an editor suggestor which gets triggered by a custom string to show a list of relations from your hierarchies to insert." - ) - ).addToggle( - (toggle) => toggle.setValue(settings.enableRelationSuggestor).onChange(async (value) => { - settings.enableRelationSuggestor = value; - await plugin.saveSettings(); - }) - ); - new import_obsidian28.Setting(generalDetails).setName("Relation Suggestor Trigger").setDesc( - fragWithHTML( - "The string used to trigger the relation suggestor. Default is \\." - ) - ).addText( - (text2) => text2.setValue(settings.relSuggestorTrigger).onChange(async (value) => { - settings.relSuggestorTrigger = value; - await plugin.saveSettings(); - }) - ); - if (app.plugins.plugins.dataview !== void 0) { - new import_obsidian28.Setting(generalDetails).setName("Dataview Wait Time").setDesc( - "Enter an integer number of seconds to wait for the Dataview Index to load. The larger your vault, the longer it will take. The default is 5 seconds." - ).addText( - (text2) => text2.setPlaceholder("Seconds").setValue((settings.dvWaitTime / 1e3).toString()).onChange(async (value) => { - const num = Number(value); - if (num > 0) { - settings.dvWaitTime = num * 1e3; - await plugin.saveSettings(); - } else { - new import_obsidian28.Notice("The interval must be a non-negative number"); - } - }) - ); - } -} - -// src/Settings/HierarchyNoteSettings.ts -var import_obsidian29 = require("obsidian"); -function addHierarchyNoteSettings(plugin, alternativeHierarchyDetails) { - const { settings } = plugin; - const hierarchyNoteDetails = subDetails( - "Hierarchy Notes", - alternativeHierarchyDetails - ); - new import_obsidian29.Setting(hierarchyNoteDetails).setName("Hierarchy Note(s)").setDesc( - fragWithHTML( - "A comma-separated list of notes used to create external Breadcrumb structures.
You can also point to a folder of hierarchy notes by entering folderName/ (ending with a /).
Hierarchy note names and folders of hierarchy notes can both be entered in the same comma-separated list." - ) - ).addText((text2) => { - text2.setPlaceholder("Hierarchy Note(s)").setValue(settings.hierarchyNotes.join(", ")); - text2.inputEl.onblur = async () => { - const splits = splitAndTrim(text2.getValue()); - settings.hierarchyNotes = splits; - await plugin.saveSettings(); - }; - }); - new import_obsidian29.Setting(hierarchyNoteDetails).setName("Hierarchy note is parent of top-level items").setDesc("Should the actual hierarchy note be treated as the parent of all the top-level items in the list? \u2705 = Yes, \u274C = No").addToggle((toggle) => { - toggle.setValue(settings.hierarchyNoteIsParent).onChange(async (value) => { - settings.hierarchyNoteIsParent = value; - await plugin.saveSettings(); - await refreshIndex(plugin); - }); - }); - new import_obsidian29.Setting(hierarchyNoteDetails).setName("Default Hierarchy Note Field").setDesc( - fragWithHTML( - "By default, hierarchy notes use the first up field in your hierarchies. Choose a different one to use by default. If you don't want to choose a default, select the blank option at the bottom of the list." - ) - ).addDropdown((dd) => { - const upFields = getFields(settings.userHiers, "up"); - const options = {}; - upFields.forEach( - (field) => options[field] = field - ); - dd.addOptions(options).setValue(settings.HNUpField || upFields[0]).onChange(async (field) => { - settings.HNUpField = field; - await plugin.saveSettings(); - await refreshIndex(plugin); - }); - }); -} - -// src/Components/UserHierarchies.svelte -var import_obsidian30 = require("obsidian"); - -// node_modules/svelte-icons/components/IconBase.svelte -function add_css10(target) { - append_styles(target, "svelte-c8tyih", "svg.svelte-c8tyih{stroke:currentColor;fill:currentColor;stroke-width:0;width:100%;height:auto;max-height:100%}"); -} -function create_if_block7(ctx) { - let title_1; - let t; - return { - c() { - title_1 = svg_element("title"); - t = text( - /*title*/ - ctx[0] - ); - }, - m(target, anchor) { - insert(target, title_1, anchor); - append(title_1, t); - }, - p(ctx2, dirty) { - if (dirty & /*title*/ - 1) - set_data( - t, - /*title*/ - ctx2[0] - ); - }, - d(detaching) { - if (detaching) - detach(title_1); - } - }; -} -function create_fragment12(ctx) { - let svg; - let if_block_anchor; - let current; - let if_block = ( - /*title*/ - ctx[0] && create_if_block7(ctx) - ); - const default_slot_template = ( - /*#slots*/ - ctx[3].default - ); - const default_slot = create_slot( - default_slot_template, - ctx, - /*$$scope*/ - ctx[2], - null - ); - return { - c() { - svg = svg_element("svg"); - if (if_block) - if_block.c(); - if_block_anchor = empty(); - if (default_slot) - default_slot.c(); - attr(svg, "xmlns", "http://www.w3.org/2000/svg"); - attr( - svg, - "viewBox", - /*viewBox*/ - ctx[1] - ); - attr(svg, "class", "svelte-c8tyih"); - }, - m(target, anchor) { - insert(target, svg, anchor); - if (if_block) - if_block.m(svg, null); - append(svg, if_block_anchor); - if (default_slot) { - default_slot.m(svg, null); - } - current = true; - }, - p(ctx2, [dirty]) { - if ( - /*title*/ - ctx2[0] - ) { - if (if_block) { - if_block.p(ctx2, dirty); - } else { - if_block = create_if_block7(ctx2); - if_block.c(); - if_block.m(svg, if_block_anchor); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - if (default_slot) { - if (default_slot.p && (!current || dirty & /*$$scope*/ - 4)) { - update_slot_base( - default_slot, - default_slot_template, - ctx2, - /*$$scope*/ - ctx2[2], - !current ? get_all_dirty_from_scope( - /*$$scope*/ - ctx2[2] - ) : get_slot_changes( - default_slot_template, - /*$$scope*/ - ctx2[2], - dirty, - null - ), - null - ); - } - } - if (!current || dirty & /*viewBox*/ - 2) { - attr( - svg, - "viewBox", - /*viewBox*/ - ctx2[1] - ); - } - }, - i(local) { - if (current) - return; - transition_in(default_slot, local); - current = true; - }, - o(local) { - transition_out(default_slot, local); - current = false; - }, - d(detaching) { - if (detaching) - detach(svg); - if (if_block) - if_block.d(); - if (default_slot) - default_slot.d(detaching); - } - }; -} -function instance12($$self, $$props, $$invalidate) { - let { $$slots: slots = {}, $$scope } = $$props; - let { title = null } = $$props; - let { viewBox } = $$props; - $$self.$$set = ($$props2) => { - if ("title" in $$props2) - $$invalidate(0, title = $$props2.title); - if ("viewBox" in $$props2) - $$invalidate(1, viewBox = $$props2.viewBox); - if ("$$scope" in $$props2) - $$invalidate(2, $$scope = $$props2.$$scope); - }; - return [title, viewBox, $$scope, slots]; -} -var IconBase = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance12, create_fragment12, safe_not_equal, { title: 0, viewBox: 1 }, add_css10); - } -}; -var IconBase_default = IconBase; - -// node_modules/svelte-icons/fa/FaListUl.svelte -function create_default_slot(ctx) { - let path2; - return { - c() { - path2 = svg_element("path"); - attr(path2, "d", "M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"); - }, - m(target, anchor) { - insert(target, path2, anchor); - }, - p: noop, - d(detaching) { - if (detaching) - detach(path2); - } - }; -} -function create_fragment13(ctx) { - let iconbase; - let current; - const iconbase_spread_levels = [ - { viewBox: "0 0 512 512" }, - /*$$props*/ - ctx[0] - ]; - let iconbase_props = { - $$slots: { default: [create_default_slot] }, - $$scope: { ctx } - }; - for (let i = 0; i < iconbase_spread_levels.length; i += 1) { - iconbase_props = assign(iconbase_props, iconbase_spread_levels[i]); - } - iconbase = new IconBase_default({ props: iconbase_props }); - return { - c() { - create_component(iconbase.$$.fragment); - }, - m(target, anchor) { - mount_component(iconbase, target, anchor); - current = true; - }, - p(ctx2, [dirty]) { - const iconbase_changes = dirty & /*$$props*/ - 1 ? get_spread_update(iconbase_spread_levels, [iconbase_spread_levels[0], get_spread_object( - /*$$props*/ - ctx2[0] - )]) : {}; - if (dirty & /*$$scope*/ - 2) { - iconbase_changes.$$scope = { dirty, ctx: ctx2 }; - } - iconbase.$set(iconbase_changes); - }, - i(local) { - if (current) - return; - transition_in(iconbase.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(iconbase.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(iconbase, detaching); - } - }; -} -function instance13($$self, $$props, $$invalidate) { - $$self.$$set = ($$new_props) => { - $$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); - }; - $$props = exclude_internal_props($$props); - return [$$props]; -} -var FaListUl = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance13, create_fragment13, safe_not_equal, {}); - } -}; -var FaListUl_default = FaListUl; - -// node_modules/svelte-icons/fa/FaPlus.svelte -function create_default_slot2(ctx) { - let path2; - return { - c() { - path2 = svg_element("path"); - attr(path2, "d", "M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"); - }, - m(target, anchor) { - insert(target, path2, anchor); - }, - p: noop, - d(detaching) { - if (detaching) - detach(path2); - } - }; -} -function create_fragment14(ctx) { - let iconbase; - let current; - const iconbase_spread_levels = [ - { viewBox: "0 0 448 512" }, - /*$$props*/ - ctx[0] - ]; - let iconbase_props = { - $$slots: { default: [create_default_slot2] }, - $$scope: { ctx } - }; - for (let i = 0; i < iconbase_spread_levels.length; i += 1) { - iconbase_props = assign(iconbase_props, iconbase_spread_levels[i]); - } - iconbase = new IconBase_default({ props: iconbase_props }); - return { - c() { - create_component(iconbase.$$.fragment); - }, - m(target, anchor) { - mount_component(iconbase, target, anchor); - current = true; - }, - p(ctx2, [dirty]) { - const iconbase_changes = dirty & /*$$props*/ - 1 ? get_spread_update(iconbase_spread_levels, [iconbase_spread_levels[0], get_spread_object( - /*$$props*/ - ctx2[0] - )]) : {}; - if (dirty & /*$$scope*/ - 2) { - iconbase_changes.$$scope = { dirty, ctx: ctx2 }; - } - iconbase.$set(iconbase_changes); - }, - i(local) { - if (current) - return; - transition_in(iconbase.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(iconbase.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(iconbase, detaching); - } - }; -} -function instance14($$self, $$props, $$invalidate) { - $$self.$$set = ($$new_props) => { - $$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); - }; - $$props = exclude_internal_props($$props); - return [$$props]; -} -var FaPlus = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance14, create_fragment14, safe_not_equal, {}); - } -}; -var FaPlus_default = FaPlus; - -// node_modules/svelte-icons/fa/FaRegTrashAlt.svelte -function create_default_slot3(ctx) { - let path2; - return { - c() { - path2 = svg_element("path"); - attr(path2, "d", "M268 416h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12zM432 80h-82.41l-34-56.7A48 48 0 0 0 274.41 0H173.59a48 48 0 0 0-41.16 23.3L98.41 80H16A16 16 0 0 0 0 96v16a16 16 0 0 0 16 16h16v336a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128h16a16 16 0 0 0 16-16V96a16 16 0 0 0-16-16zM171.84 50.91A6 6 0 0 1 177 48h94a6 6 0 0 1 5.15 2.91L293.61 80H154.39zM368 464H80V128h288zm-212-48h24a12 12 0 0 0 12-12V188a12 12 0 0 0-12-12h-24a12 12 0 0 0-12 12v216a12 12 0 0 0 12 12z"); - }, - m(target, anchor) { - insert(target, path2, anchor); - }, - p: noop, - d(detaching) { - if (detaching) - detach(path2); - } - }; -} -function create_fragment15(ctx) { - let iconbase; - let current; - const iconbase_spread_levels = [ - { viewBox: "0 0 448 512" }, - /*$$props*/ - ctx[0] - ]; - let iconbase_props = { - $$slots: { default: [create_default_slot3] }, - $$scope: { ctx } - }; - for (let i = 0; i < iconbase_spread_levels.length; i += 1) { - iconbase_props = assign(iconbase_props, iconbase_spread_levels[i]); - } - iconbase = new IconBase_default({ props: iconbase_props }); - return { - c() { - create_component(iconbase.$$.fragment); - }, - m(target, anchor) { - mount_component(iconbase, target, anchor); - current = true; - }, - p(ctx2, [dirty]) { - const iconbase_changes = dirty & /*$$props*/ - 1 ? get_spread_update(iconbase_spread_levels, [iconbase_spread_levels[0], get_spread_object( - /*$$props*/ - ctx2[0] - )]) : {}; - if (dirty & /*$$scope*/ - 2) { - iconbase_changes.$$scope = { dirty, ctx: ctx2 }; - } - iconbase.$set(iconbase_changes); - }, - i(local) { - if (current) - return; - transition_in(iconbase.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(iconbase.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(iconbase, detaching); - } - }; -} -function instance15($$self, $$props, $$invalidate) { - $$self.$$set = ($$new_props) => { - $$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); - }; - $$props = exclude_internal_props($$props); - return [$$props]; -} -var FaRegTrashAlt = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance15, create_fragment15, safe_not_equal, {}); - } -}; -var FaRegTrashAlt_default = FaRegTrashAlt; - -// src/Components/UserHierarchies.svelte -function add_css11(target) { - append_styles(target, "svelte-1e9on6f", "label.BC-Arrow-Label.svelte-1e9on6f.svelte-1e9on6f{display:inline-block;width:20px !important}div.BC-Buttons.svelte-1e9on6f.svelte-1e9on6f{padding-bottom:5px}details.BC-Hier-Details.svelte-1e9on6f.svelte-1e9on6f{border:1px solid var(--background-modifier-border);border-radius:10px;padding:10px 5px 10px 10px;margin-bottom:15px}.BC-Hier-Details.svelte-1e9on6f summary.svelte-1e9on6f::marker{font-size:10px}.BC-Hier-Details.svelte-1e9on6f summary button.svelte-1e9on6f{float:right}.icon.svelte-1e9on6f.svelte-1e9on6f{color:var(--text-normal);display:inline-block;padding-top:3px;width:17px;height:17px}"); -} -function get_each_context6(ctx, list, i) { +function get_each_context7(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[13] = list[i]; - child_ctx[15] = i; + child_ctx[3] = list[i]; return child_ctx; } function get_each_context_15(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[16] = list[i]; + child_ctx[6] = list[i]; + child_ctx[8] = i; return child_ctx; } -function create_each_block_15(ctx) { - let div; - let label; - let t0_value = ARROW_DIRECTIONS[ - /*dir*/ - ctx[16] - ] + ""; - let t0; - let label_for_value; - let t1; - let input; - let input_name_value; - let input_value_value; - let mounted; - let dispose; - function change_handler(...args) { - return ( - /*change_handler*/ - ctx[11]( - /*i*/ - ctx[15], - /*dir*/ - ctx[16], - ...args - ) - ); - } +function create_if_block9(ctx) { + let span; + let span_aria_label_value; return { c() { - var _a, _b; - div = element("div"); - label = element("label"); - t0 = text(t0_value); - t1 = space(); - input = element("input"); - attr(label, "class", "BC-Arrow-Label svelte-1e9on6f"); - attr(label, "for", label_for_value = /*dir*/ - ctx[16]); - attr(input, "type", "text"); - attr(input, "size", "20"); - attr(input, "name", input_name_value = /*dir*/ - ctx[16]); - input.value = input_value_value = /*hier*/ - (_b = (_a = ctx[13][ - /*dir*/ - ctx[16] - ]) == null ? void 0 : _a.join(", ")) != null ? _b : ""; + span = element("span"); + attr(span, "class", "BC-trail-view-item-separator svelte-4v6yoh"); + attr(span, "aria-label", span_aria_label_value = url_search_params(untyped_pick( + /*edge*/ + ctx[6].attr, + ["source", "implied_kind", "round"] + ))); }, m(target, anchor) { - insert(target, div, anchor); - append(div, label); - append(label, t0); - append(div, t1); - append(div, input); - if (!mounted) { - dispose = listen(input, "change", change_handler); - mounted = true; - } - }, - p(new_ctx, dirty) { - var _a, _b; - ctx = new_ctx; - if (dirty & /*currHiers*/ - 2 && input_value_value !== (input_value_value = /*hier*/ - (_b = (_a = ctx[13][ - /*dir*/ - ctx[16] - ]) == null ? void 0 : _a.join(", ")) != null ? _b : "") && input.value !== input_value_value) { - input.value = input_value_value; - } + insert(target, span, anchor); }, + p: noop, d(detaching) { - if (detaching) - detach(div); - mounted = false; - dispose(); + if (detaching) { + detach(span); + } } }; } -function create_each_block6(ctx) { - let details2; - let summary; - let t0_value = DIRECTIONS.map(func).map(func_1).join(" ") + ""; - let t0; - let t1; - let span; - let button0; - let t3; - let button1; - let t5; - let button2; - let t7; - let t8; - let mounted; - let dispose; - function func(...args) { - return ( - /*func*/ - ctx[7]( - /*hier*/ - ctx[13], - ...args +function create_each_block_15(ctx) { + let div; + let t; + let edgelink; + let current; + let if_block = ( + /*j*/ + ctx[8] !== 0 && create_if_block9(ctx) + ); + edgelink = new EdgeLink_default({ + props: { + edge: ( + /*edge*/ + ctx[6] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + show_node_options: ( + /*plugin*/ + ctx[0].settings.views.page.trail.show_node_options ) - ); - } - function click_handler_3() { - return ( - /*click_handler_3*/ - ctx[8]( - /*i*/ - ctx[15] + } + }); + return { + c() { + div = element("div"); + if (if_block) + if_block.c(); + t = space(); + create_component(edgelink.$$.fragment); + attr(div, "class", "BC-trail-view-item"); + }, + m(target, anchor) { + insert(target, div, anchor); + if (if_block) + if_block.m(div, null); + append(div, t); + mount_component(edgelink, div, null); + current = true; + }, + p(ctx2, dirty) { + if ( + /*j*/ + ctx2[8] !== 0 ) - ); - } - function click_handler_4() { - return ( - /*click_handler_4*/ - ctx[9]( - /*i*/ - ctx[15] - ) - ); - } - function click_handler_5() { - return ( - /*click_handler_5*/ - ctx[10]( - /*i*/ - ctx[15] - ) - ); - } - let each_value_1 = DIRECTIONS; + if_block.p(ctx2, dirty); + const edgelink_changes = {}; + if (dirty & /*plugin*/ + 1) + edgelink_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*plugin*/ + 1) + edgelink_changes.show_node_options = /*plugin*/ + ctx2[0].settings.views.page.trail.show_node_options; + edgelink.$set(edgelink_changes); + }, + i(local) { + if (current) + return; + transition_in(edgelink.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(edgelink.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + if (if_block) + if_block.d(); + destroy_component(edgelink); + } + }; +} +function create_each_block7(ctx) { + let div; + let t; + let current; + let each_value_1 = ensure_array_like( + /*path*/ + ctx[3] + ); let each_blocks = []; for (let i = 0; i < each_value_1.length; i += 1) { each_blocks[i] = create_each_block_15(get_each_context_15(ctx, each_value_1, i)); } + const out = (i) => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); return { c() { - details2 = element("details"); - summary = element("summary"); - t0 = text(t0_value); - t1 = space(); - span = element("span"); - button0 = element("button"); - button0.textContent = "\u2191"; - t3 = space(); - button1 = element("button"); - button1.textContent = "\u2193"; - t5 = space(); - button2 = element("button"); - button2.textContent = "X"; - t7 = space(); + div = element("div"); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - t8 = space(); - attr(button0, "aria-label", "Swap with Hierarchy Above"); - attr(button0, "class", "svelte-1e9on6f"); - attr(button1, "aria-label", "Swap with Hierarchy Below"); - attr(button1, "class", "svelte-1e9on6f"); - attr(button2, "aria-label", "Remove Hierarchy"); - attr(button2, "class", "svelte-1e9on6f"); - attr(span, "class", "BC-Buttons"); - attr(summary, "class", "svelte-1e9on6f"); - attr(details2, "class", "BC-Hier-Details svelte-1e9on6f"); + t = space(); + attr(div, "class", "BC-trail-view-path flex gap-1.5"); }, m(target, anchor) { - insert(target, details2, anchor); - append(details2, summary); - append(summary, t0); - append(summary, t1); - append(summary, span); - append(span, button0); - append(span, t3); - append(span, button1); - append(span, t5); - append(span, button2); - append(details2, t7); + insert(target, div, anchor); for (let i = 0; i < each_blocks.length; i += 1) { if (each_blocks[i]) { - each_blocks[i].m(details2, null); + each_blocks[i].m(div, null); } } - append(details2, t8); - if (!mounted) { - dispose = [ - listen(button0, "click", click_handler_3), - listen(button1, "click", click_handler_4), - listen(button2, "click", click_handler_5) - ]; - mounted = true; - } + append(div, t); + current = true; }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (dirty & /*currHiers*/ - 2 && t0_value !== (t0_value = DIRECTIONS.map(func).map(func_1).join(" ") + "")) - set_data(t0, t0_value); - if (dirty & /*DIRECTIONS, currHiers, splitAndTrim, update, settings, plugin, ARROW_DIRECTIONS*/ - 15) { - each_value_1 = DIRECTIONS; + p(ctx2, dirty) { + if (dirty & /*reversed, plugin*/ + 3) { + each_value_1 = ensure_array_like( + /*path*/ + ctx2[3] + ); let i; for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_15(ctx, each_value_1, i); + const child_ctx = get_each_context_15(ctx2, each_value_1, i); if (each_blocks[i]) { each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); } else { each_blocks[i] = create_each_block_15(child_ctx); each_blocks[i].c(); - each_blocks[i].m(details2, t8); + transition_in(each_blocks[i], 1); + each_blocks[i].m(div, t); } } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); + group_outros(); + for (i = each_value_1.length; i < each_blocks.length; i += 1) { + out(i); } - each_blocks.length = each_value_1.length; - } - }, - d(detaching) { - if (detaching) - detach(details2); - destroy_each(each_blocks, detaching); - mounted = false; - run_all(dispose); - } - }; -} -function create_fragment16(ctx) { - let div4; - let div3; - let button0; - let div0; - let faplus; - let t0; - let button1; - let div1; - let faregtrashalt; - let t1; - let button2; - let div2; - let falistul; - let t2; - let current; - let mounted; - let dispose; - faplus = new FaPlus_default({}); - faregtrashalt = new FaRegTrashAlt_default({}); - falistul = new FaListUl_default({}); - let each_value = ( - /*currHiers*/ - ctx[1] - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block6(get_each_context6(ctx, each_value, i)); - } - return { - c() { - div4 = element("div"); - div3 = element("div"); - button0 = element("button"); - div0 = element("div"); - create_component(faplus.$$.fragment); - t0 = space(); - button1 = element("button"); - div1 = element("div"); - create_component(faregtrashalt.$$.fragment); - t1 = space(); - button2 = element("button"); - div2 = element("div"); - create_component(falistul.$$.fragment); - t2 = space(); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - attr(div0, "class", "icon svelte-1e9on6f"); - attr(button0, "aria-label", "Add New Hierarchy"); - attr(div1, "class", "icon svelte-1e9on6f"); - attr(button1, "aria-label", "Reset All Hierarchies"); - attr(div2, "class", "icon svelte-1e9on6f"); - attr(button2, "aria-label", "Show Hierarchies"); - attr(div3, "class", "BC-Buttons svelte-1e9on6f"); - }, - m(target, anchor) { - insert(target, div4, anchor); - append(div4, div3); - append(div3, button0); - append(button0, div0); - mount_component(faplus, div0, null); - append(div3, t0); - append(div3, button1); - append(button1, div1); - mount_component(faregtrashalt, div1, null); - append(div3, t1); - append(div3, button2); - append(button2, div2); - mount_component(falistul, div2, null); - append(div4, t2); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(div4, null); - } - } - current = true; - if (!mounted) { - dispose = [ - listen( - button0, - "click", - /*click_handler*/ - ctx[4] - ), - listen( - button1, - "click", - /*click_handler_1*/ - ctx[5] - ), - listen( - button2, - "click", - /*click_handler_2*/ - ctx[6] - ) - ]; - mounted = true; - } - }, - p(ctx2, [dirty]) { - if (dirty & /*DIRECTIONS, currHiers, splitAndTrim, update, settings, plugin, ARROW_DIRECTIONS, swapItems*/ - 15) { - each_value = /*currHiers*/ - ctx2[1]; - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context6(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block6(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(div4, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value.length; + check_outros(); } }, i(local) { if (current) return; - transition_in(faplus.$$.fragment, local); - transition_in(faregtrashalt.$$.fragment, local); - transition_in(falistul.$$.fragment, local); + for (let i = 0; i < each_value_1.length; i += 1) { + transition_in(each_blocks[i]); + } current = true; }, o(local) { - transition_out(faplus.$$.fragment, local); - transition_out(faregtrashalt.$$.fragment, local); - transition_out(falistul.$$.fragment, local); + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } current = false; }, d(detaching) { - if (detaching) - detach(div4); - destroy_component(faplus); - destroy_component(faregtrashalt); - destroy_component(falistul); - destroy_each(each_blocks, detaching); - mounted = false; - run_all(dispose); - } - }; -} -var func_1 = (dirFields) => `(${dirFields})`; -function instance16($$self, $$props, $$invalidate) { - var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - ; - ; - let { plugin } = $$props; - const { settings } = plugin; - let currHiers = [...plugin.settings.userHiers]; - function update2(currHiers2) { - return __awaiter(this, void 0, void 0, function* () { - $$invalidate(0, plugin.settings.userHiers = currHiers2, plugin); - yield plugin.saveSettings(); - }); - } - const click_handler = async () => $$invalidate(1, currHiers = [...currHiers, blankUserHier()]); - const click_handler_1 = async () => { - if (window.confirm("Are you sure you want to reset all hierarchies?")) { - $$invalidate(1, currHiers = []); - await update2(currHiers); - } - }; - const click_handler_2 = () => new import_obsidian30.Notice(currHiers.map(hierToStr).join("\n\n")); - const func = (hier, dir) => { - var _a, _b; - return (_b = (_a = hier[dir]) == null ? void 0 : _a.join(", ")) != null ? _b : ""; - }; - const click_handler_3 = async (i) => { - $$invalidate(1, currHiers = swapItems(i, i - 1, currHiers)); - await update2(currHiers); - }; - const click_handler_4 = async (i) => { - $$invalidate(1, currHiers = swapItems(i, i + 1, currHiers)); - await update2(currHiers); - }; - const click_handler_5 = async (i) => { - const oldHier = currHiers.splice(i, 1)[0]; - oldHier.up.forEach((upField) => { - const index2 = settings.limitTrailCheckboxes.indexOf(upField); - if (index2 > -1) - settings.limitTrailCheckboxes.splice(index2, 1); - }); - DIRECTIONS.forEach((dir) => { - oldHier[dir].forEach((field) => { - const indexI = settings.limitJumpToFirstFields.indexOf(field); - if (indexI > -1) - settings.limitJumpToFirstFields.splice(indexI, 1); - const indexJ = settings.limitWriteBCCheckboxes.indexOf(field); - if (indexJ > -1) - settings.limitJumpToFirstFields.splice(indexJ, 1); - }); - }); - $$invalidate(1, currHiers); - await update2(currHiers); - }; - const change_handler = async (i, dir, e) => { - const { value } = e.target; - const splits = splitAndTrim(value); - $$invalidate(1, currHiers[i][dir] = splits, currHiers); - await update2(currHiers); - splits.forEach((split) => { - if (dir === "up" && !settings.limitTrailCheckboxes.includes(split)) - settings.limitTrailCheckboxes.push(split); - if (!settings.limitJumpToFirstFields.includes(split)) - settings.limitJumpToFirstFields.push(split); - if (!settings.limitWriteBCCheckboxes.includes(split)) - settings.limitWriteBCCheckboxes.push(split); - }); - await plugin.saveSettings(); - }; - $$self.$$set = ($$props2) => { - if ("plugin" in $$props2) - $$invalidate(0, plugin = $$props2.plugin); - }; - return [ - plugin, - currHiers, - settings, - update2, - click_handler, - click_handler_1, - click_handler_2, - func, - click_handler_3, - click_handler_4, - click_handler_5, - change_handler - ]; -} -var UserHierarchies = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance16, create_fragment16, safe_not_equal, { plugin: 0 }, add_css11); - } -}; -var UserHierarchies_default = UserHierarchies; - -// src/Settings/HierarchySettings.ts -function addHierarchySettings(plugin, containerEl) { - const fieldDetails = details("Hierarchies", containerEl); - fieldDetails.createEl("p", { - text: "Here you can set up different hierarchies you use in your vault. To add a new hierarchy, click the plus button. Then, fill in the field names of your hierachy into the 5 boxes that appear." - }); - fieldDetails.createEl("p", { - text: "For each direction, you can enter multiple field names in a comma-seperated list. For example: `parent, broader, upper`" - }); - new UserHierarchies_default({ - target: fieldDetails, - props: { plugin } - }); -} - -// src/Components/Checkboxes.svelte -var import_loglevel19 = __toESM(require_loglevel()); -function add_css12(target) { - append_styles(target, "svelte-d1my4i", ".grid.svelte-d1my4i{display:grid;grid-template-columns:repeat(auto-fit, minmax(100px, 1fr))}"); -} -function get_each_context7(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[12] = list[i]; - return child_ctx; -} -function create_each_block7(ctx) { - let div; - let label; - let input; - let input_value_value; - let value_has_changed = false; - let t0; - let t1_value = ( - /*option*/ - ctx[12] + "" - ); - let t1; - let t2; - let binding_group; - let mounted; - let dispose; - binding_group = init_binding_group( - /*$$binding_groups*/ - ctx[8][0] - ); - return { - c() { - div = element("div"); - label = element("label"); - input = element("input"); - t0 = space(); - t1 = text(t1_value); - t2 = space(); - attr(input, "type", "checkbox"); - input.__value = input_value_value = /*option*/ - ctx[12]; - input.value = input.__value; - binding_group.p(input); - }, - m(target, anchor) { - insert(target, div, anchor); - append(div, label); - append(label, input); - input.checked = ~/*selected*/ - (ctx[1] || []).indexOf(input.__value); - append(label, t0); - append(label, t1); - append(div, t2); - if (!mounted) { - dispose = [ - listen( - input, - "change", - /*input_change_handler*/ - ctx[7] - ), - listen( - input, - "change", - /*change_handler*/ - ctx[9] - ) - ]; - mounted = true; - } - }, - p(ctx2, dirty) { - if (dirty & /*options*/ - 1 && input_value_value !== (input_value_value = /*option*/ - ctx2[12])) { - input.__value = input_value_value; - input.value = input.__value; - value_has_changed = true; - } - if (value_has_changed || dirty & /*selected, options*/ - 3) { - input.checked = ~/*selected*/ - (ctx2[1] || []).indexOf(input.__value); - } - if (dirty & /*options*/ - 1 && t1_value !== (t1_value = /*option*/ - ctx2[12] + "")) - set_data(t1, t1_value); - }, - d(detaching) { - if (detaching) + if (detaching) { detach(div); - binding_group.r(); - mounted = false; - run_all(dispose); + } + destroy_each(each_blocks, detaching); } }; } -function create_fragment17(ctx) { - let div0; - let button; - let t0; - let t1_value = ( - /*toNone*/ - ctx[2] ? "None" : "All" - ); - let t1; - let t2; - let div1; - let mounted; - let dispose; - let each_value = ( - /*options*/ - ctx[0] +function create_fragment40(ctx) { + let div; + let current; + let each_value = ensure_array_like( + /*reversed*/ + ctx[1] ); let each_blocks = []; for (let i = 0; i < each_value.length; i += 1) { each_blocks[i] = create_each_block7(get_each_context7(ctx, each_value, i)); } - return { - c() { - div0 = element("div"); - button = element("button"); - t0 = text("Select "); - t1 = text(t1_value); - t2 = space(); - div1 = element("div"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - attr(div1, "class", "grid svelte-d1my4i"); - }, - m(target, anchor) { - insert(target, div0, anchor); - append(div0, button); - append(button, t0); - append(button, t1); - insert(target, t2, anchor); - insert(target, div1, anchor); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(div1, null); - } - } - if (!mounted) { - dispose = listen( - button, - "click", - /*click_handler*/ - ctx[6] - ); - mounted = true; - } - }, - p(ctx2, [dirty]) { - if (dirty & /*toNone*/ - 4 && t1_value !== (t1_value = /*toNone*/ - ctx2[2] ? "None" : "All")) - set_data(t1, t1_value); - if (dirty & /*options, selected, save*/ - 11) { - each_value = /*options*/ - ctx2[0]; - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context7(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block7(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(div1, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value.length; - } - }, - i: noop, - o: noop, - d(detaching) { - if (detaching) - detach(div0); - if (detaching) - detach(t2); - if (detaching) - detach(div1); - destroy_each(each_blocks, detaching); - mounted = false; - dispose(); - } - }; -} -function instance17($$self, $$props, $$invalidate) { - let toNone; - var __awaiter = this && this.__awaiter || function(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - ; - let { plugin } = $$props; - let { settingName } = $$props; - let { options } = $$props; - const { settings } = plugin; - let selected = settings[settingName]; - function save() { - return __awaiter(this, void 0, void 0, function* () { - if (settings[settingName] === void 0) - return (0, import_loglevel19.warn)(settingName + " not found in BC settings"); - settings[settingName] = selected; - yield plugin.saveSettings(); - yield refreshIndex(plugin); - }); - } - const $$binding_groups = [[]]; - const click_handler = async () => { - if (toNone) - $$invalidate(1, selected = []); - else - $$invalidate(1, selected = options); - await save(); - }; - function input_change_handler() { - selected = get_binding_group_value($$binding_groups[0], this.__value, this.checked); - $$invalidate(1, selected); - } - const change_handler = async () => await save(); - $$self.$$set = ($$props2) => { - if ("plugin" in $$props2) - $$invalidate(4, plugin = $$props2.plugin); - if ("settingName" in $$props2) - $$invalidate(5, settingName = $$props2.settingName); - if ("options" in $$props2) - $$invalidate(0, options = $$props2.options); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*selected*/ - 2) { - $: - $$invalidate(2, toNone = selected.length === 0 ? false : true); - } - }; - return [ - options, - selected, - toNone, - save, - plugin, - settingName, - click_handler, - input_change_handler, - $$binding_groups, - change_handler - ]; -} -var Checkboxes = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance17, create_fragment17, safe_not_equal, { plugin: 4, settingName: 5, options: 0 }, add_css12); - } -}; -var Checkboxes_default = Checkboxes; - -// src/Settings/JumpToNextSettings.ts -function addJumpToNextSettings(plugin, viewDetails) { - const { settings } = plugin; - const jumpToDirDetails = subDetails("Jump to Next Direction", viewDetails); - jumpToDirDetails.createDiv({ cls: "setting-item-name", text: "Limit which fields to jump to" }); - new Checkboxes_default({ - target: jumpToDirDetails, - props: { - plugin, - settingName: "limitJumpToFirstFields", - options: getFields(settings.userHiers) - } + const out = (i) => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; }); -} - -// src/Settings/MatrixViewSettings.ts -var import_obsidian31 = require("obsidian"); -function addMatrixViewSettings(plugin, viewDetails) { - const { settings } = plugin; - const MLViewDetails = subDetails("Matrix View", viewDetails); - new import_obsidian31.Setting(MLViewDetails).setName("Show all field names or just relation types").setDesc( - fragWithHTML( - "Show the list of metadata fields for each relation type (e.g. parent, broader, upper), or just the name of the relation type, i.e. 'Parent', 'Sibling', 'Child'.
\u2705 = show the full list." - ) - ).addToggle( - (toggle) => toggle.setValue(settings.showNameOrType).onChange(async (value) => { - settings.showNameOrType = value; - await plugin.saveSettings(); - await plugin.getActiveTYPEView(MATRIX_VIEW).draw(); - }) - ); - new import_obsidian31.Setting(MLViewDetails).setName("Show Relationship Type").setDesc( - fragWithHTML( - "Show whether a link is real or implied." - ) - ).addToggle( - (toggle) => toggle.setValue(settings.showRelationType).onChange(async (value) => { - settings.showRelationType = value; - await plugin.saveSettings(); - await plugin.getActiveTYPEView(MATRIX_VIEW).draw(); - }) - ); - new import_obsidian31.Setting(MLViewDetails).setName("Directions Order").setDesc( - fragWithHTML( - `Change the order in which the directions appear in the Matrix view.
The default is "up, same, down, next, prev" (01234). -
    -
  • 0 \u2192 up
  • -
  • 1 \u2192 same
  • -
  • 2 \u2192 down
  • -
  • 3 \u2192 next
  • -
  • 4 \u2192 prev
  • -
- Note: You can remove numbers to hide those directions in the Matrix View. For example, 02 will only show up and down, in that order.` - ) - ).addText((text2) => { - text2.setValue(settings.squareDirectionsOrder.join("")); - text2.inputEl.onblur = async () => { - const value = text2.getValue(); - const values = value.split(""); - if (value.length <= 5 && values.every((value2) => ["0", "1", "2", "3", "4"].includes(value2))) { - settings.squareDirectionsOrder = values.map( - (order) => Number.parseInt(order) - ); - await plugin.saveSettings(); - await plugin.getActiveTYPEView(MATRIX_VIEW).draw(); - } else { - new import_obsidian31.Notice( - 'The value must be a 5 digit number using only the digits "0", "1", "2", "3", "4"' - ); - } - }; - }); - new import_obsidian31.Setting(MLViewDetails).setName("Enable Alphabetical Sorting").setDesc( - "By default, items in the Matrix view are sorted by the order they appear in your notes. Toggle this on to enable alphabetical sorting." - ).addToggle( - (toggle) => toggle.setValue(settings.enableAlphaSort).onChange(async (value) => { - settings.enableAlphaSort = value; - await plugin.saveSettings(); - await plugin.getActiveTYPEView(MATRIX_VIEW).draw(); - }) - ); - new import_obsidian31.Setting(MLViewDetails).setName("Sort Alphabetically Ascending/Descending").setDesc( - "Sort square items alphabetically in Ascending (\u2705) or Descending (\u274C) order." - ).addToggle( - (toggle) => toggle.setValue(settings.alphaSortAsc).onChange(async (value) => { - settings.alphaSortAsc = value; - await plugin.saveSettings(); - await plugin.getActiveTYPEView(MATRIX_VIEW).draw(); - }) - ); - new import_obsidian31.Setting(MLViewDetails).setName("Sort by note name, but show alias").setDesc( - "When this is turned off, notes will first be sorted by their alias, and then by their name if no alias is found. Turn this on to sort by note name always, but still show the alias in the results." - ).addToggle( - (toggle) => toggle.setValue(settings.sortByNameShowAlias).onChange(async (value) => { - settings.sortByNameShowAlias = value; - await plugin.saveSettings(); - await plugin.getActiveTYPEView(MATRIX_VIEW).draw(); - }) - ); - new import_obsidian31.Setting(MLViewDetails).setName("Show Implied Relations").setDesc("Whether or not to show implied relations at all.").addToggle( - (toggle) => toggle.setValue(settings.showImpliedRelations).onChange(async (value) => { - settings.showImpliedRelations = value; - await plugin.saveSettings(); - await plugin.getActiveTYPEView(MATRIX_VIEW).draw(); - }) - ); - new import_obsidian31.Setting(MLViewDetails).setName("Open View in Right or Left side").setDesc( - "When loading the matrix view, should it open on the left or right side leaf? \u2705 = Right, \u274C = Left." - ).addToggle( - (toggle) => toggle.setValue(settings.rlLeaf).onChange(async (value) => { - settings.rlLeaf = value; - await plugin.saveSettings(); - app.workspace.detachLeavesOfType(MATRIX_VIEW); - await openView( - MATRIX_VIEW, - MatrixView, - value ? "right" : "left" - ); - }) - ); -} - -// src/Settings/NoSystemSettings.ts -var import_obsidian32 = require("obsidian"); -function addNoSystemSettings(plugin, alternativeHierarchyDetails) { - const { settings } = plugin; - const { userHiers } = settings; - const fields = getFields(userHiers); - const noSystemDetails = subDetails( - "Naming System", - alternativeHierarchyDetails - ); - new import_obsidian32.Setting(noSystemDetails).setName("Naming System Regex").setDesc( - fragWithHTML( - "If you name your notes using the Johnny Decimal System or a related system, enter a regular expression matching the longest possible naming system you use. The regex should only match the naming system part of the name, not the actual note title.
For example, if you use the Johnny Decimal System, you might use /^\\d\\.\\d\\.\\w/g to match the note named 1.2.a Cars.
If you don't want to choose a default, select the blank option at the bottom of the list." - ) - ).addText((text2) => { - text2.setValue(settings.namingSystemRegex); - text2.inputEl.onblur = async () => { - const value = text2.getValue(); - if (value === "" || strToRegex(value)) { - settings.namingSystemRegex = value; - await plugin.saveSettings(); - await refreshIndex(plugin); - } else { - new import_obsidian32.Notice("Invalid Regex"); - } - }; - }); - new import_obsidian32.Setting(noSystemDetails).setName("Naming System Delimiter").setDesc( - fragWithHTML( - "What character do you use to split up your naming convention? For example, if you use 1.2.a.b, then your delimiter is a period (.)." - ) - ).addText((text2) => { - text2.setValue(settings.namingSystemSplit); - text2.inputEl.onblur = async () => { - const value = text2.getValue(); - settings.namingSystemSplit = value; - await plugin.saveSettings(); - await refreshIndex(plugin); - }; - }); - new import_obsidian32.Setting(noSystemDetails).setName("Naming System Field").setDesc("Which field should Breadcrumbs use for Naming System notes?").addDropdown((dd) => { - fields.forEach((field) => { - dd.addOption(field, field); - }); - dd.setValue(settings.namingSystemField); - dd.onChange(async (value) => { - settings.namingSystemField = value; - await plugin.saveSettings(); - await refreshIndex(plugin); - }); - }); - new import_obsidian32.Setting(noSystemDetails).setName("Naming System Ends with Delimiter").setDesc( - fragWithHTML( - "Does your naming convention end with the delimiter? For example, 1.2. Note does end with the delimiter, but 1.2 Note does not.
For matching purposes, it is highly recommended to name your notes with the delimiter on the end. Only turn this setting on if you do name your notes this way, but know that the results may not be as accurate if you don't." - ) - ).addToggle( - (tog) => tog.setValue(settings.namingSystemEndsWithDelimiter).onChange(async (value) => { - settings.namingSystemEndsWithDelimiter = value; - await plugin.saveSettings(); - await refreshIndex(plugin); - }) - ); -} - -// src/Settings/RegexNoteSettings.ts -var import_obsidian33 = require("obsidian"); -function addRegexNoteSettings(plugin, alternativeHierarchyDetails) { - const { settings } = plugin; - const regexNoteDetails = subDetails( - "Regex Notes", - alternativeHierarchyDetails - ); - new import_obsidian33.Setting(regexNoteDetails).setName("Default Regex Note Field").setDesc( - fragWithHTML( - "By default, regex notes use the first field in your hierarchies (usually an \u2191 field). Choose a different one to use by default, without having to specify BC-regex-note-field: {field}.
If you don't want to choose a default, select the blank option at the bottom of the list." - ) - ).addDropdown((dd) => { - const options = {}; - getFields(settings.userHiers).forEach( - (field) => options[field] = field - ); - dd.addOptions(Object.assign(options, { "": "" })).setValue(settings.regexNoteField).onChange(async (field) => { - settings.regexNoteField = field; - await plugin.saveSettings(); - await refreshIndex(plugin); - }); - }); -} - -// src/Settings/RelationSettings.ts -var import_obsidian34 = require("obsidian"); -function addRelationSettings(plugin, containerEl) { - const { settings } = plugin; - const relationDetails = details("Relationships", containerEl); - function mermaidDiagram(diagramStr) { - import_obsidian34.MarkdownRenderer.renderMarkdown( - diagramStr, - relationDetails.createDiv(), - "", - null - ); - } - relationDetails.createEl("p", { - text: "Here you can toggle on/off different types of implied relationships. All of your explicit (real) relationships will still show, but you can choose which implied ones get filled in.\nAll implied relationships are given a CSS class of the type of implied relation, so you can style them differently. For example `.BC-Aunt`." - }); - new import_obsidian34.Setting(relationDetails).setName("Same Parent is Siblings").setDesc("If one note shares a parent with another, treat them as siblings").addToggle( - (tg) => tg.setValue(settings.impliedRelations.sameParentIsSibling).onChange(async (val) => { - settings.impliedRelations.sameParentIsSibling = val; - await plugin.saveSettings(); - await refreshIndex(plugin); - }) - ); - mermaidDiagram("```mermaid\nflowchart LR\nMe -->|up| Dad\nSister -->|up| Dad\nMe <-.->|same| Sister\n```"); - new import_obsidian34.Setting(relationDetails).setName("Siblings' Siblings").setDesc("Treat your siblings' siblings as your siblings").addToggle( - (tg) => tg.setValue(settings.impliedRelations.siblingsSiblingIsSibling).onChange(async (val) => { - settings.impliedRelations.siblingsSiblingIsSibling = val; - await plugin.saveSettings(); - await refreshIndex(plugin); - }) - ); - mermaidDiagram("```mermaid\nflowchart LR\nMe -->|same| Sister\nMe -->|same| Brother\nSister <-.->|same| Brother\n```"); - new import_obsidian34.Setting(relationDetails).setName("Siblings' Parent is Parent").setDesc("Your siblings' parents are your parents").addToggle( - (tg) => tg.setValue(settings.impliedRelations.siblingsParentIsParent).onChange(async (val) => { - settings.impliedRelations.siblingsParentIsParent = val; - await plugin.saveSettings(); - await refreshIndex(plugin); - }) - ); - mermaidDiagram("```mermaid\nflowchart LR\nSister -->|up| Dad\nSister <-->|same| Me\nMe -.->|up| Dad\n```"); - new import_obsidian34.Setting(relationDetails).setName("Aunt/Uncle").setDesc("Treat your parent's siblings as your parents (aunts/uncles)").addToggle( - (tg) => tg.setValue(settings.impliedRelations.parentsSiblingsIsParents).onChange(async (val) => { - settings.impliedRelations.parentsSiblingsIsParents = val; - await plugin.saveSettings(); - await refreshIndex(plugin); - }) - ); - mermaidDiagram("```mermaid\nflowchart LR\nMe -->|up| Dad\nDad -->|same| Uncle\nMe -.->|up| Uncle\n```"); - new import_obsidian34.Setting(relationDetails).setName("Cousins").setDesc( - "Treat the cousins of a note as siblings (parents' siblings' children are cousins)" - ).addToggle( - (tg) => tg.setValue(settings.impliedRelations.cousinsIsSibling).onChange(async (val) => { - settings.impliedRelations.cousinsIsSibling = val; - await plugin.saveSettings(); - await refreshIndex(plugin); - }) - ); - mermaidDiagram("```mermaid\nflowchart LR\nMe -->|up| Dad\nDad -->|same| Uncle\nUncle -->|down| Cousin\nMe <-.->|same| Cousin\n```"); - new import_obsidian34.Setting(relationDetails).setName("Make Current Note an Implied Sibling").setDesc( - "Techincally, the current note is always it's own implied sibling. By default, it is not show as such. Toggle this on to make it show." - ).addToggle( - (toggle) => toggle.setValue(settings.treatCurrNodeAsImpliedSibling).onChange(async (value) => { - settings.treatCurrNodeAsImpliedSibling = value; - await plugin.saveSettings(); - await refreshIndex(plugin); - }) - ); -} - -// src/Settings/TagNoteSettings.ts -var import_obsidian35 = require("obsidian"); -function addTagNoteSettings(plugin, alternativeHierarchyDetails) { - const { settings } = plugin; - const tagNoteDetails = subDetails("Tag Notes", alternativeHierarchyDetails); - new import_obsidian35.Setting(tagNoteDetails).setName("Default Tag Note Field").setDesc( - fragWithHTML( - "By default, tag notes use the first field in your hierarchies (usually an \u2191 field). Choose a different one to use by default, without having to specify BC-tag-note-field: {field}.
If you don't want to choose a default, select the blank option at the bottom of the list." - ) - ).addDropdown((dd) => { - const options = {}; - getFields(settings.userHiers).forEach( - (field) => options[field] = field - ); - dd.addOptions(Object.assign(options, { "": "" })).setValue(settings.tagNoteField).onChange(async (field) => { - settings.tagNoteField = field; - await plugin.saveSettings(); - await refreshIndex(plugin); - }); - }); -} - -// src/Settings/ThreadingSettings.ts -var import_obsidian36 = require("obsidian"); -function addThreadingSettings(plugin, cmdsDetails) { - const { settings } = plugin; - const threadingDetails = subDetails("Threading", cmdsDetails); - threadingDetails.createDiv({ - text: "Settings for the commands `Create new from current note`" - }); - new import_obsidian36.Setting(threadingDetails).setName("Open new threads in new pane or current pane").addToggle((tog) => { - tog.setValue(settings.threadIntoNewPane); - tog.onChange(async (value) => { - settings.threadIntoNewPane = value; - await plugin.saveSettings(); - }); - }); - new import_obsidian36.Setting(threadingDetails).setName("Thread under Cursor").setDesc( - fragWithHTML( - "If the setting Write Breadcrumbs Inline is enabled, where should the new Breadcrumb be added to the current note? \u2705 = Under the cursor, \u274C = At the top of the note (under the yaml, if applicable)" - ) - ).addToggle((tog) => { - tog.setValue(settings.threadUnderCursor); - tog.onChange(async (value) => { - settings.threadUnderCursor = value; - await plugin.saveSettings(); - }); - }); - new import_obsidian36.Setting(threadingDetails).setName("New Note Name Template").setDesc( - fragWithHTML( - `When threading into a new note, choose the template for the new note name.
- Options include:
-
    -
  • {{field}}: the field being thread into
  • -
  • {{dir}}: the direction being thread into
  • -
  • {{current}}: the current note name
  • -
  • {{date}}: the current date (Set the format in the setting below)
  • -
` - ) - ).addText((text2) => { - text2.setValue(settings.threadingTemplate); - text2.inputEl.onblur = async () => { - const value = text2.getValue(); - if (ILLEGAL_FILENAME_CHARS.some((char) => value.includes(char))) { - new import_obsidian36.Notice( - `File name cannot contain any of these characters: ${ILLEGAL_FILENAME_CHARS.join( - " " - )}` - ); - text2.setValue(settings.threadingTemplate); - } else { - settings.threadingTemplate = value; - await plugin.saveSettings(); - } - }; - }); - new import_obsidian36.Setting(threadingDetails).setName("Date Format").setDesc("The date format used in the Threading Template (setting above)").addMomentFormat((format2) => { - format2.setDefaultFormat(DEFAULT_SETTINGS.dateFormat).setValue(settings.dateFormat).onChange(async (value) => { - settings.dateFormat = value; - await plugin.saveSettings(); - }); - }); - const threadDirTemplatesSetting = new import_obsidian36.Setting(threadingDetails).setClass("thread-dir-templates").setName("Templater Template per Direction").setDesc( - fragWithHTML( - `For each direction to be thread into, choose a Templater template to insert into the new note.
- Give the basename, or the full file path (e.g. Templates/Parent Template).` - ) - ); - DIRECTIONS.forEach( - (dir) => threadDirTemplatesSetting.addText((text2) => { - text2.setPlaceholder(ARROW_DIRECTIONS[dir]).setValue(settings.threadingDirTemplates[dir]); - text2.inputEl.onblur = async () => { - settings.threadingDirTemplates[dir] = text2.getValue(); - await plugin.saveSettings(); - }; - }) - ); -} - -// src/Settings/TrailSettings.ts -var import_obsidian37 = require("obsidian"); -function addTrailViewSettings(plugin, viewDetails) { - const { settings } = plugin; - const trailDetails = subDetails("Trail/Grid/Juggl", viewDetails); - new import_obsidian37.Setting(trailDetails).setName("Show Breadcrumbs in Edit/Live-Preview Mode").setDesc( - "It always shows in preview mode, but should it also show in the other two?" - ).addToggle( - (toggle) => toggle.setValue(settings.showBCsInEditLPMode).onChange(async (value) => { - settings.showBCsInEditLPMode = value; - await plugin.saveSettings(); - await drawTrail(plugin); - }) - ); - trailDetails.createEl("hr"); - trailDetails.createDiv({ - cls: "setting-item-name", - text: "Limit Trail View to only show certain fields" - }); - new Checkboxes_default({ - target: trailDetails, - props: { - plugin, - settingName: "limitTrailCheckboxes", - options: getFields(settings.userHiers, "up") - } - }); - const viewsToShow = new import_obsidian37.Setting(trailDetails).setName("Views to show").setDesc( - "Choose which of the views to show at the top of the note. Juggl View requires the Juggl plugin." - ).addToggle((toggle) => { - toggle.setTooltip("Trail view").setValue(settings.showTrail).onChange(async (value) => { - settings.showTrail = value; - await plugin.saveSettings(); - await drawTrail(plugin); - }); - }).addToggle((toggle) => { - toggle.setTooltip("Grid view").setValue(settings.showGrid).onChange(async (value) => { - settings.showGrid = value; - await plugin.saveSettings(); - await drawTrail(plugin); - }); - }).addToggle((toggle) => { - toggle.setTooltip("Next/Previous view").setValue(settings.showPrevNext).onChange(async (value) => { - settings.showPrevNext = value; - await plugin.saveSettings(); - await drawTrail(plugin); - }); - }); - if (app.plugins.plugins.juggl !== void 0) { - viewsToShow.addToggle((toggle) => { - toggle.setTooltip("Juggl view").setValue(settings.showJuggl).onChange(async (value) => { - settings.showJuggl = value; - await plugin.saveSettings(); - await drawTrail(plugin); - }); - }); - } - new import_obsidian37.Setting(trailDetails).setName("Grid view depth").setDesc("Limit the initial depth of the grid view").addSlider((slider) => { - slider.setLimits(0, 25, 1).setValue(settings.gridDefaultDepth).setDynamicTooltip(); - slider.sliderEl.onblur = async () => { - settings.gridDefaultDepth = slider.getValue(); - await plugin.saveSettings(); - await drawTrail(plugin); - }; - }); - new import_obsidian37.Setting(trailDetails).setName("Index Note(s)").setDesc( - fragWithHTML( - "The note that all of your other notes lead back to. The parent of all your parent notes. Just enter the basename.
You can also have multiple index notes (comma-separated list).
Leaving this field empty will make the trail show all paths going as far up the parent-tree as possible." - ) - ).addText((text2) => { - text2.setPlaceholder("Index Note").setValue(settings.indexNotes.join(", ")); - text2.inputEl.onblur = async () => { - const splits = splitAndTrim(text2.getValue()); - if (splits[0] === void 0 || splits.every((index2) => isInVault(index2))) { - settings.indexNotes = splits; - await plugin.saveSettings(); - } else - new import_obsidian37.Notice("Atleast one of the notes is not in your vault"); - }; - }); - new import_obsidian37.Setting(trailDetails).setName("Shows all paths if none to index note are found").setDesc( - "If you have an index note chosen, but the trail view has no paths going up to those index notes, should it show all paths instead?" - ).addToggle( - (toggle) => toggle.setValue(settings.showAllPathsIfNoneToIndexNote).onChange(async (value) => { - settings.showAllPathsIfNoneToIndexNote = value; - await plugin.saveSettings(); - await drawTrail(plugin); - }) - ); - new import_obsidian37.Setting(trailDetails).setName("Default: All, Longest, or Shortest").setDesc( - "If multiple paths are found going up the parent tree, which of them should show?" - ).addDropdown((dd) => { - const options = {}; - TRAIL_LENGTHS.forEach((length) => { - options[length] = length; - }); - dd.addOptions(options); - dd.setValue(settings.showAll); - dd.onChange(async (val) => { - settings.showAll = val; - await plugin.saveSettings(); - await drawTrail(plugin); - }); - }); - new import_obsidian37.Setting(trailDetails).setName("Seperator").setDesc( - fragWithHTML( - "The character to show between crumbs in the breadcrumb trail. The default is \u2192" - ) - ).addText( - (text2) => text2.setPlaceholder("\u2192").setValue(settings.trailSeperator).onChange(async (value) => { - settings.trailSeperator = value; - await plugin.saveSettings(); - await drawTrail(plugin); - }) - ); - new import_obsidian37.Setting(trailDetails).setName("No path found message").setDesc( - "The text to display when no path to the index note is found, or the current note has no parent." - ).addText( - (text2) => text2.setPlaceholder("No path to index note was found").setValue(settings.noPathMessage).onChange(async (value) => { - settings.noPathMessage = value; - await plugin.saveSettings(); - await drawTrail(plugin); - }) - ); - new import_obsidian37.Setting(trailDetails).setName("Respect Readable Line Length").setDesc( - "Should the breadcrumbs trail adjust its width to the readable line length, or use as much space as possible? \u2705 = use readable line length." - ).addToggle( - (toggle) => toggle.setValue(settings.respectReadableLineLength).onChange(async (value) => { - settings.respectReadableLineLength = value; - await plugin.saveSettings(); - await drawTrail(plugin); - }) - ); - new import_obsidian37.Setting(trailDetails).setName("Show up fields in Juggl").setDesc("Juggl will show both up and down fields").addToggle((toggle) => { - toggle.setValue(settings.showUpInJuggl).onChange(async (value) => { - settings.showUpInJuggl = value; - await plugin.saveSettings(); - }); - }); - new import_obsidian37.Setting(trailDetails).setName("Juggl view layout").setDesc( - fragWithHTML( - "The layout type to use for the Juggl view.
The hierarchy layout is most natural for Breadcrumbs, but for large graphs D3 Force is recommended." - ) - ).addDropdown((dc) => { - dc.addOption("hierarchy", "Hierarchy"); - dc.addOption("d3-force", "D3 Force"); - dc.addOption("cola", "Cola Force"); - dc.addOption("grid", "Grid"); - dc.addOption("concentric", "Concentric"); - dc.setValue(settings.jugglLayout); - dc.onChange(async (value) => { - settings.jugglLayout = value; - await plugin.saveSettings(); - await drawTrail(plugin); - }); - }); -} - -// src/Settings/VisModalSettings.ts -var import_obsidian38 = require("obsidian"); -function addVisModalSettings(plugin, viewDetails) { - const { settings } = plugin; - const visModalDetails = subDetails("Visualisation Modal", viewDetails); - new import_obsidian38.Setting(visModalDetails).setName("Default Visualisation Type").setDesc("Which visualisation to show by default").addDropdown((cb) => { - VISTYPES.forEach((option) => { - cb.addOption(option, option); - }); - cb.setValue(settings.visGraph); - cb.onChange(async (value) => { - settings.visGraph = value; - await plugin.saveSettings(); - }); - }); - new import_obsidian38.Setting(visModalDetails).setName("Default Relation").setDesc("Which relation type to show first when opening the modal").addDropdown((dd) => { - RELATIONS.forEach((option) => { - dd.addOption(option, option); - }); - dd.setValue(settings.visRelation); - dd.onChange(async (value) => { - settings.visRelation = value; - await plugin.saveSettings(); - }); - }); - new import_obsidian38.Setting(visModalDetails).setName("Default Real/Closed").setDesc("Show the real or closed graph by default").addDropdown((cb) => { - REAlCLOSED.forEach((option) => { - cb.addOption(option, option); - }); - cb.setValue(settings.visClosed); - cb.onChange(async (value) => { - settings.visClosed = value; - await plugin.saveSettings(); - }); - }); - new import_obsidian38.Setting(visModalDetails).setName("Default Unlinked").setDesc("Show all nodes or only those which have links by default").addDropdown((cb) => { - ALLUNLINKED.forEach((option) => { - cb.addOption(option, option); - }); - cb.setValue(settings.visAll); - cb.onChange(async (value) => { - settings.visAll = value; - await plugin.saveSettings(); - }); - }); -} - -// src/Settings/WriteBCsSettings.ts -var import_obsidian39 = require("obsidian"); -function addWriteBCsSettings(plugin, cmdsDetails) { - const { settings } = plugin; - const writeBCsToFileDetails = subDetails( - "Write Breadcrumbs to File", - cmdsDetails - ); - writeBCsToFileDetails.createDiv({ - cls: "setting-item-name", - text: "Limit to only write certain fields" - }); - new Checkboxes_default({ - target: writeBCsToFileDetails, - props: { - plugin, - options: getFields(settings.userHiers), - settingName: "limitWriteBCCheckboxes" - } - }); - new import_obsidian39.Setting(writeBCsToFileDetails).setName("Write Inline").setDesc( - "When writing BCs to file, should they be written inline (using Dataview syntax), or into the YAML of the note?" - ).addToggle( - (toggle) => toggle.setValue(settings.writeBCsInline).onChange(async (value) => { - settings.writeBCsInline = value; - await plugin.saveSettings(); - }) - ); - new import_obsidian39.Setting(writeBCsToFileDetails).setName( - fragWithHTML( - "Show the Write Breadcrumbs to ALL Files command" - ) - ).setDesc( - "This command attempts to update ALL files with implied breadcrumbs pointing to them. So, it is not shown by default (even though it has 3 confirmation boxes to ensure you want to run it" - ).addToggle( - (toggle) => toggle.setValue(settings.showWriteAllBCsCmd).onChange(async (value) => { - settings.showWriteAllBCsCmd = value; - await plugin.saveSettings(); - }) - ); -} - -// src/Settings/BreadcrumbsSettingTab.ts -var fragWithHTML = (html) => createFragment((frag) => frag.createDiv().innerHTML = html); -var details = (text2, parent) => parent.createEl("details", {}, (d) => d.createEl("summary", { text: text2 })); -var subDetails = (text2, parent) => parent.createDiv({ - attr: { style: "padding-left: 10px;" } -}).createEl("details", {}, (d) => d.createEl("summary", { text: text2 })); -var BCSettingTab = class extends import_obsidian40.PluginSettingTab { - constructor(plugin) { - super(app, plugin); - this.plugin = plugin; - } - async display() { - const { plugin, containerEl } = this; - const { settings } = plugin; - containerEl.empty(); - containerEl.createEl("h2", { text: "Breadcrumbs Settings" }); - containerEl.addClass("BC-settings-tab"); - addHierarchySettings(plugin, containerEl); - addRelationSettings(plugin, containerEl); - addGeneralSettings(plugin, containerEl); - const viewDetails = details("Views", containerEl); - new import_obsidian40.Setting(viewDetails).setName("Open Views by Default").setDesc(fragWithHTML("Choose which of the views to open onload
Order is: Trail/Grid/Juggl, Matrix, Ducks, Tree")).addToggle( - (toggle) => toggle.setTooltip("Trail/Grid/Juggl").setValue(settings.showBCs).onChange(async (value) => { - settings.showBCs = value; - await plugin.saveSettings(); - await drawTrail(plugin); - }) - ).addToggle((toggle) => { - toggle.setTooltip("Matrix View").setValue(settings.openMatrixOnLoad).onChange(async (value) => { - settings.openMatrixOnLoad = value; - await plugin.saveSettings(); - }); - }).addToggle((toggle) => { - toggle.setTooltip("Ducks View").setValue(settings.openDuckOnLoad).onChange(async (value) => { - settings.openDuckOnLoad = value; - await plugin.saveSettings(); - }); - }).addToggle((toggle) => { - toggle.setTooltip("Tree View").setValue(settings.openDownOnLoad).onChange(async (value) => { - settings.openDownOnLoad = value; - await plugin.saveSettings(); - }); - }); - viewDetails.createEl("hr"); - addMatrixViewSettings(plugin, viewDetails); - addTrailViewSettings(plugin, viewDetails); - addVisModalSettings(plugin, viewDetails); - const alternativeHierarchyDetails = details( - "Alternative Hierarchies", - containerEl - ); - addTagNoteSettings(plugin, alternativeHierarchyDetails); - addRegexNoteSettings(plugin, alternativeHierarchyDetails); - addNoSystemSettings(plugin, alternativeHierarchyDetails); - addHierarchyNoteSettings(plugin, alternativeHierarchyDetails); - addCSVSettings(plugin, alternativeHierarchyDetails); - addDendronSettings(plugin, alternativeHierarchyDetails); - addDataviewSettings(plugin, alternativeHierarchyDetails); - addDateNoteSettings(plugin, alternativeHierarchyDetails); - const cmdsDetails = details("Commands", containerEl); - addWriteBCsSettings(plugin, cmdsDetails); - addCreateIndexSettings(plugin, cmdsDetails); - addThreadingSettings(plugin, cmdsDetails); - addJumpToNextSettings(plugin, cmdsDetails); - addDebuggingsSettings(plugin, containerEl); - new KoFi_default({ target: containerEl }); - } -}; - -// src/Views/DucksView.ts -var import_obsidian41 = require("obsidian"); - -// node_modules/svelte-icons/fa/FaInfo.svelte -function create_default_slot4(ctx) { - let path2; - return { - c() { - path2 = svg_element("path"); - attr(path2, "d", "M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"); - }, - m(target, anchor) { - insert(target, path2, anchor); - }, - p: noop, - d(detaching) { - if (detaching) - detach(path2); - } - }; -} -function create_fragment18(ctx) { - let iconbase; - let current; - const iconbase_spread_levels = [ - { viewBox: "0 0 192 512" }, - /*$$props*/ - ctx[0] - ]; - let iconbase_props = { - $$slots: { default: [create_default_slot4] }, - $$scope: { ctx } - }; - for (let i = 0; i < iconbase_spread_levels.length; i += 1) { - iconbase_props = assign(iconbase_props, iconbase_spread_levels[i]); - } - iconbase = new IconBase_default({ props: iconbase_props }); - return { - c() { - create_component(iconbase.$$.fragment); - }, - m(target, anchor) { - mount_component(iconbase, target, anchor); - current = true; - }, - p(ctx2, [dirty]) { - const iconbase_changes = dirty & /*$$props*/ - 1 ? get_spread_update(iconbase_spread_levels, [iconbase_spread_levels[0], get_spread_object( - /*$$props*/ - ctx2[0] - )]) : {}; - if (dirty & /*$$scope*/ - 2) { - iconbase_changes.$$scope = { dirty, ctx: ctx2 }; - } - iconbase.$set(iconbase_changes); - }, - i(local) { - if (current) - return; - transition_in(iconbase.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(iconbase.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(iconbase, detaching); - } - }; -} -function instance18($$self, $$props, $$invalidate) { - $$self.$$set = ($$new_props) => { - $$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); - }; - $$props = exclude_internal_props($$props); - return [$$props]; -} -var FaInfo = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance18, create_fragment18, safe_not_equal, {}); - } -}; -var FaInfo_default = FaInfo; - -// src/Components/Ducks.svelte -function add_css13(target) { - append_styles(target, "svelte-gmdm3a", ".icon.svelte-gmdm3a{color:var(--text-normal);display:inline-block;padding-top:5px !important;width:20px;height:20px}"); -} -function get_each_context8(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[13] = list[i]; - return child_ctx; -} -function create_each_block8(ctx) { - let div; - let a2; - let t0_value = ( - /*duck*/ - ctx[13] + "" - ); - let t0; - let t1; - let mounted; - let dispose; - function click_handler(...args) { - return ( - /*click_handler*/ - ctx[8]( - /*duck*/ - ctx[13], - ...args - ) - ); - } - function mouseover_handler(...args) { - return ( - /*mouseover_handler*/ - ctx[9]( - /*duck*/ - ctx[13], - ...args - ) - ); - } return { c() { div = element("div"); - a2 = element("a"); - t0 = text(t0_value); - t1 = space(); - attr(a2, "class", "internal-link"); - }, - m(target, anchor) { - insert(target, div, anchor); - append(div, a2); - append(a2, t0); - append(div, t1); - if (!mounted) { - dispose = [ - listen(div, "click", click_handler), - listen(div, "mouseover", mouseover_handler) - ]; - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (dirty & /*ducks*/ - 8 && t0_value !== (t0_value = /*duck*/ - ctx[13] + "")) - set_data(t0, t0_value); - }, - d(detaching) { - if (detaching) - detach(div); - mounted = false; - run_all(dispose); - } - }; -} -function create_fragment19(ctx) { - let div; - let h6; - let t1; - let span; - let fainfo; - let span_aria_label_value; - let t2; - let label; - let t3; - let input0; - let t4; - let input1; - let t5; - let current; - let mounted; - let dispose; - fainfo = new FaInfo_default({}); - let each_value = ( - /*ducks*/ - ctx[3] - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block8(get_each_context8(ctx, each_value, i)); - } - return { - c() { - div = element("div"); - h6 = element("h6"); - h6.textContent = "Notes without Breadcrumbs"; - t1 = space(); - span = element("span"); - create_component(fainfo.$$.fragment); - t2 = space(); - label = element("label"); - t3 = text("Filter:\n "); - input0 = element("input"); - t4 = space(); - input1 = element("input"); - t5 = space(); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(span, "class", "icon svelte-gmdm3a"); - attr(span, "aria-label", span_aria_label_value = `A Regex used to filter the results. -If 'Include' is checked, it will only show notes that match the regex. -If 'Include' is not checked, this regex will filter out notes that match it.`); - attr(input0, "type", "text"); - attr(input0, "placeholder", "Regex"); - attr(input1, "aria-label", "Include"); - attr(input1, "type", "checkbox"); - attr(div, "class", "BC-Ducks markdown-preview-view"); + attr(div, "class", "BC-trail-view flex flex-col gap-1 px-3 py-2 svelte-4v6yoh"); }, m(target, anchor) { insert(target, div, anchor); - append(div, h6); - append(div, t1); - append(div, span); - mount_component(fainfo, span, null); - append(div, t2); - append(div, label); - append(label, t3); - append(label, input0); - set_input_value( - input0, - /*query*/ - ctx[1] - ); - append(div, t4); - append(div, input1); - input1.checked = /*include*/ - ctx[2]; - append(div, t5); for (let i = 0; i < each_blocks.length; i += 1) { if (each_blocks[i]) { each_blocks[i].m(div, null); } } current = true; + }, + p(ctx2, [dirty]) { + if (dirty & /*reversed, plugin*/ + 3) { + each_value = ensure_array_like( + /*reversed*/ + ctx2[1] + ); + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context7(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block7(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(div, null); + } + } + group_outros(); + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + check_outros(); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_each(each_blocks, detaching); + } + }; +} +function instance40($$self, $$props, $$invalidate) { + let { plugin } = $$props; + let { all_paths } = $$props; + const reversed = all_paths.map((path) => [...path].reverse()); + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + if ("all_paths" in $$props2) + $$invalidate(2, all_paths = $$props2.all_paths); + }; + return [plugin, reversed, all_paths]; +} +var TrailViewPath = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance40, create_fragment40, safe_not_equal, { plugin: 0, all_paths: 2 }, add_css4); + } +}; +var TrailViewPath_default = TrailViewPath; + +// src/components/page_views/TrailView.svelte +function get_each_context8(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[18] = list[i]; + return child_ctx; +} +function get_each_context_16(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[21] = list[i]; + return child_ctx; +} +function create_if_block_33(ctx) { + let p; + let t_value = ( + /*plugin*/ + ctx[0].settings.views.page.trail.no_path_message + "" + ); + let t; + return { + c() { + p = element("p"); + t = text(t_value); + attr(p, "class", "BC-trail-view-no-path search-empty-state"); + }, + m(target, anchor) { + insert(target, p, anchor); + append(p, t); + }, + p(ctx2, dirty) { + if (dirty & /*plugin*/ + 1 && t_value !== (t_value = /*plugin*/ + ctx2[0].settings.views.page.trail.no_path_message + "")) + set_data(t, t_value); + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(p); + } + } + }; +} +function create_if_block10(ctx) { + let div1; + let select0; + let t0; + let select1; + let t1; + let mergefieldsbutton; + let updating_merge_fields; + let t2; + let div0; + let button0; + let t3; + let button0_disabled_value; + let t4; + let span; + let t5; + let t6; + let t7; + let t8; + let button1; + let t9; + let button1_disabled_value; + let t10; + let current_block_type_index; + let if_block; + let if_block_anchor; + let current; + let mounted; + let dispose; + let each_value_1 = ensure_array_like(["grid", "path"]); + let each_blocks_1 = []; + for (let i = 0; i < 2; i += 1) { + each_blocks_1[i] = create_each_block_16(get_each_context_16(ctx, each_value_1, i)); + } + let each_value = ensure_array_like(["all", "shortest", "longest"]); + let each_blocks = []; + for (let i = 0; i < 3; i += 1) { + each_blocks[i] = create_each_block8(get_each_context8(ctx, each_value, i)); + } + function mergefieldsbutton_merge_fields_binding(value) { + ctx[14](value); + } + let mergefieldsbutton_props = {}; + if ( + /*plugin*/ + ctx[0].settings.views.page.trail.merge_fields !== void 0 + ) { + mergefieldsbutton_props.merge_fields = /*plugin*/ + ctx[0].settings.views.page.trail.merge_fields; + } + mergefieldsbutton = new MergeFieldsButton_default({ props: mergefieldsbutton_props }); + binding_callbacks.push(() => bind(mergefieldsbutton, "merge_fields", mergefieldsbutton_merge_fields_binding)); + const if_block_creators = [create_if_block_13, create_if_block_23]; + const if_blocks = []; + function select_block_type_1(ctx2, dirty) { + if ( + /*plugin*/ + ctx2[0].settings.views.page.trail.format === "grid" + ) + return 0; + if ( + /*plugin*/ + ctx2[0].settings.views.page.trail.format === "path" + ) + return 1; + return -1; + } + if (~(current_block_type_index = select_block_type_1(ctx, -1))) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + } + return { + c() { + div1 = element("div"); + select0 = element("select"); + for (let i = 0; i < 2; i += 1) { + each_blocks_1[i].c(); + } + t0 = space(); + select1 = element("select"); + for (let i = 0; i < 3; i += 1) { + each_blocks[i].c(); + } + t1 = space(); + create_component(mergefieldsbutton.$$.fragment); + t2 = space(); + div0 = element("div"); + button0 = element("button"); + t3 = text("-"); + t4 = space(); + span = element("span"); + t5 = text( + /*depth*/ + ctx[2] + ); + t6 = text("/"); + t7 = text( + /*MAX_DEPTH*/ + ctx[1] + ); + t8 = space(); + button1 = element("button"); + t9 = text("+"); + t10 = space(); + if (if_block) + if_block.c(); + if_block_anchor = empty(); + attr(select0, "class", "dropdown"); + if ( + /*plugin*/ + ctx[0].settings.views.page.trail.format === void 0 + ) + add_render_callback(() => ( + /*select0_change_handler*/ + ctx[10].call(select0) + )); + attr(select1, "class", "dropdown"); + if ( + /*plugin*/ + ctx[0].settings.views.page.trail.selection === void 0 + ) + add_render_callback(() => ( + /*select1_change_handler*/ + ctx[12].call(select1) + )); + attr(button0, "class", "aspect-square text-lg"); + attr(button0, "aria-label", "Decrease max depth"); + button0.disabled = button0_disabled_value = /*depth*/ + ctx[2] <= 1; + attr(span, "class", "font-mono"); + attr(span, "aria-label", "Max depth"); + attr(button1, "class", "aspect-square text-lg"); + attr(button1, "aria-label", "Increase max depth"); + button1.disabled = button1_disabled_value = /*depth*/ + ctx[2] >= /*MAX_DEPTH*/ + ctx[1]; + attr(div0, "class", "flex items-center gap-1"); + attr(div1, "class", "mb-1 flex flex-wrap justify-between gap-3"); + toggle_class(div1, "hidden", !/*plugin*/ + ctx[0].settings.views.page.trail.show_controls); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, select0); + for (let i = 0; i < 2; i += 1) { + if (each_blocks_1[i]) { + each_blocks_1[i].m(select0, null); + } + } + select_option( + select0, + /*plugin*/ + ctx[0].settings.views.page.trail.format, + true + ); + append(div1, t0); + append(div1, select1); + for (let i = 0; i < 3; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(select1, null); + } + } + select_option( + select1, + /*plugin*/ + ctx[0].settings.views.page.trail.selection, + true + ); + append(div1, t1); + mount_component(mergefieldsbutton, div1, null); + append(div1, t2); + append(div1, div0); + append(div0, button0); + append(button0, t3); + append(div0, t4); + append(div0, span); + append(span, t5); + append(span, t6); + append(span, t7); + append(div0, t8); + append(div0, button1); + append(button1, t9); + insert(target, t10, anchor); + if (~current_block_type_index) { + if_blocks[current_block_type_index].m(target, anchor); + } + insert(target, if_block_anchor, anchor); + current = true; if (!mounted) { dispose = [ listen( - input0, - "input", - /*input0_input_handler*/ - ctx[6] + select0, + "change", + /*select0_change_handler*/ + ctx[10] ), listen( - input1, + select0, "change", - /*input1_change_handler*/ - ctx[7] + /*change_handler*/ + ctx[11] + ), + listen( + select1, + "change", + /*select1_change_handler*/ + ctx[12] + ), + listen( + select1, + "change", + /*change_handler_1*/ + ctx[13] + ), + listen( + button0, + "click", + /*click_handler*/ + ctx[15] + ), + listen( + button1, + "click", + /*click_handler_1*/ + ctx[16] ) ]; mounted = true; } }, - p(ctx2, [dirty]) { - if (dirty & /*query*/ - 2 && input0.value !== /*query*/ - ctx2[1]) { - set_input_value( - input0, - /*query*/ - ctx2[1] + p(ctx2, dirty) { + if (dirty & /*plugin*/ + 1) { + select_option( + select0, + /*plugin*/ + ctx2[0].settings.views.page.trail.format ); } - if (dirty & /*include*/ - 4) { - input1.checked = /*include*/ - ctx2[2]; + if (dirty & /*plugin*/ + 1) { + select_option( + select1, + /*plugin*/ + ctx2[0].settings.views.page.trail.selection + ); } - if (dirty & /*openOrSwitch, ducks, hoverPreview, ducksView*/ - 9) { - each_value = /*ducks*/ - ctx2[3]; - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context8(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); + const mergefieldsbutton_changes = {}; + if (!updating_merge_fields && dirty & /*plugin*/ + 1) { + updating_merge_fields = true; + mergefieldsbutton_changes.merge_fields = /*plugin*/ + ctx2[0].settings.views.page.trail.merge_fields; + add_flush_callback(() => updating_merge_fields = false); + } + mergefieldsbutton.$set(mergefieldsbutton_changes); + if (!current || dirty & /*depth*/ + 4 && button0_disabled_value !== (button0_disabled_value = /*depth*/ + ctx2[2] <= 1)) { + button0.disabled = button0_disabled_value; + } + if (!current || dirty & /*depth*/ + 4) + set_data( + t5, + /*depth*/ + ctx2[2] + ); + if (!current || dirty & /*MAX_DEPTH*/ + 2) + set_data( + t7, + /*MAX_DEPTH*/ + ctx2[1] + ); + if (!current || dirty & /*depth, MAX_DEPTH*/ + 6 && button1_disabled_value !== (button1_disabled_value = /*depth*/ + ctx2[2] >= /*MAX_DEPTH*/ + ctx2[1])) { + button1.disabled = button1_disabled_value; + } + if (!current || dirty & /*plugin*/ + 1) { + toggle_class(div1, "hidden", !/*plugin*/ + ctx2[0].settings.views.page.trail.show_controls); + } + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type_1(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if (~current_block_type_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } + } else { + if (if_block) { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + } + if (~current_block_type_index) { + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); } else { - each_blocks[i] = create_each_block8(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(div, null); + if_block.p(ctx2, dirty); } + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } else { + if_block = null; } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value.length; } }, i(local) { if (current) return; - transition_in(fainfo.$$.fragment, local); + transition_in(mergefieldsbutton.$$.fragment, local); + transition_in(if_block); current = true; }, o(local) { - transition_out(fainfo.$$.fragment, local); + transition_out(mergefieldsbutton.$$.fragment, local); + transition_out(if_block); current = false; }, d(detaching) { - if (detaching) - detach(div); - destroy_component(fainfo); + if (detaching) { + detach(div1); + detach(t10); + detach(if_block_anchor); + } + destroy_each(each_blocks_1, detaching); destroy_each(each_blocks, detaching); + destroy_component(mergefieldsbutton); + if (~current_block_type_index) { + if_blocks[current_block_type_index].d(detaching); + } mounted = false; run_all(dispose); } }; } -function instance19($$self, $$props, $$invalidate) { - let ducks; - ; - ; - let { plugin } = $$props; - let { ducksView } = $$props; - const { mainG } = plugin; - const files = app.vault.getMarkdownFiles(); - let query = ""; - let regex = new RegExp(query, "g"); - let include = true; - const getDucks = (regex2) => { - if (!regex2) - return; - return files.map((file) => file.basename).filter((name) => !mainG.neighbors(name).length && include === regex2.test(name)); - }; - function input0_input_handler() { - query = this.value; - $$invalidate(1, query); - } - function input1_change_handler() { - include = this.checked; - $$invalidate(2, include); - } - const click_handler = async (duck, e) => await openOrSwitch(duck, e); - const mouseover_handler = (duck, e) => hoverPreview(e, ducksView, duck); - $$self.$$set = ($$props2) => { - if ("plugin" in $$props2) - $$invalidate(4, plugin = $$props2.plugin); - if ("ducksView" in $$props2) - $$invalidate(0, ducksView = $$props2.ducksView); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*query*/ - 2) { - $: { - try { - const newReg = new RegExp(query, "g"); - $$invalidate(5, regex = newReg); - } catch (e) { - } - } - } - if ($$self.$$.dirty & /*regex*/ - 32) { - $: - $$invalidate(3, ducks = getDucks(regex)); - } - }; - return [ - ducksView, - query, - include, - ducks, - plugin, - regex, - input0_input_handler, - input1_change_handler, - click_handler, - mouseover_handler - ]; -} -var Ducks = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance19, create_fragment19, safe_not_equal, { plugin: 4, ducksView: 0 }, add_css13); - } -}; -var Ducks_default = Ducks; - -// src/Views/DucksView.ts -var DucksView = class extends import_obsidian41.ItemView { - constructor(leaf, plugin) { - super(leaf); - // TODO Duck icon - this.icon = DUCK_ICON; - this.plugin = plugin; - } - async onload() { - super.onload(); - await this.plugin.saveSettings(); - app.workspace.onLayoutReady(async () => { - await this.draw(); - }); - } - getViewType() { - return DUCK_VIEW; - } - getDisplayText() { - return "Breadcrumbs Ducks"; - } - async onOpen() { - } - onClose() { - var _a; - (_a = this.view) == null ? void 0 : _a.$destroy(); - return Promise.resolve(); - } - async draw() { - this.contentEl.empty(); - this.view = new Ducks_default({ - target: this.contentEl, - props: { plugin: this.plugin, ducksView: this } - }); - } -}; - -// src/Views/TreeView.ts -var import_obsidian42 = require("obsidian"); - -// src/Components/SideTree.svelte -var import_loglevel20 = __toESM(require_loglevel()); - -// node_modules/svelte-icons/fa/FaFire.svelte -function create_default_slot5(ctx) { - let path2; - return { - c() { - path2 = svg_element("path"); - attr(path2, "d", "M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z"); - }, - m(target, anchor) { - insert(target, path2, anchor); - }, - p: noop, - d(detaching) { - if (detaching) - detach(path2); - } - }; -} -function create_fragment20(ctx) { - let iconbase; - let current; - const iconbase_spread_levels = [ - { viewBox: "0 0 384 512" }, - /*$$props*/ - ctx[0] - ]; - let iconbase_props = { - $$slots: { default: [create_default_slot5] }, - $$scope: { ctx } - }; - for (let i = 0; i < iconbase_spread_levels.length; i += 1) { - iconbase_props = assign(iconbase_props, iconbase_spread_levels[i]); - } - iconbase = new IconBase_default({ props: iconbase_props }); - return { - c() { - create_component(iconbase.$$.fragment); - }, - m(target, anchor) { - mount_component(iconbase, target, anchor); - current = true; - }, - p(ctx2, [dirty]) { - const iconbase_changes = dirty & /*$$props*/ - 1 ? get_spread_update(iconbase_spread_levels, [iconbase_spread_levels[0], get_spread_object( - /*$$props*/ - ctx2[0] - )]) : {}; - if (dirty & /*$$scope*/ - 2) { - iconbase_changes.$$scope = { dirty, ctx: ctx2 }; - } - iconbase.$set(iconbase_changes); - }, - i(local) { - if (current) - return; - transition_in(iconbase.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(iconbase.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(iconbase, detaching); - } - }; -} -function instance20($$self, $$props, $$invalidate) { - $$self.$$set = ($$new_props) => { - $$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); - }; - $$props = exclude_internal_props($$props); - return [$$props]; -} -var FaFire = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance20, create_fragment20, safe_not_equal, {}); - } -}; -var FaFire_default = FaFire; - -// node_modules/svelte-icons/fa/FaRegSnowflake.svelte -function create_default_slot6(ctx) { - let path2; - return { - c() { - path2 = svg_element("path"); - attr(path2, "d", "M440.1 355.2l-39.2-23 34.1-9.3c8.4-2.3 13.4-11.1 11.1-19.6l-4.1-15.5c-2.2-8.5-10.9-13.6-19.3-11.3L343 298.2 271.2 256l71.9-42.2 79.7 21.7c8.4 2.3 17-2.8 19.3-11.3l4.1-15.5c2.2-8.5-2.7-17.3-11.1-19.6l-34.1-9.3 39.2-23c7.5-4.4 10.1-14.2 5.8-21.9l-7.9-13.9c-4.3-7.7-14-10.3-21.5-5.9l-39.2 23 9.1-34.7c2.2-8.5-2.7-17.3-11.1-19.6l-15.2-4.1c-8.4-2.3-17 2.8-19.3 11.3l-21.3 81-71.9 42.2v-84.5L306 70.4c6.1-6.2 6.1-16.4 0-22.6l-11.1-11.3c-6.1-6.2-16.1-6.2-22.2 0l-24.9 25.4V16c0-8.8-7-16-15.7-16h-15.7c-8.7 0-15.7 7.2-15.7 16v46.1l-24.9-25.4c-6.1-6.2-16.1-6.2-22.2 0L142.1 48c-6.1 6.2-6.1 16.4 0 22.6l58.3 59.3v84.5l-71.9-42.2-21.3-81c-2.2-8.5-10.9-13.6-19.3-11.3L72.7 84c-8.4 2.3-13.4 11.1-11.1 19.6l9.1 34.7-39.2-23c-7.5-4.4-17.1-1.8-21.5 5.9l-7.9 13.9c-4.3 7.7-1.8 17.4 5.8 21.9l39.2 23-34.1 9.1c-8.4 2.3-13.4 11.1-11.1 19.6L6 224.2c2.2 8.5 10.9 13.6 19.3 11.3l79.7-21.7 71.9 42.2-71.9 42.2-79.7-21.7c-8.4-2.3-17 2.8-19.3 11.3l-4.1 15.5c-2.2 8.5 2.7 17.3 11.1 19.6l34.1 9.3-39.2 23c-7.5 4.4-10.1 14.2-5.8 21.9L10 391c4.3 7.7 14 10.3 21.5 5.9l39.2-23-9.1 34.7c-2.2 8.5 2.7 17.3 11.1 19.6l15.2 4.1c8.4 2.3 17-2.8 19.3-11.3l21.3-81 71.9-42.2v84.5l-58.3 59.3c-6.1 6.2-6.1 16.4 0 22.6l11.1 11.3c6.1 6.2 16.1 6.2 22.2 0l24.9-25.4V496c0 8.8 7 16 15.7 16h15.7c8.7 0 15.7-7.2 15.7-16v-46.1l24.9 25.4c6.1 6.2 16.1 6.2 22.2 0l11.1-11.3c6.1-6.2 6.1-16.4 0-22.6l-58.3-59.3v-84.5l71.9 42.2 21.3 81c2.2 8.5 10.9 13.6 19.3 11.3L375 428c8.4-2.3 13.4-11.1 11.1-19.6l-9.1-34.7 39.2 23c7.5 4.4 17.1 1.8 21.5-5.9l7.9-13.9c4.6-7.5 2.1-17.3-5.5-21.7z"); - }, - m(target, anchor) { - insert(target, path2, anchor); - }, - p: noop, - d(detaching) { - if (detaching) - detach(path2); - } - }; -} -function create_fragment21(ctx) { - let iconbase; - let current; - const iconbase_spread_levels = [ - { viewBox: "0 0 448 512" }, - /*$$props*/ - ctx[0] - ]; - let iconbase_props = { - $$slots: { default: [create_default_slot6] }, - $$scope: { ctx } - }; - for (let i = 0; i < iconbase_spread_levels.length; i += 1) { - iconbase_props = assign(iconbase_props, iconbase_spread_levels[i]); - } - iconbase = new IconBase_default({ props: iconbase_props }); - return { - c() { - create_component(iconbase.$$.fragment); - }, - m(target, anchor) { - mount_component(iconbase, target, anchor); - current = true; - }, - p(ctx2, [dirty]) { - const iconbase_changes = dirty & /*$$props*/ - 1 ? get_spread_update(iconbase_spread_levels, [iconbase_spread_levels[0], get_spread_object( - /*$$props*/ - ctx2[0] - )]) : {}; - if (dirty & /*$$scope*/ - 2) { - iconbase_changes.$$scope = { dirty, ctx: ctx2 }; - } - iconbase.$set(iconbase_changes); - }, - i(local) { - if (current) - return; - transition_in(iconbase.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(iconbase.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(iconbase, detaching); - } - }; -} -function instance21($$self, $$props, $$invalidate) { - $$self.$$set = ($$new_props) => { - $$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); - }; - $$props = exclude_internal_props($$props); - return [$$props]; -} -var FaRegSnowflake = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance21, create_fragment21, safe_not_equal, {}); - } -}; -var FaRegSnowflake_default = FaRegSnowflake; - -// src/Components/SideTree.svelte -function add_css14(target) { - append_styles(target, "svelte-8j6nux", "button.svelte-8j6nux{display:inline;padding:1px 6px 2px 6px}.BC-downs.svelte-8j6nux{padding-left:5px}pre.svelte-8j6nux{display:inline}.is-unresolved.svelte-8j6nux{color:var(--text-muted)}.icon.svelte-8j6nux{color:var(--text-normal);display:inline-block;padding-top:5px !important;width:20px;height:20px}"); -} -function get_each_context9(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[16] = list[i]; - return child_ctx; -} -function get_each_context_16(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[19] = list[i]; - return child_ctx; -} -function create_else_block4(ctx) { - let fafire; - let current; - fafire = new FaFire_default({}); - return { - c() { - create_component(fafire.$$.fragment); - }, - m(target, anchor) { - mount_component(fafire, target, anchor); - current = true; - }, - i(local) { - if (current) - return; - transition_in(fafire.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(fafire.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(fafire, detaching); - } - }; -} -function create_if_block_15(ctx) { - let faregsnowflake; - let current; - faregsnowflake = new FaRegSnowflake_default({}); - return { - c() { - create_component(faregsnowflake.$$.fragment); - }, - m(target, anchor) { - mount_component(faregsnowflake, target, anchor); - current = true; - }, - i(local) { - if (current) - return; - transition_in(faregsnowflake.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(faregsnowflake.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(faregsnowflake, detaching); - } - }; -} function create_each_block_16(ctx) { let option; - let t_value = ( - /*direction*/ - ctx[19] + "" - ); - let t; let option_value_value; return { c() { option = element("option"); - t = text(t_value); - option.__value = option_value_value = /*direction*/ - ctx[19]; - option.value = option.__value; + option.textContent = `${/*format*/ + ctx[21]} `; + option.__value = option_value_value = /*format*/ + ctx[21]; + set_input_value(option, option.__value); }, m(target, anchor) { insert(target, option, anchor); - append(option, t); }, p: noop, d(detaching) { - if (detaching) + if (detaching) { detach(option); + } } }; } -function create_if_block8(ctx) { - let div; - let pre; - let t0_value = ( - /*line*/ - ctx[16][0] + "-" - ); - let t0; - let t1; - let span; - let a2; - let t2_value = dropDendron( - /*line*/ - ctx[16][1], - /*settings*/ - ctx[6] - ) + ""; - let t2; - let a_class_value; - let t3; - let mounted; - let dispose; - function click_handler_2(...args) { - return ( - /*click_handler_2*/ - ctx[10]( - /*line*/ - ctx[16], - ...args +function create_each_block8(ctx) { + let option; + let option_value_value; + return { + c() { + option = element("option"); + option.textContent = `${/*s*/ + ctx[18]} `; + option.__value = option_value_value = /*s*/ + ctx[18]; + set_input_value(option, option.__value); + }, + m(target, anchor) { + insert(target, option, anchor); + }, + p: noop, + d(detaching) { + if (detaching) { + detach(option); + } + } + }; +} +function create_if_block_23(ctx) { + let trailviewpath; + let current; + trailviewpath = new TrailViewPath_default({ + props: { + plugin: ( + /*plugin*/ + ctx[0] + ), + all_paths: ( + /*sorted_paths*/ + ctx[3] ) - ); + } + }); + return { + c() { + create_component(trailviewpath.$$.fragment); + }, + m(target, anchor) { + mount_component(trailviewpath, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const trailviewpath_changes = {}; + if (dirty & /*plugin*/ + 1) + trailviewpath_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*sorted_paths*/ + 8) + trailviewpath_changes.all_paths = /*sorted_paths*/ + ctx2[3]; + trailviewpath.$set(trailviewpath_changes); + }, + i(local) { + if (current) + return; + transition_in(trailviewpath.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(trailviewpath.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(trailviewpath, detaching); + } + }; +} +function create_if_block_13(ctx) { + let trailviewgrid; + let current; + trailviewgrid = new TrailViewGrid_default({ + props: { + plugin: ( + /*plugin*/ + ctx[0] + ), + all_paths: ( + /*sorted_paths*/ + ctx[3] + ) + } + }); + return { + c() { + create_component(trailviewgrid.$$.fragment); + }, + m(target, anchor) { + mount_component(trailviewgrid, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const trailviewgrid_changes = {}; + if (dirty & /*plugin*/ + 1) + trailviewgrid_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*sorted_paths*/ + 8) + trailviewgrid_changes.all_paths = /*sorted_paths*/ + ctx2[3]; + trailviewgrid.$set(trailviewgrid_changes); + }, + i(local) { + if (current) + return; + transition_in(trailviewgrid.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(trailviewgrid.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(trailviewgrid, detaching); + } + }; +} +function create_key_block3(ctx) { + let current_block_type_index; + let if_block; + let if_block_anchor; + let current; + const if_block_creators = [create_if_block10, create_if_block_33]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*sorted_paths*/ + ctx2[3].length + ) + return 0; + if ( + /*plugin*/ + ctx2[0].settings.views.page.trail.no_path_message + ) + return 1; + return -1; } - function mouseover_handler(...args) { - return ( - /*mouseover_handler*/ - ctx[11]( - /*line*/ - ctx[16], - ...args - ) - ); + if (~(current_block_type_index = select_block_type(ctx, -1))) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); } return { c() { - div = element("div"); - pre = element("pre"); - t0 = text(t0_value); - t1 = space(); - span = element("span"); - a2 = element("a"); - t2 = text(t2_value); - t3 = space(); - attr(pre, "class", "svelte-8j6nux"); - attr(a2, "class", a_class_value = "internal-link " + (isInVault( - /*line*/ - ctx[16][1] - ) ? "" : "is-unresolved") + " svelte-8j6nux"); - attr(span, "class", "internal-link"); + if (if_block) + if_block.c(); + if_block_anchor = empty(); }, m(target, anchor) { - insert(target, div, anchor); - append(div, pre); - append(pre, t0); - append(div, t1); - append(div, span); - append(span, a2); - append(a2, t2); - append(div, t3); - if (!mounted) { - dispose = [ - listen(span, "click", click_handler_2), - listen(span, "mouseover", mouseover_handler) - ]; - mounted = true; + if (~current_block_type_index) { + if_blocks[current_block_type_index].m(target, anchor); + } + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if (~current_block_type_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } + } else { + if (if_block) { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + } + if (~current_block_type_index) { + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + if_block.p(ctx2, dirty); + } + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } else { + if_block = null; + } } }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (dirty & /*lines*/ - 32 && t0_value !== (t0_value = /*line*/ - ctx[16][0] + "-")) - set_data(t0, t0_value); - if (dirty & /*lines*/ - 32 && t2_value !== (t2_value = dropDendron( - /*line*/ - ctx[16][1], - /*settings*/ - ctx[6] - ) + "")) - set_data(t2, t2_value); - if (dirty & /*lines*/ - 32 && a_class_value !== (a_class_value = "internal-link " + (isInVault( - /*line*/ - ctx[16][1] - ) ? "" : "is-unresolved") + " svelte-8j6nux")) { - attr(a2, "class", a_class_value); - } + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; }, d(detaching) { - if (detaching) - detach(div); - mounted = false; - run_all(dispose); + if (detaching) { + detach(if_block_anchor); + } + if (~current_block_type_index) { + if_blocks[current_block_type_index].d(detaching); + } } }; } -function create_each_block9(ctx) { - let if_block_anchor; - let if_block = ( - /*line*/ - ctx[16].length > 1 && create_if_block8(ctx) +function create_fragment41(ctx) { + let div; + let previous_key = ( + /*sorted_paths*/ + ctx[3] ); + let current; + let key_block = create_key_block3(ctx); + return { + c() { + div = element("div"); + key_block.c(); + }, + m(target, anchor) { + insert(target, div, anchor); + key_block.m(div, null); + current = true; + }, + p(ctx2, [dirty]) { + if (dirty & /*sorted_paths*/ + 8 && safe_not_equal(previous_key, previous_key = /*sorted_paths*/ + ctx2[3])) { + group_outros(); + transition_out(key_block, 1, 1, noop); + check_outros(); + key_block = create_key_block3(ctx2); + key_block.c(); + transition_in(key_block, 1); + key_block.m(div, null); + } else { + key_block.p(ctx2, dirty); + } + }, + i(local) { + if (current) + return; + transition_in(key_block); + current = true; + }, + o(local) { + transition_out(key_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + key_block.d(detaching); + } + }; +} +function instance41($$self, $$props, $$invalidate) { + let edge_field_labels; + let all_paths; + let selected_paths; + let MAX_DEPTH2; + let depth; + let sliced_paths; + let deduped_paths; + let sorted_paths; + let { plugin } = $$props; + let { file_path } = $$props; + const base_traversal = (attr2) => Traverse.tree_to_all_paths(Traverse.build_tree(plugin.graph, file_path, {}, (e) => has_edge_attrs(e, attr2))); + function select0_change_handler() { + plugin.settings.views.page.trail.format = select_value(this); + $$invalidate(0, plugin); + } + const change_handler = async () => await plugin.saveSettings(); + function select1_change_handler() { + plugin.settings.views.page.trail.selection = select_value(this); + $$invalidate(0, plugin); + } + const change_handler_1 = async () => await plugin.saveSettings(); + function mergefieldsbutton_merge_fields_binding(value) { + if ($$self.$$.not_equal(plugin.settings.views.page.trail.merge_fields, value)) { + plugin.settings.views.page.trail.merge_fields = value; + $$invalidate(0, plugin); + } + } + const click_handler = () => $$invalidate(2, depth = Math.max(1, depth - 1)); + const click_handler_1 = () => $$invalidate(2, depth = Math.min(MAX_DEPTH2, depth + 1)); + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + if ("file_path" in $$props2) + $$invalidate(4, file_path = $$props2.file_path); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*plugin*/ + 1) { + $: + $$invalidate(9, edge_field_labels = resolve_field_group_labels(plugin.settings.edge_field_groups, plugin.settings.views.page.trail.field_group_labels)); + } + if ($$self.$$.dirty & /*plugin, file_path, edge_field_labels*/ + 529) { + $: + $$invalidate(8, all_paths = plugin.graph.hasNode(file_path) ? plugin.settings.views.page.trail.merge_fields ? base_traversal({ $or_fields: edge_field_labels }) : edge_field_labels.flatMap((field) => base_traversal({ field })) : []); + } + if ($$self.$$.dirty & /*plugin, all_paths*/ + 257) { + $: + $$invalidate(7, selected_paths = plugin.settings.views.page.trail.selection === "all" ? all_paths : plugin.settings.views.page.trail.selection === "shortest" ? all_paths.slice(-1) : plugin.settings.views.page.trail.selection === "longest" ? all_paths.slice(0, 1) : [[]]); + } + if ($$self.$$.dirty & /*selected_paths*/ + 128) { + $: + $$invalidate(1, MAX_DEPTH2 = Math.max(0, ...selected_paths.map((p) => p.length))); + } + if ($$self.$$.dirty & /*MAX_DEPTH, plugin*/ + 3) { + $: + $$invalidate(2, depth = Math.min(MAX_DEPTH2, plugin.settings.views.page.trail.default_depth)); + } + if ($$self.$$.dirty & /*selected_paths, depth*/ + 132) { + $: + $$invalidate(6, sliced_paths = selected_paths.map((path) => path.slice(0, depth))); + } + if ($$self.$$.dirty & /*depth, MAX_DEPTH, sliced_paths*/ + 70) { + $: + $$invalidate(5, deduped_paths = // There are no duplicates if the depth is the max depth. + // The traversal wouldn't add them in the first place. + depth === MAX_DEPTH2 ? sliced_paths : remove_duplicates_by(sliced_paths, (path) => path.map((p) => p.target_id).join("/"))); + } + if ($$self.$$.dirty & /*deduped_paths*/ + 32) { + $: + $$invalidate(3, sorted_paths = deduped_paths.sort((a, b) => { + const len_diff = b.length - a.length; + if (len_diff !== 0) + return len_diff; + else + return a[0].target_id.localeCompare(b[0].target_id); + })); + } + }; + return [ + plugin, + MAX_DEPTH2, + depth, + sorted_paths, + file_path, + deduped_paths, + sliced_paths, + selected_paths, + all_paths, + edge_field_labels, + select0_change_handler, + change_handler, + select1_change_handler, + change_handler_1, + mergefieldsbutton_merge_fields_binding, + click_handler, + click_handler_1 + ]; +} +var TrailView = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance41, create_fragment41, safe_not_equal, { plugin: 0, file_path: 4 }); + } +}; +var TrailView_default = TrailView; + +// src/components/page_views/index.svelte +function create_if_block11(ctx) { + let div; + let t; + let current; + let if_block0 = ( + /*enabled_views*/ + ctx[2].grid && create_if_block_24(ctx) + ); + let if_block1 = ( + /*enabled_views*/ + ctx[2].prev_next && create_if_block_14(ctx) + ); + return { + c() { + div = element("div"); + if (if_block0) + if_block0.c(); + t = space(); + if (if_block1) + if_block1.c(); + attr(div, "class", "markdown-rendered mb-4 flex flex-col gap-2"); + }, + m(target, anchor) { + insert(target, div, anchor); + if (if_block0) + if_block0.m(div, null); + append(div, t); + if (if_block1) + if_block1.m(div, null); + current = true; + }, + p(ctx2, dirty) { + if ( + /*enabled_views*/ + ctx2[2].grid + ) + if_block0.p(ctx2, dirty); + if ( + /*enabled_views*/ + ctx2[2].prev_next + ) + if_block1.p(ctx2, dirty); + }, + i(local) { + if (current) + return; + transition_in(if_block0); + transition_in(if_block1); + current = true; + }, + o(local) { + transition_out(if_block0); + transition_out(if_block1); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + if (if_block0) + if_block0.d(); + if (if_block1) + if_block1.d(); + } + }; +} +function create_if_block_24(ctx) { + let trailview; + let current; + trailview = new TrailView_default({ + props: { + plugin: ( + /*plugin*/ + ctx[0] + ), + file_path: ( + /*file_path*/ + ctx[1] + ) + } + }); + return { + c() { + create_component(trailview.$$.fragment); + }, + m(target, anchor) { + mount_component(trailview, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const trailview_changes = {}; + if (dirty & /*plugin*/ + 1) + trailview_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*file_path*/ + 2) + trailview_changes.file_path = /*file_path*/ + ctx2[1]; + trailview.$set(trailview_changes); + }, + i(local) { + if (current) + return; + transition_in(trailview.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(trailview.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(trailview, detaching); + } + }; +} +function create_if_block_14(ctx) { + let prevnextview; + let current; + prevnextview = new PrevNextView_default({ + props: { + plugin: ( + /*plugin*/ + ctx[0] + ), + file_path: ( + /*file_path*/ + ctx[1] + ) + } + }); + return { + c() { + create_component(prevnextview.$$.fragment); + }, + m(target, anchor) { + mount_component(prevnextview, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const prevnextview_changes = {}; + if (dirty & /*plugin*/ + 1) + prevnextview_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*file_path*/ + 2) + prevnextview_changes.file_path = /*file_path*/ + ctx2[1]; + prevnextview.$set(prevnextview_changes); + }, + i(local) { + if (current) + return; + transition_in(prevnextview.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(prevnextview.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(prevnextview, detaching); + } + }; +} +function create_fragment42(ctx) { + let show_if = Object.values( + /*enabled_views*/ + ctx[2] + ).some(Boolean); + let if_block_anchor; + let current; + let if_block = show_if && create_if_block11(ctx); return { c() { if (if_block) @@ -28008,153 +35221,601 @@ function create_each_block9(ctx) { if (if_block) if_block.m(target, anchor); insert(target, if_block_anchor, anchor); + current = true; }, - p(ctx2, dirty) { - if ( - /*line*/ - ctx2[16].length > 1 - ) { - if (if_block) { - if_block.p(ctx2, dirty); - } else { - if_block = create_if_block8(ctx2); - if_block.c(); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } + p(ctx2, [dirty]) { + if (show_if) + if_block.p(ctx2, dirty); + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; }, d(detaching) { + if (detaching) { + detach(if_block_anchor); + } if (if_block) if_block.d(detaching); - if (detaching) - detach(if_block_anchor); } }; } -function create_fragment22(ctx) { - let span; +function instance42($$self, $$props, $$invalidate) { + let { plugin } = $$props; + let { file_path } = $$props; + const enabled_views = { + grid: plugin.settings.views.page.trail.enabled, + prev_next: plugin.settings.views.page.prev_next.enabled + }; + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + if ("file_path" in $$props2) + $$invalidate(1, file_path = $$props2.file_path); + }; + return [plugin, file_path, enabled_views]; +} +var Page_views = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance42, create_fragment42, safe_not_equal, { plugin: 0, file_path: 1 }); + } +}; +var page_views_default = Page_views; + +// src/views/page.ts +var redraw_page_views = (plugin) => { + const markdown_views = plugin.app.workspace.getLeavesOfType("markdown"); + if (!markdown_views.length) { + log.info("redraw_page_views > No markdown views found"); + return; + } + markdown_views.forEach((leaf) => { + var _a, _b, _c; + if (!(leaf.view instanceof import_obsidian22.MarkdownView)) + return; + const markdown_view = leaf.view; + const mode = markdown_view.getMode(); + const page_views_el = (_a = markdown_view.containerEl.querySelector(".BC-page-views")) != null ? _a : markdown_view.containerEl.createDiv({ + cls: "BC-page-views w-full mx-auto" + }); + const max_width = plugin.settings.views.page.all.readable_line_width ? "var(--file-line-width)" : "none"; + page_views_el.setAttribute("style", `max-width: ${max_width};`); + page_views_el.classList.toggle( + "BC-page-views-sticky", + plugin.settings.views.page.all.sticky + ); + page_views_el.empty(); + if (mode === "preview") { + const view_parent = markdown_view.containerEl.querySelector( + ".markdown-reading-view > .markdown-preview-view" + ); + if (!view_parent) { + return log.info( + "redraw_page_views > No view_parent (mode=preview)" + ); + } + view_parent.insertBefore(page_views_el, view_parent.firstChild); + } else { + const view_parent = markdown_view.containerEl.querySelector(".cm-scroller"); + if (!view_parent) { + return log.info( + "redraw_page_views > No view_parent (mode=source)" + ); + } + view_parent.addClass("flex-col"); + view_parent.insertBefore(page_views_el, view_parent.firstChild); + } + new page_views_default({ + target: page_views_el, + props: { plugin, file_path: (_c = (_b = markdown_view.file) == null ? void 0 : _b.path) != null ? _c : "" } + }); + }); +}; + +// src/settings/PageViewSettings.ts +var _add_settings_page_views = (plugin, container_el) => { + new_setting(container_el, { + name: "Sticky", + desc: "Keep the page views pinned to the top of the note as you scroll", + toggle: { + value: plugin.settings.views.page.all.sticky, + cb: async (value) => { + plugin.settings.views.page.all.sticky = value; + await plugin.saveSettings(); + redraw_page_views(plugin); + } + } + }); + new_setting(container_el, { + name: "Readable line width", + desc: "Limit to the width of the text in the editor", + toggle: { + value: plugin.settings.views.page.all.readable_line_width, + cb: async (value) => { + plugin.settings.views.page.all.readable_line_width = value; + await plugin.saveSettings(); + redraw_page_views(plugin); + } + } + }); +}; + +// src/settings/PrevNextSettings.ts +var import_obsidian23 = require("obsidian"); +var _add_settings_prev_next_view = (plugin, containerEl) => { + new import_obsidian23.Setting(containerEl).setName("Enable Previous/Next view").setDesc("Show the Previous/Next view at the top of the page").addToggle((toggle) => { + toggle.setValue(plugin.settings.views.page.prev_next.enabled).onChange(async (value) => { + plugin.settings.views.page.prev_next.enabled = value; + await Promise.all([plugin.saveSettings()]); + plugin.refresh({ + rebuild_graph: false, + active_file_store: false + }); + }); + }); + new FieldGroupLabelsSettingItem_default({ + target: containerEl, + props: { + name: "Field Groups for Left", + description: "Select the field groups to show in the left side of this view", + edge_field_groups: plugin.settings.edge_field_groups, + field_group_labels: plugin.settings.views.page.prev_next.field_group_labels.prev + } + }).$on("select", async (e) => { + plugin.settings.views.page.prev_next.field_group_labels.prev = e.detail; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ rebuild_graph: false }) + ]); + }); + new FieldGroupLabelsSettingItem_default({ + target: containerEl, + props: { + name: "Field Groups for Right", + description: "Select the field groups to show in the right side of this view", + edge_field_groups: plugin.settings.edge_field_groups, + field_group_labels: plugin.settings.views.page.prev_next.field_group_labels.next + } + }).$on("select", async (e) => { + plugin.settings.views.page.prev_next.field_group_labels.next = e.detail; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ rebuild_graph: false }) + ]); + }); + _add_settings_show_node_options(plugin, containerEl, { + get: () => plugin.settings.views.page.prev_next.show_node_options, + set: (value) => plugin.settings.views.page.prev_next.show_node_options = value + }); +}; + +// src/settings/RebuildGraphSettings.ts +var _add_settings_rebuild_graph = (plugin, containerEl) => { + new_setting(containerEl, { + name: "Notify on refresh", + desc: "Show a notification when the graph is rebuilt", + toggle: { + value: plugin.settings.commands.rebuild_graph.notify, + cb: async (value) => { + plugin.settings.commands.rebuild_graph.notify = value; + await Promise.all([plugin.saveSettings(), plugin.refresh({})]); + } + } + }); + new_setting(containerEl, { + name: "Triggers", + desc: "When to rebuild the graph", + checklist: { + options: { + note_save: plugin.settings.commands.rebuild_graph.trigger.note_save, + layout_change: plugin.settings.commands.rebuild_graph.trigger.layout_change + }, + cb: async (value) => { + plugin.settings.commands.rebuild_graph.trigger = value; + await Promise.all([plugin.saveSettings(), plugin.refresh({})]); + } + } + }); +}; + +// src/settings/RegexNoteSettings.ts +var _add_settings_regex_note = (plugin, containerEl) => { + new_setting(containerEl, { + name: "Default Field", + desc: "Field to use if the BC-regex-note-field is not specified", + select: { + value: plugin.settings.explicit_edge_sources.regex_note.default_field, + options: plugin.settings.edge_fields.map((f) => f.label), + cb: async (value) => { + plugin.settings.explicit_edge_sources.regex_note.default_field = value; + await Promise.all([plugin.refresh(), plugin.saveSettings()]); + } + } + }); +}; + +// src/settings/TagNoteSettings.ts +var _add_settings_tag_note = (plugin, containerEl) => { + new_setting(containerEl, { + name: "Default Field", + desc: "Field to use if the BC-tag-note-field is not specified", + select: { + value: plugin.settings.explicit_edge_sources.tag_note.default_field, + options: plugin.settings.edge_fields.map((f) => f.label), + cb: async (value) => { + plugin.settings.explicit_edge_sources.tag_note.default_field = value; + await Promise.all([plugin.refresh(), plugin.saveSettings()]); + } + } + }); +}; + +// src/settings/ThreadSettings.ts +var _add_settings_thread = (plugin, contentEl) => { + const { settings } = plugin; + new_setting(contentEl, { + name: "Destination", + desc: "Where to write the new edge to", + select: { + options: ["frontmatter", "dataview-inline", "none"], + value: settings.commands.thread.default_options.destination, + cb: async (value) => { + settings.commands.thread.default_options.destination = value; + await plugin.saveSettings(); + } + } + }); + new_setting(contentEl, { + name: "Target Path Template", + desc: "The template to use for the target path. You don't need to add the .md extension.", + input: { + value: settings.commands.thread.default_options.target_path_template, + cb: async (value) => { + settings.commands.thread.default_options.target_path_template = value; + await plugin.saveSettings(); + } + } + }); +}; + +// src/settings/TreeViewSettings.ts +var _add_settings_tree_view = (plugin, containerEl) => { + new_setting(containerEl, { + name: "Collapse", + desc: "Collapse the tree by default", + toggle: { + value: plugin.settings.views.side.tree.collapse, + cb: async (checked) => { + plugin.settings.views.side.tree.collapse = checked; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ + redraw_side_views: true, + rebuild_graph: false + }) + ]); + } + } + }); + new EdgeSortIdSettingItem_default({ + target: containerEl, + props: { edge_sort_id: plugin.settings.views.side.tree.edge_sort_id } + }).$on("select", async (e) => { + plugin.settings.views.side.tree.edge_sort_id = e.detail; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ + redraw_side_views: true, + rebuild_graph: false + }) + ]); + }); + new ShowAttributesSettingItem_default({ + target: containerEl, + props: { + show_attributes: plugin.settings.views.side.tree.show_attributes + } + }).$on("select", async (e) => { + plugin.settings.views.side.tree.show_attributes = e.detail; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ + redraw_side_views: true, + rebuild_graph: false + }) + ]); + }); + new FieldGroupLabelsSettingItem_default({ + target: containerEl, + props: { + edge_field_groups: plugin.settings.edge_field_groups, + field_group_labels: plugin.settings.views.side.tree.field_group_labels + } + }).$on("select", async (e) => { + plugin.settings.views.side.tree.field_group_labels = e.detail; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ + redraw_side_views: true, + rebuild_graph: false + }) + ]); + }); + new_setting(containerEl, { + name: "Merge Fields", + desc: "Merge fields in the traversal, instead of keeping their paths separate", + toggle: { + value: plugin.settings.views.side.tree.merge_fields, + cb: async (value) => { + plugin.settings.views.side.tree.merge_fields = value; + await Promise.all([ + plugin.saveSettings(), + plugin.refresh({ + redraw_side_views: true, + rebuild_graph: false + }) + ]); + } + } + }); + _add_settings_show_node_options(plugin, containerEl, { + get: () => plugin.settings.views.side.tree.show_node_options, + set: (value) => plugin.settings.views.side.tree.show_node_options = value + }); +}; + +// src/settings/SettingsTab.ts +var make_details_el = (parent, o) => { + let details; + let summary; + let children2; + details = parent.createEl("details", { + cls: "tree-item", + ...o == null ? void 0 : o.d + }); + summary = details.createEl("summary", { + cls: "text-xl p-1 tree-item-self is-clickable", + ...o == null ? void 0 : o.s + }); + children2 = details.createEl("div", { cls: "tree-item-children pl-4" }); + return { + details, + summary, + children: children2 + }; +}; +var BreadcrumbsSettingTab = class extends import_obsidian24.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.components = []; + this.plugin = plugin; + } + display() { + const { containerEl, plugin } = this; + containerEl.empty(); + containerEl.addClass("BC-settings-tab"); + this.components.push( + new EdgeFieldSettings_default({ + props: { plugin }, + target: make_details_el(containerEl, { + s: { text: "> Edge Fields" } + }).children + }) + ); + containerEl.createEl("hr"); + containerEl.createEl("h3", { text: "Implied Relations" }); + this.components.push( + new TransitiveImpliedRelations_default({ + props: { plugin }, + target: make_details_el(containerEl, { + s: { text: "> Transitive" } + }).children + }) + ); + containerEl.createEl("hr"); + containerEl.createEl("h3", { text: "Edge Sources" }); + _add_settings_tag_note( + plugin, + make_details_el(containerEl, { s: { text: "> Tag Notes" } }).children + ); + _add_settings_list_note( + plugin, + make_details_el(containerEl, { s: { text: "> List Notes" } }).children + ); + _add_settings_date_note( + plugin, + make_details_el(containerEl, { s: { text: "> Date Notes" } }).children + ); + _add_settings_regex_note( + plugin, + make_details_el(containerEl, { s: { text: "> Regex Notes" } }).children + ); + _add_settings_dendron_note( + plugin, + make_details_el(containerEl, { s: { text: "> Dendron Notes" } }).children + ); + _add_settings_johnny_decimal_note( + plugin, + make_details_el(containerEl, { + s: { text: "> Johnny Decimal Notes" } + }).children + ); + containerEl.createEl("hr"); + containerEl.createEl("h3", { text: "Views" }); + _add_settings_matrix( + plugin, + make_details_el(containerEl, { s: { text: "> Matrix" } }).children + ); + const page_details = make_details_el(containerEl, { + s: { text: "> Page" } + }).children; + page_details.createEl("h5", { text: "General" }); + _add_settings_page_views(plugin, page_details); + page_details.createEl("h5", { text: "Trail" }); + _add_settings_trail_view(plugin, page_details); + page_details.createEl("h5", { text: "Previous/Next" }); + _add_settings_prev_next_view(plugin, page_details); + _add_settings_tree_view( + plugin, + make_details_el(containerEl, { s: { text: "> Tree" } }).children + ); + _add_settings_codeblocks( + plugin, + make_details_el(containerEl, { s: { text: "> Codeblocks" } }).children + ); + containerEl.createEl("hr"); + containerEl.createEl("h3", { text: "Commands" }); + _add_settings_rebuild_graph( + plugin, + make_details_el(containerEl, { s: { text: "> Rebuild Graph" } }).children + ); + _add_settings_list_index( + plugin, + make_details_el(containerEl, { s: { text: "> List Index" } }).children + ); + _add_settings_freeze_implied_edges( + plugin, + make_details_el(containerEl, { + s: { text: "> Freeze Implied Edges" } + }).children + ); + _add_settings_thread( + plugin, + make_details_el(containerEl, { s: { text: "> Thread" } }).children + ); + containerEl.createEl("hr"); + containerEl.createEl("h3", { text: "Suggestors" }); + _add_settings_edge_field_suggestor( + plugin, + make_details_el(containerEl, { + s: { text: "> Edge Field Suggestor" } + }).children + ); + containerEl.createEl("hr"); + _add_settings_debug( + plugin, + make_details_el(containerEl, { s: { text: "> Debug" } }).children + ); + } + hide() { + if (this.plugin.settings.is_dirty) { + new import_obsidian24.Notice( + "\u26A0\uFE0F Exited without saving settings. Your changes are still in effect, but were not saved. Go back and click 'Save' if you want them to persist. Otherwise, reload Obsidian to revert to the last saved settings." + ); + } + this.components.forEach((c) => c.$destroy()); + } +}; + +// src/views/matrix.ts +var import_obsidian25 = require("obsidian"); + +// src/components/button/ChevronCollapseButton.svelte +function create_else_block6(ctx) { + let chevronsupdown; + let current; + chevronsupdown = new chevrons_up_down_default({ props: { size: ICON_SIZE } }); + return { + c() { + create_component(chevronsupdown.$$.fragment); + }, + m(target, anchor) { + mount_component(chevronsupdown, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(chevronsupdown.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(chevronsupdown.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(chevronsupdown, detaching); + } + }; +} +function create_if_block12(ctx) { + let chevronsdownup; + let current; + chevronsdownup = new chevrons_down_up_default({ props: { size: ICON_SIZE } }); + return { + c() { + create_component(chevronsdownup.$$.fragment); + }, + m(target, anchor) { + mount_component(chevronsdownup, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(chevronsdownup.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(chevronsdownup.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(chevronsdownup, detaching); + } + }; +} +function create_fragment43(ctx) { + let button; let current_block_type_index; let if_block; - let span_aria_label_value; - let t0; - let button; - let t2; - let select; - let t3; - let div; + let button_aria_label_value; let current; let mounted; let dispose; - const if_block_creators = [create_if_block_15, create_else_block4]; + const if_block_creators = [create_if_block12, create_else_block6]; const if_blocks = []; function select_block_type(ctx2, dirty) { if ( - /*frozen*/ - ctx2[4] + /*collapse*/ + ctx2[0] ) return 0; return 1; } current_block_type_index = select_block_type(ctx, -1); if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - let each_value_1 = DIRECTIONS; - let each_blocks_1 = []; - for (let i = 0; i < each_value_1.length; i += 1) { - each_blocks_1[i] = create_each_block_16(get_each_context_16(ctx, each_value_1, i)); - } - let each_value = ( - /*lines*/ - ctx[5] - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block9(get_each_context9(ctx, each_value, i)); - } return { c() { - span = element("span"); - if_block.c(); - t0 = space(); button = element("button"); - button.textContent = "\u21BB"; - t2 = space(); - select = element("select"); - for (let i = 0; i < each_blocks_1.length; i += 1) { - each_blocks_1[i].c(); - } - t3 = space(); - div = element("div"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - attr(span, "class", "icon svelte-8j6nux"); - attr(span, "aria-label", span_aria_label_value = /*frozen*/ - ctx[4] ? `Frozen on: ${/*basename*/ - ctx[3]}` : "Unfrozen"); - attr(span, "aria-label-position", "left"); - attr(button, "aria-label", "Refresh Stats View (also refreshes Breadcrumbs Index)"); - attr(button, "class", "svelte-8j6nux"); - attr(select, "class", "dropdown"); - if ( - /*dir*/ - ctx[2] === void 0 - ) - add_render_callback(() => ( - /*select_change_handler*/ - ctx[9].call(select) - )); - attr(div, "class", "BC-downs svelte-8j6nux"); + if_block.c(); + attr( + button, + "class", + /*cls*/ + ctx[1] + ); + attr(button, "aria-label", button_aria_label_value = /*collapse*/ + ctx[0] ? "Expand" : "Collapse"); }, m(target, anchor) { - insert(target, span, anchor); - if_blocks[current_block_type_index].m(span, null); - insert(target, t0, anchor); insert(target, button, anchor); - insert(target, t2, anchor); - insert(target, select, anchor); - for (let i = 0; i < each_blocks_1.length; i += 1) { - if (each_blocks_1[i]) { - each_blocks_1[i].m(select, null); - } - } - select_option( - select, - /*dir*/ - ctx[2], - true - ); - insert(target, t3, anchor); - insert(target, div, anchor); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(div, null); - } - } + if_blocks[current_block_type_index].m(button, null); current = true; if (!mounted) { - dispose = [ - listen( - span, - "click", - /*click_handler*/ - ctx[7] - ), - listen( - button, - "click", - /*click_handler_1*/ - ctx[8] - ), - listen( - select, - "change", - /*select_change_handler*/ - ctx[9] - ) - ]; + dispose = listen( + button, + "click", + /*click_handler*/ + ctx[2] + ); mounted = true; } }, @@ -28174,60 +35835,21 @@ function create_fragment22(ctx) { } else { } transition_in(if_block, 1); - if_block.m(span, null); + if_block.m(button, null); } - if (!current || dirty & /*frozen, basename*/ - 24 && span_aria_label_value !== (span_aria_label_value = /*frozen*/ - ctx2[4] ? `Frozen on: ${/*basename*/ - ctx2[3]}` : "Unfrozen")) { - attr(span, "aria-label", span_aria_label_value); - } - if (dirty & /*DIRECTIONS*/ - 0) { - each_value_1 = DIRECTIONS; - let i; - for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_16(ctx2, each_value_1, i); - if (each_blocks_1[i]) { - each_blocks_1[i].p(child_ctx, dirty); - } else { - each_blocks_1[i] = create_each_block_16(child_ctx); - each_blocks_1[i].c(); - each_blocks_1[i].m(select, null); - } - } - for (; i < each_blocks_1.length; i += 1) { - each_blocks_1[i].d(1); - } - each_blocks_1.length = each_value_1.length; - } - if (dirty & /*dir, DIRECTIONS*/ - 4) { - select_option( - select, - /*dir*/ - ctx2[2] + if (!current || dirty & /*cls*/ + 2) { + attr( + button, + "class", + /*cls*/ + ctx2[1] ); } - if (dirty & /*openOrSwitch, lines, hoverPreview, view, isInVault, dropDendron, settings*/ - 98) { - each_value = /*lines*/ - ctx2[5]; - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context9(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block9(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(div, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value.length; + if (!current || dirty & /*collapse*/ + 1 && button_aria_label_value !== (button_aria_label_value = /*collapse*/ + ctx2[0] ? "Expand" : "Collapse")) { + attr(button, "aria-label", button_aria_label_value); } }, i(local) { @@ -28241,7640 +35863,5525 @@ function create_fragment22(ctx) { current = false; }, d(detaching) { - if (detaching) - detach(span); - if_blocks[current_block_type_index].d(); - if (detaching) - detach(t0); - if (detaching) + if (detaching) { detach(button); - if (detaching) - detach(t2); - if (detaching) - detach(select); - destroy_each(each_blocks_1, detaching); - if (detaching) - detach(t3); - if (detaching) - detach(div); - destroy_each(each_blocks, detaching); - mounted = false; - run_all(dispose); - } - }; -} -function instance22($$self, $$props, $$invalidate) { - var _a; - ; - ; - ; - let { plugin } = $$props; - let { view } = $$props; - const { settings, app: app2, closedG } = plugin; - const { createIndexIndent } = settings; - let dir = "down"; - let frozen = false; - let { basename } = (_a = getCurrFile()) !== null && _a !== void 0 ? _a : {}; - plugin.registerEvent(app2.workspace.on("active-leaf-change", () => { - var _a2; - if (frozen) - return; - $$invalidate(3, basename = (_a2 = getCurrFile()) === null || _a2 === void 0 ? void 0 : _a2.basename); - })); - let lines; - const click_handler = () => { - var _a2; - $$invalidate(4, frozen = !frozen); - if (!frozen) - $$invalidate(3, basename = (_a2 = getCurrFile()) == null ? void 0 : _a2.basename); - }; - const click_handler_1 = async () => { - await refreshIndex(plugin); - await view.draw(); - }; - function select_change_handler() { - dir = select_value(this); - $$invalidate(2, dir); - } - const click_handler_2 = async (line, e) => await openOrSwitch(line[1], e); - const mouseover_handler = (line, e) => hoverPreview(e, view, line[1]); - $$self.$$set = ($$props2) => { - if ("plugin" in $$props2) - $$invalidate(0, plugin = $$props2.plugin); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); - }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*dir, basename*/ - 12) { - $: { - const dirG = getSubInDirs(closedG, dir); - const allPaths = dfsAllPaths(dirG, basename); - const index2 = createIndex(allPaths, false, createIndexIndent); - (0, import_loglevel20.info)({ allPaths, index: index2 }); - $$invalidate(5, lines = indexToLinePairs(index2)); } - } - }; - return [ - plugin, - view, - dir, - basename, - frozen, - lines, - settings, - click_handler, - click_handler_1, - select_change_handler, - click_handler_2, - mouseover_handler - ]; -} -var SideTree = class extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance22, create_fragment22, safe_not_equal, { plugin: 0, view: 1 }, add_css14); - } -}; -var SideTree_default = SideTree; - -// src/Views/TreeView.ts -var TreeView = class extends import_obsidian42.ItemView { - constructor(leaf, plugin) { - super(leaf); - this.icon = addFeatherIcon("corner-right-down"); - this.plugin = plugin; - } - async onload() { - super.onload(); - app.workspace.onLayoutReady(async () => { - await this.draw(); - }); - } - getViewType() { - return TREE_VIEW; - } - getDisplayText() { - return "Breadcrumbs Down"; - } - async onOpen() { - } - onClose() { - var _a; - (_a = this.view) == null ? void 0 : _a.$destroy(); - return Promise.resolve(); - } - async draw() { - this.contentEl.empty(); - this.view = new SideTree_default({ - target: this.contentEl, - props: { plugin: this.plugin, view: this } - }); - } -}; - -// node_modules/d3-array/src/ascending.js -function ascending_default(a2, b) { - return a2 < b ? -1 : a2 > b ? 1 : a2 >= b ? 0 : NaN; -} - -// node_modules/d3-array/src/bisector.js -function bisector_default(f) { - let delta = f; - let compare = f; - if (f.length === 1) { - delta = (d, x4) => f(d) - x4; - compare = ascendingComparator(f); - } - function left(a2, x4, lo, hi) { - if (lo == null) - lo = 0; - if (hi == null) - hi = a2.length; - while (lo < hi) { - const mid = lo + hi >>> 1; - if (compare(a2[mid], x4) < 0) - lo = mid + 1; - else - hi = mid; - } - return lo; - } - function right(a2, x4, lo, hi) { - if (lo == null) - lo = 0; - if (hi == null) - hi = a2.length; - while (lo < hi) { - const mid = lo + hi >>> 1; - if (compare(a2[mid], x4) > 0) - hi = mid; - else - lo = mid + 1; - } - return lo; - } - function center(a2, x4, lo, hi) { - if (lo == null) - lo = 0; - if (hi == null) - hi = a2.length; - const i = left(a2, x4, lo, hi - 1); - return i > lo && delta(a2[i - 1], x4) > -delta(a2[i], x4) ? i - 1 : i; - } - return { left, center, right }; -} -function ascendingComparator(f) { - return (d, x4) => ascending_default(f(d), x4); -} - -// node_modules/d3-array/src/number.js -function number_default(x4) { - return x4 === null ? NaN : +x4; -} - -// node_modules/d3-array/src/bisect.js -var ascendingBisect = bisector_default(ascending_default); -var bisectRight = ascendingBisect.right; -var bisectLeft = ascendingBisect.left; -var bisectCenter = bisector_default(number_default).center; -var bisect_default = bisectRight; - -// node_modules/d3-array/src/ticks.js -var e10 = Math.sqrt(50); -var e5 = Math.sqrt(10); -var e2 = Math.sqrt(2); -function ticks_default(start2, stop, count2) { - var reverse, i = -1, n2, ticks, step; - stop = +stop, start2 = +start2, count2 = +count2; - if (start2 === stop && count2 > 0) - return [start2]; - if (reverse = stop < start2) - n2 = start2, start2 = stop, stop = n2; - if ((step = tickIncrement(start2, stop, count2)) === 0 || !isFinite(step)) - return []; - if (step > 0) { - let r0 = Math.round(start2 / step), r1 = Math.round(stop / step); - if (r0 * step < start2) - ++r0; - if (r1 * step > stop) - --r1; - ticks = new Array(n2 = r1 - r0 + 1); - while (++i < n2) - ticks[i] = (r0 + i) * step; - } else { - step = -step; - let r0 = Math.round(start2 * step), r1 = Math.round(stop * step); - if (r0 / step < start2) - ++r0; - if (r1 / step > stop) - --r1; - ticks = new Array(n2 = r1 - r0 + 1); - while (++i < n2) - ticks[i] = (r0 + i) / step; - } - if (reverse) - ticks.reverse(); - return ticks; -} -function tickIncrement(start2, stop, count2) { - var step = (stop - start2) / Math.max(0, count2), power = Math.floor(Math.log(step) / Math.LN10), error6 = step / Math.pow(10, power); - return power >= 0 ? (error6 >= e10 ? 10 : error6 >= e5 ? 5 : error6 >= e2 ? 2 : 1) * Math.pow(10, power) : -Math.pow(10, -power) / (error6 >= e10 ? 10 : error6 >= e5 ? 5 : error6 >= e2 ? 2 : 1); -} -function tickStep(start2, stop, count2) { - var step0 = Math.abs(stop - start2) / Math.max(0, count2), step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)), error6 = step0 / step1; - if (error6 >= e10) - step1 *= 10; - else if (error6 >= e5) - step1 *= 5; - else if (error6 >= e2) - step1 *= 2; - return stop < start2 ? -step1 : step1; -} - -// node_modules/d3-array/src/max.js -function max(values, valueof) { - let max4; - if (valueof === void 0) { - for (const value of values) { - if (value != null && (max4 < value || max4 === void 0 && value >= value)) { - max4 = value; - } - } - } else { - let index2 = -1; - for (let value of values) { - if ((value = valueof(value, ++index2, values)) != null && (max4 < value || max4 === void 0 && value >= value)) { - max4 = value; - } - } - } - return max4; -} - -// node_modules/d3-array/src/range.js -function range_default(start2, stop, step) { - start2 = +start2, stop = +stop, step = (n2 = arguments.length) < 2 ? (stop = start2, start2 = 0, 1) : n2 < 3 ? 1 : +step; - var i = -1, n2 = Math.max(0, Math.ceil((stop - start2) / step)) | 0, range = new Array(n2); - while (++i < n2) { - range[i] = start2 + i * step; - } - return range; -} - -// node_modules/d3-dispatch/src/dispatch.js -var noop2 = { value: () => { -} }; -function dispatch() { - for (var i = 0, n2 = arguments.length, _ = {}, t; i < n2; ++i) { - if (!(t = arguments[i] + "") || t in _ || /[\s.]/.test(t)) - throw new Error("illegal type: " + t); - _[t] = []; - } - return new Dispatch(_); -} -function Dispatch(_) { - this._ = _; -} -function parseTypenames(typenames, types) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) - name = t.slice(i + 1), t = t.slice(0, i); - if (t && !types.hasOwnProperty(t)) - throw new Error("unknown type: " + t); - return { type: t, name }; - }); -} -Dispatch.prototype = dispatch.prototype = { - constructor: Dispatch, - on: function(typename, callback) { - var _ = this._, T = parseTypenames(typename + "", _), t, i = -1, n2 = T.length; - if (arguments.length < 2) { - while (++i < n2) - if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) - return t; - return; - } - if (callback != null && typeof callback !== "function") - throw new Error("invalid callback: " + callback); - while (++i < n2) { - if (t = (typename = T[i]).type) - _[t] = set(_[t], typename.name, callback); - else if (callback == null) - for (t in _) - _[t] = set(_[t], typename.name, null); - } - return this; - }, - copy: function() { - var copy3 = {}, _ = this._; - for (var t in _) - copy3[t] = _[t].slice(); - return new Dispatch(copy3); - }, - call: function(type2, that) { - if ((n2 = arguments.length - 2) > 0) - for (var args = new Array(n2), i = 0, n2, t; i < n2; ++i) - args[i] = arguments[i + 2]; - if (!this._.hasOwnProperty(type2)) - throw new Error("unknown type: " + type2); - for (t = this._[type2], i = 0, n2 = t.length; i < n2; ++i) - t[i].value.apply(that, args); - }, - apply: function(type2, that, args) { - if (!this._.hasOwnProperty(type2)) - throw new Error("unknown type: " + type2); - for (var t = this._[type2], i = 0, n2 = t.length; i < n2; ++i) - t[i].value.apply(that, args); - } -}; -function get(type2, name) { - for (var i = 0, n2 = type2.length, c3; i < n2; ++i) { - if ((c3 = type2[i]).name === name) { - return c3.value; - } - } -} -function set(type2, name, callback) { - for (var i = 0, n2 = type2.length; i < n2; ++i) { - if (type2[i].name === name) { - type2[i] = noop2, type2 = type2.slice(0, i).concat(type2.slice(i + 1)); - break; - } - } - if (callback != null) - type2.push({ name, value: callback }); - return type2; -} -var dispatch_default = dispatch; - -// node_modules/d3-selection/src/namespaces.js -var xhtml = "http://www.w3.org/1999/xhtml"; -var namespaces_default = { - svg: "http://www.w3.org/2000/svg", - xhtml, - xlink: "http://www.w3.org/1999/xlink", - xml: "http://www.w3.org/XML/1998/namespace", - xmlns: "http://www.w3.org/2000/xmlns/" -}; - -// node_modules/d3-selection/src/namespace.js -function namespace_default(name) { - var prefix = name += "", i = prefix.indexOf(":"); - if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") - name = name.slice(i + 1); - return namespaces_default.hasOwnProperty(prefix) ? { space: namespaces_default[prefix], local: name } : name; -} - -// node_modules/d3-selection/src/creator.js -function creatorInherit(name) { - return function() { - var document2 = this.ownerDocument, uri = this.namespaceURI; - return uri === xhtml && document2.documentElement.namespaceURI === xhtml ? document2.createElement(name) : document2.createElementNS(uri, name); - }; -} -function creatorFixed(fullname) { - return function() { - return this.ownerDocument.createElementNS(fullname.space, fullname.local); - }; -} -function creator_default(name) { - var fullname = namespace_default(name); - return (fullname.local ? creatorFixed : creatorInherit)(fullname); -} - -// node_modules/d3-selection/src/selector.js -function none() { -} -function selector_default(selector) { - return selector == null ? none : function() { - return this.querySelector(selector); - }; -} - -// node_modules/d3-selection/src/selection/select.js -function select_default(select) { - if (typeof select !== "function") - select = selector_default(select); - for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j = 0; j < m2; ++j) { - for (var group = groups[j], n2 = group.length, subgroup = subgroups[j] = new Array(n2), node, subnode, i = 0; i < n2; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) - subnode.__data__ = node.__data__; - subgroup[i] = subnode; - } - } - } - return new Selection(subgroups, this._parents); -} - -// node_modules/d3-selection/src/array.js -function array_default(x4) { - return typeof x4 === "object" && "length" in x4 ? x4 : Array.from(x4); -} - -// node_modules/d3-selection/src/selectorAll.js -function empty2() { - return []; -} -function selectorAll_default(selector) { - return selector == null ? empty2 : function() { - return this.querySelectorAll(selector); - }; -} - -// node_modules/d3-selection/src/selection/selectAll.js -function arrayAll(select) { - return function() { - var group = select.apply(this, arguments); - return group == null ? [] : array_default(group); - }; -} -function selectAll_default(select) { - if (typeof select === "function") - select = arrayAll(select); - else - select = selectorAll_default(select); - for (var groups = this._groups, m2 = groups.length, subgroups = [], parents = [], j = 0; j < m2; ++j) { - for (var group = groups[j], n2 = group.length, node, i = 0; i < n2; ++i) { - if (node = group[i]) { - subgroups.push(select.call(node, node.__data__, i, group)); - parents.push(node); - } - } - } - return new Selection(subgroups, parents); -} - -// node_modules/d3-selection/src/matcher.js -function matcher_default(selector) { - return function() { - return this.matches(selector); - }; -} -function childMatcher(selector) { - return function(node) { - return node.matches(selector); - }; -} - -// node_modules/d3-selection/src/selection/selectChild.js -var find = Array.prototype.find; -function childFind(match2) { - return function() { - return find.call(this.children, match2); - }; -} -function childFirst() { - return this.firstElementChild; -} -function selectChild_default(match2) { - return this.select(match2 == null ? childFirst : childFind(typeof match2 === "function" ? match2 : childMatcher(match2))); -} - -// node_modules/d3-selection/src/selection/selectChildren.js -var filter = Array.prototype.filter; -function children2() { - return this.children; -} -function childrenFilter(match2) { - return function() { - return filter.call(this.children, match2); - }; -} -function selectChildren_default(match2) { - return this.selectAll(match2 == null ? children2 : childrenFilter(typeof match2 === "function" ? match2 : childMatcher(match2))); -} - -// node_modules/d3-selection/src/selection/filter.js -function filter_default(match2) { - if (typeof match2 !== "function") - match2 = matcher_default(match2); - for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j = 0; j < m2; ++j) { - for (var group = groups[j], n2 = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n2; ++i) { - if ((node = group[i]) && match2.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - return new Selection(subgroups, this._parents); -} - -// node_modules/d3-selection/src/selection/sparse.js -function sparse_default(update2) { - return new Array(update2.length); -} - -// node_modules/d3-selection/src/selection/enter.js -function enter_default() { - return new Selection(this._enter || this._groups.map(sparse_default), this._parents); -} -function EnterNode(parent, datum2) { - this.ownerDocument = parent.ownerDocument; - this.namespaceURI = parent.namespaceURI; - this._next = null; - this._parent = parent; - this.__data__ = datum2; -} -EnterNode.prototype = { - constructor: EnterNode, - appendChild: function(child) { - return this._parent.insertBefore(child, this._next); - }, - insertBefore: function(child, next) { - return this._parent.insertBefore(child, next); - }, - querySelector: function(selector) { - return this._parent.querySelector(selector); - }, - querySelectorAll: function(selector) { - return this._parent.querySelectorAll(selector); - } -}; - -// node_modules/d3-selection/src/constant.js -function constant_default(x4) { - return function() { - return x4; - }; -} - -// node_modules/d3-selection/src/selection/data.js -function bindIndex(parent, group, enter, update2, exit, data) { - var i = 0, node, groupLength = group.length, dataLength = data.length; - for (; i < dataLength; ++i) { - if (node = group[i]) { - node.__data__ = data[i]; - update2[i] = node; - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - for (; i < groupLength; ++i) { - if (node = group[i]) { - exit[i] = node; - } - } -} -function bindKey(parent, group, enter, update2, exit, data, key) { - var i, node, nodeByKeyValue = /* @__PURE__ */ new Map(), groupLength = group.length, dataLength = data.length, keyValues = new Array(groupLength), keyValue; - for (i = 0; i < groupLength; ++i) { - if (node = group[i]) { - keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + ""; - if (nodeByKeyValue.has(keyValue)) { - exit[i] = node; - } else { - nodeByKeyValue.set(keyValue, node); - } - } - } - for (i = 0; i < dataLength; ++i) { - keyValue = key.call(parent, data[i], i, data) + ""; - if (node = nodeByKeyValue.get(keyValue)) { - update2[i] = node; - node.__data__ = data[i]; - nodeByKeyValue.delete(keyValue); - } else { - enter[i] = new EnterNode(parent, data[i]); - } - } - for (i = 0; i < groupLength; ++i) { - if ((node = group[i]) && nodeByKeyValue.get(keyValues[i]) === node) { - exit[i] = node; - } - } -} -function datum(node) { - return node.__data__; -} -function data_default(value, key) { - if (!arguments.length) - return Array.from(this, datum); - var bind = key ? bindKey : bindIndex, parents = this._parents, groups = this._groups; - if (typeof value !== "function") - value = constant_default(value); - for (var m2 = groups.length, update2 = new Array(m2), enter = new Array(m2), exit = new Array(m2), j = 0; j < m2; ++j) { - var parent = parents[j], group = groups[j], groupLength = group.length, data = array_default(value.call(parent, parent && parent.__data__, j, parents)), dataLength = data.length, enterGroup = enter[j] = new Array(dataLength), updateGroup = update2[j] = new Array(dataLength), exitGroup = exit[j] = new Array(groupLength); - bind(parent, group, enterGroup, updateGroup, exitGroup, data, key); - for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) { - if (previous = enterGroup[i0]) { - if (i0 >= i1) - i1 = i0 + 1; - while (!(next = updateGroup[i1]) && ++i1 < dataLength) - ; - previous._next = next || null; - } - } - } - update2 = new Selection(update2, parents); - update2._enter = enter; - update2._exit = exit; - return update2; -} - -// node_modules/d3-selection/src/selection/exit.js -function exit_default() { - return new Selection(this._exit || this._groups.map(sparse_default), this._parents); -} - -// node_modules/d3-selection/src/selection/join.js -function join_default(onenter, onupdate, onexit) { - var enter = this.enter(), update2 = this, exit = this.exit(); - enter = typeof onenter === "function" ? onenter(enter) : enter.append(onenter + ""); - if (onupdate != null) - update2 = onupdate(update2); - if (onexit == null) - exit.remove(); - else - onexit(exit); - return enter && update2 ? enter.merge(update2).order() : update2; -} - -// node_modules/d3-selection/src/selection/merge.js -function merge_default(selection2) { - if (!(selection2 instanceof Selection)) - throw new Error("invalid merge"); - for (var groups0 = this._groups, groups1 = selection2._groups, m0 = groups0.length, m1 = groups1.length, m2 = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m2; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n2 = group0.length, merge = merges[j] = new Array(n2), node, i = 0; i < n2; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - return new Selection(merges, this._parents); -} - -// node_modules/d3-selection/src/selection/order.js -function order_default() { - for (var groups = this._groups, j = -1, m2 = groups.length; ++j < m2; ) { - for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0; ) { - if (node = group[i]) { - if (next && node.compareDocumentPosition(next) ^ 4) - next.parentNode.insertBefore(node, next); - next = node; - } - } - } - return this; -} - -// node_modules/d3-selection/src/selection/sort.js -function sort_default(compare) { - if (!compare) - compare = ascending; - function compareNode(a2, b) { - return a2 && b ? compare(a2.__data__, b.__data__) : !a2 - !b; - } - for (var groups = this._groups, m2 = groups.length, sortgroups = new Array(m2), j = 0; j < m2; ++j) { - for (var group = groups[j], n2 = group.length, sortgroup = sortgroups[j] = new Array(n2), node, i = 0; i < n2; ++i) { - if (node = group[i]) { - sortgroup[i] = node; - } - } - sortgroup.sort(compareNode); - } - return new Selection(sortgroups, this._parents).order(); -} -function ascending(a2, b) { - return a2 < b ? -1 : a2 > b ? 1 : a2 >= b ? 0 : NaN; -} - -// node_modules/d3-selection/src/selection/call.js -function call_default() { - var callback = arguments[0]; - arguments[0] = this; - callback.apply(null, arguments); - return this; -} - -// node_modules/d3-selection/src/selection/nodes.js -function nodes_default() { - return Array.from(this); -} - -// node_modules/d3-selection/src/selection/node.js -function node_default() { - for (var groups = this._groups, j = 0, m2 = groups.length; j < m2; ++j) { - for (var group = groups[j], i = 0, n2 = group.length; i < n2; ++i) { - var node = group[i]; - if (node) - return node; - } - } - return null; -} - -// node_modules/d3-selection/src/selection/size.js -function size_default() { - let size = 0; - for (const node of this) - ++size; - return size; -} - -// node_modules/d3-selection/src/selection/empty.js -function empty_default() { - return !this.node(); -} - -// node_modules/d3-selection/src/selection/each.js -function each_default(callback) { - for (var groups = this._groups, j = 0, m2 = groups.length; j < m2; ++j) { - for (var group = groups[j], i = 0, n2 = group.length, node; i < n2; ++i) { - if (node = group[i]) - callback.call(node, node.__data__, i, group); - } - } - return this; -} - -// node_modules/d3-selection/src/selection/attr.js -function attrRemove(name) { - return function() { - this.removeAttribute(name); - }; -} -function attrRemoveNS(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} -function attrConstant(name, value) { - return function() { - this.setAttribute(name, value); - }; -} -function attrConstantNS(fullname, value) { - return function() { - this.setAttributeNS(fullname.space, fullname.local, value); - }; -} -function attrFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) - this.removeAttribute(name); - else - this.setAttribute(name, v); - }; -} -function attrFunctionNS(fullname, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) - this.removeAttributeNS(fullname.space, fullname.local); - else - this.setAttributeNS(fullname.space, fullname.local, v); - }; -} -function attr_default(name, value) { - var fullname = namespace_default(name); - if (arguments.length < 2) { - var node = this.node(); - return fullname.local ? node.getAttributeNS(fullname.space, fullname.local) : node.getAttribute(fullname); - } - return this.each((value == null ? fullname.local ? attrRemoveNS : attrRemove : typeof value === "function" ? fullname.local ? attrFunctionNS : attrFunction : fullname.local ? attrConstantNS : attrConstant)(fullname, value)); -} - -// node_modules/d3-selection/src/window.js -function window_default(node) { - return node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView; -} - -// node_modules/d3-selection/src/selection/style.js -function styleRemove(name) { - return function() { - this.style.removeProperty(name); - }; -} -function styleConstant(name, value, priority) { - return function() { - this.style.setProperty(name, value, priority); - }; -} -function styleFunction(name, value, priority) { - return function() { - var v = value.apply(this, arguments); - if (v == null) - this.style.removeProperty(name); - else - this.style.setProperty(name, v, priority); - }; -} -function style_default(name, value, priority) { - return arguments.length > 1 ? this.each((value == null ? styleRemove : typeof value === "function" ? styleFunction : styleConstant)(name, value, priority == null ? "" : priority)) : styleValue(this.node(), name); -} -function styleValue(node, name) { - return node.style.getPropertyValue(name) || window_default(node).getComputedStyle(node, null).getPropertyValue(name); -} - -// node_modules/d3-selection/src/selection/property.js -function propertyRemove(name) { - return function() { - delete this[name]; - }; -} -function propertyConstant(name, value) { - return function() { - this[name] = value; - }; -} -function propertyFunction(name, value) { - return function() { - var v = value.apply(this, arguments); - if (v == null) - delete this[name]; - else - this[name] = v; - }; -} -function property_default(name, value) { - return arguments.length > 1 ? this.each((value == null ? propertyRemove : typeof value === "function" ? propertyFunction : propertyConstant)(name, value)) : this.node()[name]; -} - -// node_modules/d3-selection/src/selection/classed.js -function classArray(string) { - return string.trim().split(/^|\s+/); -} -function classList(node) { - return node.classList || new ClassList(node); -} -function ClassList(node) { - this._node = node; - this._names = classArray(node.getAttribute("class") || ""); -} -ClassList.prototype = { - add: function(name) { - var i = this._names.indexOf(name); - if (i < 0) { - this._names.push(name); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - remove: function(name) { - var i = this._names.indexOf(name); - if (i >= 0) { - this._names.splice(i, 1); - this._node.setAttribute("class", this._names.join(" ")); - } - }, - contains: function(name) { - return this._names.indexOf(name) >= 0; - } -}; -function classedAdd(node, names) { - var list = classList(node), i = -1, n2 = names.length; - while (++i < n2) - list.add(names[i]); -} -function classedRemove(node, names) { - var list = classList(node), i = -1, n2 = names.length; - while (++i < n2) - list.remove(names[i]); -} -function classedTrue(names) { - return function() { - classedAdd(this, names); - }; -} -function classedFalse(names) { - return function() { - classedRemove(this, names); - }; -} -function classedFunction(names, value) { - return function() { - (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names); - }; -} -function classed_default(name, value) { - var names = classArray(name + ""); - if (arguments.length < 2) { - var list = classList(this.node()), i = -1, n2 = names.length; - while (++i < n2) - if (!list.contains(names[i])) - return false; - return true; - } - return this.each((typeof value === "function" ? classedFunction : value ? classedTrue : classedFalse)(names, value)); -} - -// node_modules/d3-selection/src/selection/text.js -function textRemove() { - this.textContent = ""; -} -function textConstant(value) { - return function() { - this.textContent = value; - }; -} -function textFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.textContent = v == null ? "" : v; - }; -} -function text_default(value) { - return arguments.length ? this.each(value == null ? textRemove : (typeof value === "function" ? textFunction : textConstant)(value)) : this.node().textContent; -} - -// node_modules/d3-selection/src/selection/html.js -function htmlRemove() { - this.innerHTML = ""; -} -function htmlConstant(value) { - return function() { - this.innerHTML = value; - }; -} -function htmlFunction(value) { - return function() { - var v = value.apply(this, arguments); - this.innerHTML = v == null ? "" : v; - }; -} -function html_default(value) { - return arguments.length ? this.each(value == null ? htmlRemove : (typeof value === "function" ? htmlFunction : htmlConstant)(value)) : this.node().innerHTML; -} - -// node_modules/d3-selection/src/selection/raise.js -function raise() { - if (this.nextSibling) - this.parentNode.appendChild(this); -} -function raise_default() { - return this.each(raise); -} - -// node_modules/d3-selection/src/selection/lower.js -function lower() { - if (this.previousSibling) - this.parentNode.insertBefore(this, this.parentNode.firstChild); -} -function lower_default() { - return this.each(lower); -} - -// node_modules/d3-selection/src/selection/append.js -function append_default(name) { - var create2 = typeof name === "function" ? name : creator_default(name); - return this.select(function() { - return this.appendChild(create2.apply(this, arguments)); - }); -} - -// node_modules/d3-selection/src/selection/insert.js -function constantNull() { - return null; -} -function insert_default(name, before) { - var create2 = typeof name === "function" ? name : creator_default(name), select = before == null ? constantNull : typeof before === "function" ? before : selector_default(before); - return this.select(function() { - return this.insertBefore(create2.apply(this, arguments), select.apply(this, arguments) || null); - }); -} - -// node_modules/d3-selection/src/selection/remove.js -function remove() { - var parent = this.parentNode; - if (parent) - parent.removeChild(this); -} -function remove_default() { - return this.each(remove); -} - -// node_modules/d3-selection/src/selection/clone.js -function selection_cloneShallow() { - var clone3 = this.cloneNode(false), parent = this.parentNode; - return parent ? parent.insertBefore(clone3, this.nextSibling) : clone3; -} -function selection_cloneDeep() { - var clone3 = this.cloneNode(true), parent = this.parentNode; - return parent ? parent.insertBefore(clone3, this.nextSibling) : clone3; -} -function clone_default(deep) { - return this.select(deep ? selection_cloneDeep : selection_cloneShallow); -} - -// node_modules/d3-selection/src/selection/datum.js -function datum_default(value) { - return arguments.length ? this.property("__data__", value) : this.node().__data__; -} - -// node_modules/d3-selection/src/selection/on.js -function contextListener(listener) { - return function(event) { - listener.call(this, event, this.__data__); - }; -} -function parseTypenames2(typenames) { - return typenames.trim().split(/^|\s+/).map(function(t) { - var name = "", i = t.indexOf("."); - if (i >= 0) - name = t.slice(i + 1), t = t.slice(0, i); - return { type: t, name }; - }); -} -function onRemove(typename) { - return function() { - var on = this.__on; - if (!on) - return; - for (var j = 0, i = -1, m2 = on.length, o; j < m2; ++j) { - if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.options); - } else { - on[++i] = o; - } - } - if (++i) - on.length = i; - else - delete this.__on; - }; -} -function onAdd(typename, value, options) { - return function() { - var on = this.__on, o, listener = contextListener(value); - if (on) - for (var j = 0, m2 = on.length; j < m2; ++j) { - if ((o = on[j]).type === typename.type && o.name === typename.name) { - this.removeEventListener(o.type, o.listener, o.options); - this.addEventListener(o.type, o.listener = listener, o.options = options); - o.value = value; - return; - } - } - this.addEventListener(typename.type, listener, options); - o = { type: typename.type, name: typename.name, value, listener, options }; - if (!on) - this.__on = [o]; - else - on.push(o); - }; -} -function on_default(typename, value, options) { - var typenames = parseTypenames2(typename + ""), i, n2 = typenames.length, t; - if (arguments.length < 2) { - var on = this.node().__on; - if (on) - for (var j = 0, m2 = on.length, o; j < m2; ++j) { - for (i = 0, o = on[j]; i < n2; ++i) { - if ((t = typenames[i]).type === o.type && t.name === o.name) { - return o.value; - } - } - } - return; - } - on = value ? onAdd : onRemove; - for (i = 0; i < n2; ++i) - this.each(on(typenames[i], value, options)); - return this; -} - -// node_modules/d3-selection/src/selection/dispatch.js -function dispatchEvent(node, type2, params) { - var window2 = window_default(node), event = window2.CustomEvent; - if (typeof event === "function") { - event = new event(type2, params); - } else { - event = window2.document.createEvent("Event"); - if (params) - event.initEvent(type2, params.bubbles, params.cancelable), event.detail = params.detail; - else - event.initEvent(type2, false, false); - } - node.dispatchEvent(event); -} -function dispatchConstant(type2, params) { - return function() { - return dispatchEvent(this, type2, params); - }; -} -function dispatchFunction(type2, params) { - return function() { - return dispatchEvent(this, type2, params.apply(this, arguments)); - }; -} -function dispatch_default2(type2, params) { - return this.each((typeof params === "function" ? dispatchFunction : dispatchConstant)(type2, params)); -} - -// node_modules/d3-selection/src/selection/iterator.js -function* iterator_default() { - for (var groups = this._groups, j = 0, m2 = groups.length; j < m2; ++j) { - for (var group = groups[j], i = 0, n2 = group.length, node; i < n2; ++i) { - if (node = group[i]) - yield node; - } - } -} - -// node_modules/d3-selection/src/selection/index.js -var root = [null]; -function Selection(groups, parents) { - this._groups = groups; - this._parents = parents; -} -function selection() { - return new Selection([[document.documentElement]], root); -} -function selection_selection() { - return this; -} -Selection.prototype = selection.prototype = { - constructor: Selection, - select: select_default, - selectAll: selectAll_default, - selectChild: selectChild_default, - selectChildren: selectChildren_default, - filter: filter_default, - data: data_default, - enter: enter_default, - exit: exit_default, - join: join_default, - merge: merge_default, - selection: selection_selection, - order: order_default, - sort: sort_default, - call: call_default, - nodes: nodes_default, - node: node_default, - size: size_default, - empty: empty_default, - each: each_default, - attr: attr_default, - style: style_default, - property: property_default, - classed: classed_default, - text: text_default, - html: html_default, - raise: raise_default, - lower: lower_default, - append: append_default, - insert: insert_default, - remove: remove_default, - clone: clone_default, - datum: datum_default, - on: on_default, - dispatch: dispatch_default2, - [Symbol.iterator]: iterator_default -}; -var selection_default = selection; - -// node_modules/d3-selection/src/select.js -function select_default2(selector) { - return typeof selector === "string" ? new Selection([[document.querySelector(selector)]], [document.documentElement]) : new Selection([[selector]], root); -} - -// node_modules/d3-selection/src/sourceEvent.js -function sourceEvent_default(event) { - let sourceEvent; - while (sourceEvent = event.sourceEvent) - event = sourceEvent; - return event; -} - -// node_modules/d3-selection/src/pointer.js -function pointer_default(event, node) { - event = sourceEvent_default(event); - if (node === void 0) - node = event.currentTarget; - if (node) { - var svg = node.ownerSVGElement || node; - if (svg.createSVGPoint) { - var point3 = svg.createSVGPoint(); - point3.x = event.clientX, point3.y = event.clientY; - point3 = point3.matrixTransform(node.getScreenCTM().inverse()); - return [point3.x, point3.y]; - } - if (node.getBoundingClientRect) { - var rect = node.getBoundingClientRect(); - return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop]; - } - } - return [event.pageX, event.pageY]; -} - -// node_modules/d3-drag/src/noevent.js -function nopropagation(event) { - event.stopImmediatePropagation(); -} -function noevent_default(event) { - event.preventDefault(); - event.stopImmediatePropagation(); -} - -// node_modules/d3-drag/src/nodrag.js -function nodrag_default(view) { - var root2 = view.document.documentElement, selection2 = select_default2(view).on("dragstart.drag", noevent_default, true); - if ("onselectstart" in root2) { - selection2.on("selectstart.drag", noevent_default, true); - } else { - root2.__noselect = root2.style.MozUserSelect; - root2.style.MozUserSelect = "none"; - } -} -function yesdrag(view, noclick) { - var root2 = view.document.documentElement, selection2 = select_default2(view).on("dragstart.drag", null); - if (noclick) { - selection2.on("click.drag", noevent_default, true); - setTimeout(function() { - selection2.on("click.drag", null); - }, 0); - } - if ("onselectstart" in root2) { - selection2.on("selectstart.drag", null); - } else { - root2.style.MozUserSelect = root2.__noselect; - delete root2.__noselect; - } -} - -// node_modules/d3-drag/src/constant.js -var constant_default2 = (x4) => () => x4; - -// node_modules/d3-drag/src/event.js -function DragEvent(type2, { - sourceEvent, - subject, - target, - identifier, - active, - x: x4, - y: y4, - dx, - dy, - dispatch: dispatch2 -}) { - Object.defineProperties(this, { - type: { value: type2, enumerable: true, configurable: true }, - sourceEvent: { value: sourceEvent, enumerable: true, configurable: true }, - subject: { value: subject, enumerable: true, configurable: true }, - target: { value: target, enumerable: true, configurable: true }, - identifier: { value: identifier, enumerable: true, configurable: true }, - active: { value: active, enumerable: true, configurable: true }, - x: { value: x4, enumerable: true, configurable: true }, - y: { value: y4, enumerable: true, configurable: true }, - dx: { value: dx, enumerable: true, configurable: true }, - dy: { value: dy, enumerable: true, configurable: true }, - _: { value: dispatch2 } - }); -} -DragEvent.prototype.on = function() { - var value = this._.on.apply(this._, arguments); - return value === this._ ? this : value; -}; - -// node_modules/d3-drag/src/drag.js -function defaultFilter(event) { - return !event.ctrlKey && !event.button; -} -function defaultContainer() { - return this.parentNode; -} -function defaultSubject(event, d) { - return d == null ? { x: event.x, y: event.y } : d; -} -function defaultTouchable() { - return navigator.maxTouchPoints || "ontouchstart" in this; -} -function drag_default() { - var filter2 = defaultFilter, container = defaultContainer, subject = defaultSubject, touchable = defaultTouchable, gestures = {}, listeners = dispatch_default("start", "drag", "end"), active = 0, mousedownx, mousedowny, mousemoving, touchending, clickDistance2 = 0; - function drag(selection2) { - selection2.on("mousedown.drag", mousedowned).filter(touchable).on("touchstart.drag", touchstarted).on("touchmove.drag", touchmoved).on("touchend.drag touchcancel.drag", touchended).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - function mousedowned(event, d) { - if (touchending || !filter2.call(this, event, d)) - return; - var gesture = beforestart(this, container.call(this, event, d), event, d, "mouse"); - if (!gesture) - return; - select_default2(event.view).on("mousemove.drag", mousemoved, true).on("mouseup.drag", mouseupped, true); - nodrag_default(event.view); - nopropagation(event); - mousemoving = false; - mousedownx = event.clientX; - mousedowny = event.clientY; - gesture("start", event); - } - function mousemoved(event) { - noevent_default(event); - if (!mousemoving) { - var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny; - mousemoving = dx * dx + dy * dy > clickDistance2; - } - gestures.mouse("drag", event); - } - function mouseupped(event) { - select_default2(event.view).on("mousemove.drag mouseup.drag", null); - yesdrag(event.view, mousemoving); - noevent_default(event); - gestures.mouse("end", event); - } - function touchstarted(event, d) { - if (!filter2.call(this, event, d)) - return; - var touches = event.changedTouches, c3 = container.call(this, event, d), n2 = touches.length, i, gesture; - for (i = 0; i < n2; ++i) { - if (gesture = beforestart(this, c3, event, d, touches[i].identifier, touches[i])) { - nopropagation(event); - gesture("start", event, touches[i]); - } - } - } - function touchmoved(event) { - var touches = event.changedTouches, n2 = touches.length, i, gesture; - for (i = 0; i < n2; ++i) { - if (gesture = gestures[touches[i].identifier]) { - noevent_default(event); - gesture("drag", event, touches[i]); - } - } - } - function touchended(event) { - var touches = event.changedTouches, n2 = touches.length, i, gesture; - if (touchending) - clearTimeout(touchending); - touchending = setTimeout(function() { - touchending = null; - }, 500); - for (i = 0; i < n2; ++i) { - if (gesture = gestures[touches[i].identifier]) { - nopropagation(event); - gesture("end", event, touches[i]); - } - } - } - function beforestart(that, container2, event, d, identifier, touch) { - var dispatch2 = listeners.copy(), p = pointer_default(touch || event, container2), dx, dy, s2; - if ((s2 = subject.call(that, new DragEvent("beforestart", { - sourceEvent: event, - target: drag, - identifier, - active, - x: p[0], - y: p[1], - dx: 0, - dy: 0, - dispatch: dispatch2 - }), d)) == null) - return; - dx = s2.x - p[0] || 0; - dy = s2.y - p[1] || 0; - return function gesture(type2, event2, touch2) { - var p0 = p, n2; - switch (type2) { - case "start": - gestures[identifier] = gesture, n2 = active++; - break; - case "end": - delete gestures[identifier], --active; - case "drag": - p = pointer_default(touch2 || event2, container2), n2 = active; - break; - } - dispatch2.call( - type2, - that, - new DragEvent(type2, { - sourceEvent: event2, - subject: s2, - target: drag, - identifier, - active: n2, - x: p[0] + dx, - y: p[1] + dy, - dx: p[0] - p0[0], - dy: p[1] - p0[1], - dispatch: dispatch2 - }), - d - ); - }; - } - drag.filter = function(_) { - return arguments.length ? (filter2 = typeof _ === "function" ? _ : constant_default2(!!_), drag) : filter2; - }; - drag.container = function(_) { - return arguments.length ? (container = typeof _ === "function" ? _ : constant_default2(_), drag) : container; - }; - drag.subject = function(_) { - return arguments.length ? (subject = typeof _ === "function" ? _ : constant_default2(_), drag) : subject; - }; - drag.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant_default2(!!_), drag) : touchable; - }; - drag.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? drag : value; - }; - drag.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2); - }; - return drag; -} - -// node_modules/d3-color/src/define.js -function define_default(constructor, factory, prototype) { - constructor.prototype = factory.prototype = prototype; - prototype.constructor = constructor; -} -function extend(parent, definition) { - var prototype = Object.create(parent.prototype); - for (var key in definition) - prototype[key] = definition[key]; - return prototype; -} - -// node_modules/d3-color/src/color.js -function Color() { -} -var darker = 0.7; -var brighter = 1 / darker; -var reI = "\\s*([+-]?\\d+)\\s*"; -var reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*"; -var reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*"; -var reHex = /^#([0-9a-f]{3,8})$/; -var reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"); -var reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"); -var reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"); -var reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"); -var reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"); -var reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$"); -var named = { - aliceblue: 15792383, - antiquewhite: 16444375, - aqua: 65535, - aquamarine: 8388564, - azure: 15794175, - beige: 16119260, - bisque: 16770244, - black: 0, - blanchedalmond: 16772045, - blue: 255, - blueviolet: 9055202, - brown: 10824234, - burlywood: 14596231, - cadetblue: 6266528, - chartreuse: 8388352, - chocolate: 13789470, - coral: 16744272, - cornflowerblue: 6591981, - cornsilk: 16775388, - crimson: 14423100, - cyan: 65535, - darkblue: 139, - darkcyan: 35723, - darkgoldenrod: 12092939, - darkgray: 11119017, - darkgreen: 25600, - darkgrey: 11119017, - darkkhaki: 12433259, - darkmagenta: 9109643, - darkolivegreen: 5597999, - darkorange: 16747520, - darkorchid: 10040012, - darkred: 9109504, - darksalmon: 15308410, - darkseagreen: 9419919, - darkslateblue: 4734347, - darkslategray: 3100495, - darkslategrey: 3100495, - darkturquoise: 52945, - darkviolet: 9699539, - deeppink: 16716947, - deepskyblue: 49151, - dimgray: 6908265, - dimgrey: 6908265, - dodgerblue: 2003199, - firebrick: 11674146, - floralwhite: 16775920, - forestgreen: 2263842, - fuchsia: 16711935, - gainsboro: 14474460, - ghostwhite: 16316671, - gold: 16766720, - goldenrod: 14329120, - gray: 8421504, - green: 32768, - greenyellow: 11403055, - grey: 8421504, - honeydew: 15794160, - hotpink: 16738740, - indianred: 13458524, - indigo: 4915330, - ivory: 16777200, - khaki: 15787660, - lavender: 15132410, - lavenderblush: 16773365, - lawngreen: 8190976, - lemonchiffon: 16775885, - lightblue: 11393254, - lightcoral: 15761536, - lightcyan: 14745599, - lightgoldenrodyellow: 16448210, - lightgray: 13882323, - lightgreen: 9498256, - lightgrey: 13882323, - lightpink: 16758465, - lightsalmon: 16752762, - lightseagreen: 2142890, - lightskyblue: 8900346, - lightslategray: 7833753, - lightslategrey: 7833753, - lightsteelblue: 11584734, - lightyellow: 16777184, - lime: 65280, - limegreen: 3329330, - linen: 16445670, - magenta: 16711935, - maroon: 8388608, - mediumaquamarine: 6737322, - mediumblue: 205, - mediumorchid: 12211667, - mediumpurple: 9662683, - mediumseagreen: 3978097, - mediumslateblue: 8087790, - mediumspringgreen: 64154, - mediumturquoise: 4772300, - mediumvioletred: 13047173, - midnightblue: 1644912, - mintcream: 16121850, - mistyrose: 16770273, - moccasin: 16770229, - navajowhite: 16768685, - navy: 128, - oldlace: 16643558, - olive: 8421376, - olivedrab: 7048739, - orange: 16753920, - orangered: 16729344, - orchid: 14315734, - palegoldenrod: 15657130, - palegreen: 10025880, - paleturquoise: 11529966, - palevioletred: 14381203, - papayawhip: 16773077, - peachpuff: 16767673, - peru: 13468991, - pink: 16761035, - plum: 14524637, - powderblue: 11591910, - purple: 8388736, - rebeccapurple: 6697881, - red: 16711680, - rosybrown: 12357519, - royalblue: 4286945, - saddlebrown: 9127187, - salmon: 16416882, - sandybrown: 16032864, - seagreen: 3050327, - seashell: 16774638, - sienna: 10506797, - silver: 12632256, - skyblue: 8900331, - slateblue: 6970061, - slategray: 7372944, - slategrey: 7372944, - snow: 16775930, - springgreen: 65407, - steelblue: 4620980, - tan: 13808780, - teal: 32896, - thistle: 14204888, - tomato: 16737095, - turquoise: 4251856, - violet: 15631086, - wheat: 16113331, - white: 16777215, - whitesmoke: 16119285, - yellow: 16776960, - yellowgreen: 10145074 -}; -define_default(Color, color, { - copy: function(channels) { - return Object.assign(new this.constructor(), this, channels); - }, - displayable: function() { - return this.rgb().displayable(); - }, - hex: color_formatHex, - // Deprecated! Use color.formatHex. - formatHex: color_formatHex, - formatHsl: color_formatHsl, - formatRgb: color_formatRgb, - toString: color_formatRgb -}); -function color_formatHex() { - return this.rgb().formatHex(); -} -function color_formatHsl() { - return hslConvert(this).formatHsl(); -} -function color_formatRgb() { - return this.rgb().formatRgb(); -} -function color(format2) { - var m2, l2; - format2 = (format2 + "").trim().toLowerCase(); - return (m2 = reHex.exec(format2)) ? (l2 = m2[1].length, m2 = parseInt(m2[1], 16), l2 === 6 ? rgbn(m2) : l2 === 3 ? new Rgb(m2 >> 8 & 15 | m2 >> 4 & 240, m2 >> 4 & 15 | m2 & 240, (m2 & 15) << 4 | m2 & 15, 1) : l2 === 8 ? rgba(m2 >> 24 & 255, m2 >> 16 & 255, m2 >> 8 & 255, (m2 & 255) / 255) : l2 === 4 ? rgba(m2 >> 12 & 15 | m2 >> 8 & 240, m2 >> 8 & 15 | m2 >> 4 & 240, m2 >> 4 & 15 | m2 & 240, ((m2 & 15) << 4 | m2 & 15) / 255) : null) : (m2 = reRgbInteger.exec(format2)) ? new Rgb(m2[1], m2[2], m2[3], 1) : (m2 = reRgbPercent.exec(format2)) ? new Rgb(m2[1] * 255 / 100, m2[2] * 255 / 100, m2[3] * 255 / 100, 1) : (m2 = reRgbaInteger.exec(format2)) ? rgba(m2[1], m2[2], m2[3], m2[4]) : (m2 = reRgbaPercent.exec(format2)) ? rgba(m2[1] * 255 / 100, m2[2] * 255 / 100, m2[3] * 255 / 100, m2[4]) : (m2 = reHslPercent.exec(format2)) ? hsla(m2[1], m2[2] / 100, m2[3] / 100, 1) : (m2 = reHslaPercent.exec(format2)) ? hsla(m2[1], m2[2] / 100, m2[3] / 100, m2[4]) : named.hasOwnProperty(format2) ? rgbn(named[format2]) : format2 === "transparent" ? new Rgb(NaN, NaN, NaN, 0) : null; -} -function rgbn(n2) { - return new Rgb(n2 >> 16 & 255, n2 >> 8 & 255, n2 & 255, 1); -} -function rgba(r, g, b, a2) { - if (a2 <= 0) - r = g = b = NaN; - return new Rgb(r, g, b, a2); -} -function rgbConvert(o) { - if (!(o instanceof Color)) - o = color(o); - if (!o) - return new Rgb(); - o = o.rgb(); - return new Rgb(o.r, o.g, o.b, o.opacity); -} -function rgb(r, g, b, opacity) { - return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity); -} -function Rgb(r, g, b, opacity) { - this.r = +r; - this.g = +g; - this.b = +b; - this.opacity = +opacity; -} -define_default(Rgb, rgb, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); - }, - rgb: function() { - return this; - }, - displayable: function() { - return -0.5 <= this.r && this.r < 255.5 && (-0.5 <= this.g && this.g < 255.5) && (-0.5 <= this.b && this.b < 255.5) && (0 <= this.opacity && this.opacity <= 1); - }, - hex: rgb_formatHex, - // Deprecated! Use color.formatHex. - formatHex: rgb_formatHex, - formatRgb: rgb_formatRgb, - toString: rgb_formatRgb -})); -function rgb_formatHex() { - return "#" + hex(this.r) + hex(this.g) + hex(this.b); -} -function rgb_formatRgb() { - var a2 = this.opacity; - a2 = isNaN(a2) ? 1 : Math.max(0, Math.min(1, a2)); - return (a2 === 1 ? "rgb(" : "rgba(") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (a2 === 1 ? ")" : ", " + a2 + ")"); -} -function hex(value) { - value = Math.max(0, Math.min(255, Math.round(value) || 0)); - return (value < 16 ? "0" : "") + value.toString(16); -} -function hsla(h, s2, l2, a2) { - if (a2 <= 0) - h = s2 = l2 = NaN; - else if (l2 <= 0 || l2 >= 1) - h = s2 = NaN; - else if (s2 <= 0) - h = NaN; - return new Hsl(h, s2, l2, a2); -} -function hslConvert(o) { - if (o instanceof Hsl) - return new Hsl(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Color)) - o = color(o); - if (!o) - return new Hsl(); - if (o instanceof Hsl) - return o; - o = o.rgb(); - var r = o.r / 255, g = o.g / 255, b = o.b / 255, min3 = Math.min(r, g, b), max4 = Math.max(r, g, b), h = NaN, s2 = max4 - min3, l2 = (max4 + min3) / 2; - if (s2) { - if (r === max4) - h = (g - b) / s2 + (g < b) * 6; - else if (g === max4) - h = (b - r) / s2 + 2; - else - h = (r - g) / s2 + 4; - s2 /= l2 < 0.5 ? max4 + min3 : 2 - max4 - min3; - h *= 60; - } else { - s2 = l2 > 0 && l2 < 1 ? 0 : h; - } - return new Hsl(h, s2, l2, o.opacity); -} -function hsl(h, s2, l2, opacity) { - return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s2, l2, opacity == null ? 1 : opacity); -} -function Hsl(h, s2, l2, opacity) { - this.h = +h; - this.s = +s2; - this.l = +l2; - this.opacity = +opacity; -} -define_default(Hsl, hsl, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Hsl(this.h, this.s, this.l * k, this.opacity); - }, - rgb: function() { - var h = this.h % 360 + (this.h < 0) * 360, s2 = isNaN(h) || isNaN(this.s) ? 0 : this.s, l2 = this.l, m2 = l2 + (l2 < 0.5 ? l2 : 1 - l2) * s2, m1 = 2 * l2 - m2; - return new Rgb( - hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), - hsl2rgb(h, m1, m2), - hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), - this.opacity - ); - }, - displayable: function() { - return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && (0 <= this.l && this.l <= 1) && (0 <= this.opacity && this.opacity <= 1); - }, - formatHsl: function() { - var a2 = this.opacity; - a2 = isNaN(a2) ? 1 : Math.max(0, Math.min(1, a2)); - return (a2 === 1 ? "hsl(" : "hsla(") + (this.h || 0) + ", " + (this.s || 0) * 100 + "%, " + (this.l || 0) * 100 + "%" + (a2 === 1 ? ")" : ", " + a2 + ")"); - } -})); -function hsl2rgb(h, m1, m2) { - return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255; -} - -// node_modules/d3-color/src/math.js -var radians = Math.PI / 180; -var degrees = 180 / Math.PI; - -// node_modules/d3-color/src/cubehelix.js -var A = -0.14861; -var B = 1.78277; -var C = -0.29227; -var D = -0.90649; -var E = 1.97294; -var ED = E * D; -var EB = E * B; -var BC_DA = B * C - D * A; -function cubehelixConvert(o) { - if (o instanceof Cubehelix) - return new Cubehelix(o.h, o.s, o.l, o.opacity); - if (!(o instanceof Rgb)) - o = rgbConvert(o); - var r = o.r / 255, g = o.g / 255, b = o.b / 255, l2 = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB), bl = b - l2, k = (E * (g - l2) - C * bl) / D, s2 = Math.sqrt(k * k + bl * bl) / (E * l2 * (1 - l2)), h = s2 ? Math.atan2(k, bl) * degrees - 120 : NaN; - return new Cubehelix(h < 0 ? h + 360 : h, s2, l2, o.opacity); -} -function cubehelix(h, s2, l2, opacity) { - return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s2, l2, opacity == null ? 1 : opacity); -} -function Cubehelix(h, s2, l2, opacity) { - this.h = +h; - this.s = +s2; - this.l = +l2; - this.opacity = +opacity; -} -define_default(Cubehelix, cubehelix, extend(Color, { - brighter: function(k) { - k = k == null ? brighter : Math.pow(brighter, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - darker: function(k) { - k = k == null ? darker : Math.pow(darker, k); - return new Cubehelix(this.h, this.s, this.l * k, this.opacity); - }, - rgb: function() { - var h = isNaN(this.h) ? 0 : (this.h + 120) * radians, l2 = +this.l, a2 = isNaN(this.s) ? 0 : this.s * l2 * (1 - l2), cosh2 = Math.cos(h), sinh2 = Math.sin(h); - return new Rgb( - 255 * (l2 + a2 * (A * cosh2 + B * sinh2)), - 255 * (l2 + a2 * (C * cosh2 + D * sinh2)), - 255 * (l2 + a2 * (E * cosh2)), - this.opacity - ); - } -})); - -// node_modules/d3-interpolate/src/basis.js -function basis(t1, v0, v1, v2, v3) { - var t2 = t1 * t1, t3 = t2 * t1; - return ((1 - 3 * t1 + 3 * t2 - t3) * v0 + (4 - 6 * t2 + 3 * t3) * v1 + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2 + t3 * v3) / 6; -} -function basis_default(values) { - var n2 = values.length - 1; - return function(t) { - var i = t <= 0 ? t = 0 : t >= 1 ? (t = 1, n2 - 1) : Math.floor(t * n2), v1 = values[i], v2 = values[i + 1], v0 = i > 0 ? values[i - 1] : 2 * v1 - v2, v3 = i < n2 - 1 ? values[i + 2] : 2 * v2 - v1; - return basis((t - i / n2) * n2, v0, v1, v2, v3); - }; -} - -// node_modules/d3-interpolate/src/basisClosed.js -function basisClosed_default(values) { - var n2 = values.length; - return function(t) { - var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n2), v0 = values[(i + n2 - 1) % n2], v1 = values[i % n2], v2 = values[(i + 1) % n2], v3 = values[(i + 2) % n2]; - return basis((t - i / n2) * n2, v0, v1, v2, v3); - }; -} - -// node_modules/d3-interpolate/src/constant.js -var constant_default3 = (x4) => () => x4; - -// node_modules/d3-interpolate/src/color.js -function linear(a2, d) { - return function(t) { - return a2 + t * d; - }; -} -function exponential(a2, b, y4) { - return a2 = Math.pow(a2, y4), b = Math.pow(b, y4) - a2, y4 = 1 / y4, function(t) { - return Math.pow(a2 + t * b, y4); - }; -} -function hue(a2, b) { - var d = b - a2; - return d ? linear(a2, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant_default3(isNaN(a2) ? b : a2); -} -function gamma(y4) { - return (y4 = +y4) === 1 ? nogamma : function(a2, b) { - return b - a2 ? exponential(a2, b, y4) : constant_default3(isNaN(a2) ? b : a2); - }; -} -function nogamma(a2, b) { - var d = b - a2; - return d ? linear(a2, d) : constant_default3(isNaN(a2) ? b : a2); -} - -// node_modules/d3-interpolate/src/rgb.js -var rgb_default = function rgbGamma(y4) { - var color2 = gamma(y4); - function rgb2(start2, end) { - var r = color2((start2 = rgb(start2)).r, (end = rgb(end)).r), g = color2(start2.g, end.g), b = color2(start2.b, end.b), opacity = nogamma(start2.opacity, end.opacity); - return function(t) { - start2.r = r(t); - start2.g = g(t); - start2.b = b(t); - start2.opacity = opacity(t); - return start2 + ""; - }; - } - rgb2.gamma = rgbGamma; - return rgb2; -}(1); -function rgbSpline(spline) { - return function(colors) { - var n2 = colors.length, r = new Array(n2), g = new Array(n2), b = new Array(n2), i, color2; - for (i = 0; i < n2; ++i) { - color2 = rgb(colors[i]); - r[i] = color2.r || 0; - g[i] = color2.g || 0; - b[i] = color2.b || 0; - } - r = spline(r); - g = spline(g); - b = spline(b); - color2.opacity = 1; - return function(t) { - color2.r = r(t); - color2.g = g(t); - color2.b = b(t); - return color2 + ""; - }; - }; -} -var rgbBasis = rgbSpline(basis_default); -var rgbBasisClosed = rgbSpline(basisClosed_default); - -// node_modules/d3-interpolate/src/numberArray.js -function numberArray_default(a2, b) { - if (!b) - b = []; - var n2 = a2 ? Math.min(b.length, a2.length) : 0, c3 = b.slice(), i; - return function(t) { - for (i = 0; i < n2; ++i) - c3[i] = a2[i] * (1 - t) + b[i] * t; - return c3; - }; -} -function isNumberArray(x4) { - return ArrayBuffer.isView(x4) && !(x4 instanceof DataView); -} - -// node_modules/d3-interpolate/src/array.js -function genericArray(a2, b) { - var nb = b ? b.length : 0, na = a2 ? Math.min(nb, a2.length) : 0, x4 = new Array(na), c3 = new Array(nb), i; - for (i = 0; i < na; ++i) - x4[i] = value_default(a2[i], b[i]); - for (; i < nb; ++i) - c3[i] = b[i]; - return function(t) { - for (i = 0; i < na; ++i) - c3[i] = x4[i](t); - return c3; - }; -} - -// node_modules/d3-interpolate/src/date.js -function date_default(a2, b) { - var d = new Date(); - return a2 = +a2, b = +b, function(t) { - return d.setTime(a2 * (1 - t) + b * t), d; - }; -} - -// node_modules/d3-interpolate/src/number.js -function number_default2(a2, b) { - return a2 = +a2, b = +b, function(t) { - return a2 * (1 - t) + b * t; - }; -} - -// node_modules/d3-interpolate/src/object.js -function object_default(a2, b) { - var i = {}, c3 = {}, k; - if (a2 === null || typeof a2 !== "object") - a2 = {}; - if (b === null || typeof b !== "object") - b = {}; - for (k in b) { - if (k in a2) { - i[k] = value_default(a2[k], b[k]); - } else { - c3[k] = b[k]; - } - } - return function(t) { - for (k in i) - c3[k] = i[k](t); - return c3; - }; -} - -// node_modules/d3-interpolate/src/string.js -var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g; -var reB = new RegExp(reA.source, "g"); -function zero(b) { - return function() { - return b; - }; -} -function one(b) { - return function(t) { - return b(t) + ""; - }; -} -function string_default(a2, b) { - var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i = -1, s2 = [], q = []; - a2 = a2 + "", b = b + ""; - while ((am = reA.exec(a2)) && (bm = reB.exec(b))) { - if ((bs = bm.index) > bi) { - bs = b.slice(bi, bs); - if (s2[i]) - s2[i] += bs; - else - s2[++i] = bs; - } - if ((am = am[0]) === (bm = bm[0])) { - if (s2[i]) - s2[i] += bm; - else - s2[++i] = bm; - } else { - s2[++i] = null; - q.push({ i, x: number_default2(am, bm) }); - } - bi = reB.lastIndex; - } - if (bi < b.length) { - bs = b.slice(bi); - if (s2[i]) - s2[i] += bs; - else - s2[++i] = bs; - } - return s2.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function(t) { - for (var i2 = 0, o; i2 < b; ++i2) - s2[(o = q[i2]).i] = o.x(t); - return s2.join(""); - }); -} - -// node_modules/d3-interpolate/src/value.js -function value_default(a2, b) { - var t = typeof b, c3; - return b == null || t === "boolean" ? constant_default3(b) : (t === "number" ? number_default2 : t === "string" ? (c3 = color(b)) ? (b = c3, rgb_default) : string_default : b instanceof color ? rgb_default : b instanceof Date ? date_default : isNumberArray(b) ? numberArray_default : Array.isArray(b) ? genericArray : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object_default : number_default2)(a2, b); -} - -// node_modules/d3-interpolate/src/round.js -function round_default(a2, b) { - return a2 = +a2, b = +b, function(t) { - return Math.round(a2 * (1 - t) + b * t); - }; -} - -// node_modules/d3-interpolate/src/transform/decompose.js -var degrees2 = 180 / Math.PI; -var identity = { - translateX: 0, - translateY: 0, - rotate: 0, - skewX: 0, - scaleX: 1, - scaleY: 1 -}; -function decompose_default(a2, b, c3, d, e, f) { - var scaleX, scaleY, skewX; - if (scaleX = Math.sqrt(a2 * a2 + b * b)) - a2 /= scaleX, b /= scaleX; - if (skewX = a2 * c3 + b * d) - c3 -= a2 * skewX, d -= b * skewX; - if (scaleY = Math.sqrt(c3 * c3 + d * d)) - c3 /= scaleY, d /= scaleY, skewX /= scaleY; - if (a2 * d < b * c3) - a2 = -a2, b = -b, skewX = -skewX, scaleX = -scaleX; - return { - translateX: e, - translateY: f, - rotate: Math.atan2(b, a2) * degrees2, - skewX: Math.atan(skewX) * degrees2, - scaleX, - scaleY - }; -} - -// node_modules/d3-interpolate/src/transform/parse.js -var svgNode; -function parseCss(value) { - const m2 = new (typeof DOMMatrix === "function" ? DOMMatrix : WebKitCSSMatrix)(value + ""); - return m2.isIdentity ? identity : decompose_default(m2.a, m2.b, m2.c, m2.d, m2.e, m2.f); -} -function parseSvg(value) { - if (value == null) - return identity; - if (!svgNode) - svgNode = document.createElementNS("http://www.w3.org/2000/svg", "g"); - svgNode.setAttribute("transform", value); - if (!(value = svgNode.transform.baseVal.consolidate())) - return identity; - value = value.matrix; - return decompose_default(value.a, value.b, value.c, value.d, value.e, value.f); -} - -// node_modules/d3-interpolate/src/transform/index.js -function interpolateTransform(parse2, pxComma, pxParen, degParen) { - function pop(s2) { - return s2.length ? s2.pop() + " " : ""; - } - function translate(xa, ya, xb, yb, s2, q) { - if (xa !== xb || ya !== yb) { - var i = s2.push("translate(", null, pxComma, null, pxParen); - q.push({ i: i - 4, x: number_default2(xa, xb) }, { i: i - 2, x: number_default2(ya, yb) }); - } else if (xb || yb) { - s2.push("translate(" + xb + pxComma + yb + pxParen); - } - } - function rotate(a2, b, s2, q) { - if (a2 !== b) { - if (a2 - b > 180) - b += 360; - else if (b - a2 > 180) - a2 += 360; - q.push({ i: s2.push(pop(s2) + "rotate(", null, degParen) - 2, x: number_default2(a2, b) }); - } else if (b) { - s2.push(pop(s2) + "rotate(" + b + degParen); - } - } - function skewX(a2, b, s2, q) { - if (a2 !== b) { - q.push({ i: s2.push(pop(s2) + "skewX(", null, degParen) - 2, x: number_default2(a2, b) }); - } else if (b) { - s2.push(pop(s2) + "skewX(" + b + degParen); - } - } - function scale(xa, ya, xb, yb, s2, q) { - if (xa !== xb || ya !== yb) { - var i = s2.push(pop(s2) + "scale(", null, ",", null, ")"); - q.push({ i: i - 4, x: number_default2(xa, xb) }, { i: i - 2, x: number_default2(ya, yb) }); - } else if (xb !== 1 || yb !== 1) { - s2.push(pop(s2) + "scale(" + xb + "," + yb + ")"); - } - } - return function(a2, b) { - var s2 = [], q = []; - a2 = parse2(a2), b = parse2(b); - translate(a2.translateX, a2.translateY, b.translateX, b.translateY, s2, q); - rotate(a2.rotate, b.rotate, s2, q); - skewX(a2.skewX, b.skewX, s2, q); - scale(a2.scaleX, a2.scaleY, b.scaleX, b.scaleY, s2, q); - a2 = b = null; - return function(t) { - var i = -1, n2 = q.length, o; - while (++i < n2) - s2[(o = q[i]).i] = o.x(t); - return s2.join(""); - }; - }; -} -var interpolateTransformCss = interpolateTransform(parseCss, "px, ", "px)", "deg)"); -var interpolateTransformSvg = interpolateTransform(parseSvg, ", ", ")", ")"); - -// node_modules/d3-interpolate/src/zoom.js -var epsilon2 = 1e-12; -function cosh(x4) { - return ((x4 = Math.exp(x4)) + 1 / x4) / 2; -} -function sinh(x4) { - return ((x4 = Math.exp(x4)) - 1 / x4) / 2; -} -function tanh(x4) { - return ((x4 = Math.exp(2 * x4)) - 1) / (x4 + 1); -} -var zoom_default = function zoomRho(rho, rho2, rho4) { - function zoom(p0, p1) { - var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S; - if (d2 < epsilon2) { - S = Math.log(w1 / w0) / rho; - i = function(t) { - return [ - ux0 + t * dx, - uy0 + t * dy, - w0 * Math.exp(rho * t * S) - ]; - }; - } else { - var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1); - S = (r1 - r0) / rho; - i = function(t) { - var s2 = t * S, coshr0 = cosh(r0), u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s2 + r0) - sinh(r0)); - return [ - ux0 + u * dx, - uy0 + u * dy, - w0 * coshr0 / cosh(rho * s2 + r0) - ]; - }; - } - i.duration = S * 1e3 * rho / Math.SQRT2; - return i; - } - zoom.rho = function(_) { - var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2; - return zoomRho(_1, _2, _4); - }; - return zoom; -}(Math.SQRT2, 2, 4); - -// node_modules/d3-interpolate/src/cubehelix.js -function cubehelix2(hue2) { - return function cubehelixGamma(y4) { - y4 = +y4; - function cubehelix3(start2, end) { - var h = hue2((start2 = cubehelix(start2)).h, (end = cubehelix(end)).h), s2 = nogamma(start2.s, end.s), l2 = nogamma(start2.l, end.l), opacity = nogamma(start2.opacity, end.opacity); - return function(t) { - start2.h = h(t); - start2.s = s2(t); - start2.l = l2(Math.pow(t, y4)); - start2.opacity = opacity(t); - return start2 + ""; - }; - } - cubehelix3.gamma = cubehelixGamma; - return cubehelix3; - }(1); -} -var cubehelix_default = cubehelix2(hue); -var cubehelixLong = cubehelix2(nogamma); - -// node_modules/d3-interpolate/src/quantize.js -function quantize_default(interpolator, n2) { - var samples = new Array(n2); - for (var i = 0; i < n2; ++i) - samples[i] = interpolator(i / (n2 - 1)); - return samples; -} - -// node_modules/d3-timer/src/timer.js -var frame = 0; -var timeout = 0; -var interval = 0; -var pokeDelay = 1e3; -var taskHead; -var taskTail; -var clockLast = 0; -var clockNow = 0; -var clockSkew = 0; -var clock = typeof performance === "object" && performance.now ? performance : Date; -var setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { - setTimeout(f, 17); -}; -function now2() { - return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); -} -function clearNow() { - clockNow = 0; -} -function Timer() { - this._call = this._time = this._next = null; -} -Timer.prototype = timer.prototype = { - constructor: Timer, - restart: function(callback, delay, time) { - if (typeof callback !== "function") - throw new TypeError("callback is not a function"); - time = (time == null ? now2() : +time) + (delay == null ? 0 : +delay); - if (!this._next && taskTail !== this) { - if (taskTail) - taskTail._next = this; - else - taskHead = this; - taskTail = this; - } - this._call = callback; - this._time = time; - sleep(); - }, - stop: function() { - if (this._call) { - this._call = null; - this._time = Infinity; - sleep(); - } - } -}; -function timer(callback, delay, time) { - var t = new Timer(); - t.restart(callback, delay, time); - return t; -} -function timerFlush() { - now2(); - ++frame; - var t = taskHead, e; - while (t) { - if ((e = clockNow - t._time) >= 0) - t._call.call(null, e); - t = t._next; - } - --frame; -} -function wake() { - clockNow = (clockLast = clock.now()) + clockSkew; - frame = timeout = 0; - try { - timerFlush(); - } finally { - frame = 0; - nap(); - clockNow = 0; - } -} -function poke() { - var now3 = clock.now(), delay = now3 - clockLast; - if (delay > pokeDelay) - clockSkew -= delay, clockLast = now3; -} -function nap() { - var t0, t1 = taskHead, t2, time = Infinity; - while (t1) { - if (t1._call) { - if (time > t1._time) - time = t1._time; - t0 = t1, t1 = t1._next; - } else { - t2 = t1._next, t1._next = null; - t1 = t0 ? t0._next = t2 : taskHead = t2; - } - } - taskTail = t0; - sleep(time); -} -function sleep(time) { - if (frame) - return; - if (timeout) - timeout = clearTimeout(timeout); - var delay = time - clockNow; - if (delay > 24) { - if (time < Infinity) - timeout = setTimeout(wake, time - clock.now() - clockSkew); - if (interval) - interval = clearInterval(interval); - } else { - if (!interval) - clockLast = clock.now(), interval = setInterval(poke, pokeDelay); - frame = 1, setFrame(wake); - } -} - -// node_modules/d3-timer/src/timeout.js -function timeout_default(callback, delay, time) { - var t = new Timer(); - delay = delay == null ? 0 : +delay; - t.restart((elapsed) => { - t.stop(); - callback(elapsed + delay); - }, delay, time); - return t; -} - -// node_modules/d3-transition/src/transition/schedule.js -var emptyOn = dispatch_default("start", "end", "cancel", "interrupt"); -var emptyTween = []; -var CREATED = 0; -var SCHEDULED = 1; -var STARTING = 2; -var STARTED = 3; -var RUNNING = 4; -var ENDING = 5; -var ENDED = 6; -function schedule_default(node, name, id2, index2, group, timing) { - var schedules = node.__transition; - if (!schedules) - node.__transition = {}; - else if (id2 in schedules) - return; - create(node, id2, { - name, - index: index2, - // For context during callback. - group, - // For context during callback. - on: emptyOn, - tween: emptyTween, - time: timing.time, - delay: timing.delay, - duration: timing.duration, - ease: timing.ease, - timer: null, - state: CREATED - }); -} -function init2(node, id2) { - var schedule = get2(node, id2); - if (schedule.state > CREATED) - throw new Error("too late; already scheduled"); - return schedule; -} -function set2(node, id2) { - var schedule = get2(node, id2); - if (schedule.state > STARTED) - throw new Error("too late; already running"); - return schedule; -} -function get2(node, id2) { - var schedule = node.__transition; - if (!schedule || !(schedule = schedule[id2])) - throw new Error("transition not found"); - return schedule; -} -function create(node, id2, self2) { - var schedules = node.__transition, tween; - schedules[id2] = self2; - self2.timer = timer(schedule, 0, self2.time); - function schedule(elapsed) { - self2.state = SCHEDULED; - self2.timer.restart(start2, self2.delay, self2.time); - if (self2.delay <= elapsed) - start2(elapsed - self2.delay); - } - function start2(elapsed) { - var i, j, n2, o; - if (self2.state !== SCHEDULED) - return stop(); - for (i in schedules) { - o = schedules[i]; - if (o.name !== self2.name) - continue; - if (o.state === STARTED) - return timeout_default(start2); - if (o.state === RUNNING) { - o.state = ENDED; - o.timer.stop(); - o.on.call("interrupt", node, node.__data__, o.index, o.group); - delete schedules[i]; - } else if (+i < id2) { - o.state = ENDED; - o.timer.stop(); - o.on.call("cancel", node, node.__data__, o.index, o.group); - delete schedules[i]; - } - } - timeout_default(function() { - if (self2.state === STARTED) { - self2.state = RUNNING; - self2.timer.restart(tick2, self2.delay, self2.time); - tick2(elapsed); - } - }); - self2.state = STARTING; - self2.on.call("start", node, node.__data__, self2.index, self2.group); - if (self2.state !== STARTING) - return; - self2.state = STARTED; - tween = new Array(n2 = self2.tween.length); - for (i = 0, j = -1; i < n2; ++i) { - if (o = self2.tween[i].value.call(node, node.__data__, self2.index, self2.group)) { - tween[++j] = o; - } - } - tween.length = j + 1; - } - function tick2(elapsed) { - var t = elapsed < self2.duration ? self2.ease.call(null, elapsed / self2.duration) : (self2.timer.restart(stop), self2.state = ENDING, 1), i = -1, n2 = tween.length; - while (++i < n2) { - tween[i].call(node, t); - } - if (self2.state === ENDING) { - self2.on.call("end", node, node.__data__, self2.index, self2.group); - stop(); - } - } - function stop() { - self2.state = ENDED; - self2.timer.stop(); - delete schedules[id2]; - for (var i in schedules) - return; - delete node.__transition; - } -} - -// node_modules/d3-transition/src/interrupt.js -function interrupt_default(node, name) { - var schedules = node.__transition, schedule, active, empty3 = true, i; - if (!schedules) - return; - name = name == null ? null : name + ""; - for (i in schedules) { - if ((schedule = schedules[i]).name !== name) { - empty3 = false; - continue; - } - active = schedule.state > STARTING && schedule.state < ENDING; - schedule.state = ENDED; - schedule.timer.stop(); - schedule.on.call(active ? "interrupt" : "cancel", node, node.__data__, schedule.index, schedule.group); - delete schedules[i]; - } - if (empty3) - delete node.__transition; -} - -// node_modules/d3-transition/src/selection/interrupt.js -function interrupt_default2(name) { - return this.each(function() { - interrupt_default(this, name); - }); -} - -// node_modules/d3-transition/src/transition/tween.js -function tweenRemove(id2, name) { - var tween0, tween1; - return function() { - var schedule = set2(this, id2), tween = schedule.tween; - if (tween !== tween0) { - tween1 = tween0 = tween; - for (var i = 0, n2 = tween1.length; i < n2; ++i) { - if (tween1[i].name === name) { - tween1 = tween1.slice(); - tween1.splice(i, 1); - break; - } - } - } - schedule.tween = tween1; - }; -} -function tweenFunction(id2, name, value) { - var tween0, tween1; - if (typeof value !== "function") - throw new Error(); - return function() { - var schedule = set2(this, id2), tween = schedule.tween; - if (tween !== tween0) { - tween1 = (tween0 = tween).slice(); - for (var t = { name, value }, i = 0, n2 = tween1.length; i < n2; ++i) { - if (tween1[i].name === name) { - tween1[i] = t; - break; - } - } - if (i === n2) - tween1.push(t); - } - schedule.tween = tween1; - }; -} -function tween_default(name, value) { - var id2 = this._id; - name += ""; - if (arguments.length < 2) { - var tween = get2(this.node(), id2).tween; - for (var i = 0, n2 = tween.length, t; i < n2; ++i) { - if ((t = tween[i]).name === name) { - return t.value; - } - } - return null; - } - return this.each((value == null ? tweenRemove : tweenFunction)(id2, name, value)); -} -function tweenValue(transition2, name, value) { - var id2 = transition2._id; - transition2.each(function() { - var schedule = set2(this, id2); - (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments); - }); - return function(node) { - return get2(node, id2).value[name]; - }; -} - -// node_modules/d3-transition/src/transition/interpolate.js -function interpolate_default(a2, b) { - var c3; - return (typeof b === "number" ? number_default2 : b instanceof color ? rgb_default : (c3 = color(b)) ? (b = c3, rgb_default) : string_default)(a2, b); -} - -// node_modules/d3-transition/src/transition/attr.js -function attrRemove2(name) { - return function() { - this.removeAttribute(name); - }; -} -function attrRemoveNS2(fullname) { - return function() { - this.removeAttributeNS(fullname.space, fullname.local); - }; -} -function attrConstant2(name, interpolate, value1) { - var string00, string1 = value1 + "", interpolate0; - return function() { - var string0 = this.getAttribute(name); - return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1); - }; -} -function attrConstantNS2(fullname, interpolate, value1) { - var string00, string1 = value1 + "", interpolate0; - return function() { - var string0 = this.getAttributeNS(fullname.space, fullname.local); - return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1); - }; -} -function attrFunction2(name, interpolate, value) { - var string00, string10, interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) - return void this.removeAttribute(name); - string0 = this.getAttribute(name); - string1 = value1 + ""; - return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} -function attrFunctionNS2(fullname, interpolate, value) { - var string00, string10, interpolate0; - return function() { - var string0, value1 = value(this), string1; - if (value1 == null) - return void this.removeAttributeNS(fullname.space, fullname.local); - string0 = this.getAttributeNS(fullname.space, fullname.local); - string1 = value1 + ""; - return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} -function attr_default2(name, value) { - var fullname = namespace_default(name), i = fullname === "transform" ? interpolateTransformSvg : interpolate_default; - return this.attrTween(name, typeof value === "function" ? (fullname.local ? attrFunctionNS2 : attrFunction2)(fullname, i, tweenValue(this, "attr." + name, value)) : value == null ? (fullname.local ? attrRemoveNS2 : attrRemove2)(fullname) : (fullname.local ? attrConstantNS2 : attrConstant2)(fullname, i, value)); -} - -// node_modules/d3-transition/src/transition/attrTween.js -function attrInterpolate(name, i) { - return function(t) { - this.setAttribute(name, i.call(this, t)); - }; -} -function attrInterpolateNS(fullname, i) { - return function(t) { - this.setAttributeNS(fullname.space, fullname.local, i.call(this, t)); - }; -} -function attrTweenNS(fullname, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) - t0 = (i0 = i) && attrInterpolateNS(fullname, i); - return t0; - } - tween._value = value; - return tween; -} -function attrTween(name, value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) - t0 = (i0 = i) && attrInterpolate(name, i); - return t0; - } - tween._value = value; - return tween; -} -function attrTween_default(name, value) { - var key = "attr." + name; - if (arguments.length < 2) - return (key = this.tween(key)) && key._value; - if (value == null) - return this.tween(key, null); - if (typeof value !== "function") - throw new Error(); - var fullname = namespace_default(name); - return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value)); -} - -// node_modules/d3-transition/src/transition/delay.js -function delayFunction(id2, value) { - return function() { - init2(this, id2).delay = +value.apply(this, arguments); - }; -} -function delayConstant(id2, value) { - return value = +value, function() { - init2(this, id2).delay = value; - }; -} -function delay_default(value) { - var id2 = this._id; - return arguments.length ? this.each((typeof value === "function" ? delayFunction : delayConstant)(id2, value)) : get2(this.node(), id2).delay; -} - -// node_modules/d3-transition/src/transition/duration.js -function durationFunction(id2, value) { - return function() { - set2(this, id2).duration = +value.apply(this, arguments); - }; -} -function durationConstant(id2, value) { - return value = +value, function() { - set2(this, id2).duration = value; - }; -} -function duration_default(value) { - var id2 = this._id; - return arguments.length ? this.each((typeof value === "function" ? durationFunction : durationConstant)(id2, value)) : get2(this.node(), id2).duration; -} - -// node_modules/d3-transition/src/transition/ease.js -function easeConstant(id2, value) { - if (typeof value !== "function") - throw new Error(); - return function() { - set2(this, id2).ease = value; - }; -} -function ease_default(value) { - var id2 = this._id; - return arguments.length ? this.each(easeConstant(id2, value)) : get2(this.node(), id2).ease; -} - -// node_modules/d3-transition/src/transition/easeVarying.js -function easeVarying(id2, value) { - return function() { - var v = value.apply(this, arguments); - if (typeof v !== "function") - throw new Error(); - set2(this, id2).ease = v; - }; -} -function easeVarying_default(value) { - if (typeof value !== "function") - throw new Error(); - return this.each(easeVarying(this._id, value)); -} - -// node_modules/d3-transition/src/transition/filter.js -function filter_default2(match2) { - if (typeof match2 !== "function") - match2 = matcher_default(match2); - for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j = 0; j < m2; ++j) { - for (var group = groups[j], n2 = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n2; ++i) { - if ((node = group[i]) && match2.call(node, node.__data__, i, group)) { - subgroup.push(node); - } - } - } - return new Transition(subgroups, this._parents, this._name, this._id); -} - -// node_modules/d3-transition/src/transition/merge.js -function merge_default2(transition2) { - if (transition2._id !== this._id) - throw new Error(); - for (var groups0 = this._groups, groups1 = transition2._groups, m0 = groups0.length, m1 = groups1.length, m2 = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m2; ++j) { - for (var group0 = groups0[j], group1 = groups1[j], n2 = group0.length, merge = merges[j] = new Array(n2), node, i = 0; i < n2; ++i) { - if (node = group0[i] || group1[i]) { - merge[i] = node; - } - } - } - for (; j < m0; ++j) { - merges[j] = groups0[j]; - } - return new Transition(merges, this._parents, this._name, this._id); -} - -// node_modules/d3-transition/src/transition/on.js -function start(name) { - return (name + "").trim().split(/^|\s+/).every(function(t) { - var i = t.indexOf("."); - if (i >= 0) - t = t.slice(0, i); - return !t || t === "start"; - }); -} -function onFunction(id2, name, listener) { - var on0, on1, sit = start(name) ? init2 : set2; - return function() { - var schedule = sit(this, id2), on = schedule.on; - if (on !== on0) - (on1 = (on0 = on).copy()).on(name, listener); - schedule.on = on1; - }; -} -function on_default2(name, listener) { - var id2 = this._id; - return arguments.length < 2 ? get2(this.node(), id2).on.on(name) : this.each(onFunction(id2, name, listener)); -} - -// node_modules/d3-transition/src/transition/remove.js -function removeFunction(id2) { - return function() { - var parent = this.parentNode; - for (var i in this.__transition) - if (+i !== id2) - return; - if (parent) - parent.removeChild(this); - }; -} -function remove_default2() { - return this.on("end.remove", removeFunction(this._id)); -} - -// node_modules/d3-transition/src/transition/select.js -function select_default3(select) { - var name = this._name, id2 = this._id; - if (typeof select !== "function") - select = selector_default(select); - for (var groups = this._groups, m2 = groups.length, subgroups = new Array(m2), j = 0; j < m2; ++j) { - for (var group = groups[j], n2 = group.length, subgroup = subgroups[j] = new Array(n2), node, subnode, i = 0; i < n2; ++i) { - if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) { - if ("__data__" in node) - subnode.__data__ = node.__data__; - subgroup[i] = subnode; - schedule_default(subgroup[i], name, id2, i, subgroup, get2(node, id2)); - } - } - } - return new Transition(subgroups, this._parents, name, id2); -} - -// node_modules/d3-transition/src/transition/selectAll.js -function selectAll_default2(select) { - var name = this._name, id2 = this._id; - if (typeof select !== "function") - select = selectorAll_default(select); - for (var groups = this._groups, m2 = groups.length, subgroups = [], parents = [], j = 0; j < m2; ++j) { - for (var group = groups[j], n2 = group.length, node, i = 0; i < n2; ++i) { - if (node = group[i]) { - for (var children3 = select.call(node, node.__data__, i, group), child, inherit2 = get2(node, id2), k = 0, l2 = children3.length; k < l2; ++k) { - if (child = children3[k]) { - schedule_default(child, name, id2, k, children3, inherit2); - } - } - subgroups.push(children3); - parents.push(node); - } - } - } - return new Transition(subgroups, parents, name, id2); -} - -// node_modules/d3-transition/src/transition/selection.js -var Selection2 = selection_default.prototype.constructor; -function selection_default2() { - return new Selection2(this._groups, this._parents); -} - -// node_modules/d3-transition/src/transition/style.js -function styleNull(name, interpolate) { - var string00, string10, interpolate0; - return function() { - var string0 = styleValue(this, name), string1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : interpolate0 = interpolate(string00 = string0, string10 = string1); - }; -} -function styleRemove2(name) { - return function() { - this.style.removeProperty(name); - }; -} -function styleConstant2(name, interpolate, value1) { - var string00, string1 = value1 + "", interpolate0; - return function() { - var string0 = styleValue(this, name); - return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate(string00 = string0, value1); - }; -} -function styleFunction2(name, interpolate, value) { - var string00, string10, interpolate0; - return function() { - var string0 = styleValue(this, name), value1 = value(this), string1 = value1 + ""; - if (value1 == null) - string1 = value1 = (this.style.removeProperty(name), styleValue(this, name)); - return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1)); - }; -} -function styleMaybeRemove(id2, name) { - var on0, on1, listener0, key = "style." + name, event = "end." + key, remove2; - return function() { - var schedule = set2(this, id2), on = schedule.on, listener = schedule.value[key] == null ? remove2 || (remove2 = styleRemove2(name)) : void 0; - if (on !== on0 || listener0 !== listener) - (on1 = (on0 = on).copy()).on(event, listener0 = listener); - schedule.on = on1; - }; -} -function style_default2(name, value, priority) { - var i = (name += "") === "transform" ? interpolateTransformCss : interpolate_default; - return value == null ? this.styleTween(name, styleNull(name, i)).on("end.style." + name, styleRemove2(name)) : typeof value === "function" ? this.styleTween(name, styleFunction2(name, i, tweenValue(this, "style." + name, value))).each(styleMaybeRemove(this._id, name)) : this.styleTween(name, styleConstant2(name, i, value), priority).on("end.style." + name, null); -} - -// node_modules/d3-transition/src/transition/styleTween.js -function styleInterpolate(name, i, priority) { - return function(t) { - this.style.setProperty(name, i.call(this, t), priority); - }; -} -function styleTween(name, value, priority) { - var t, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) - t = (i0 = i) && styleInterpolate(name, i, priority); - return t; - } - tween._value = value; - return tween; -} -function styleTween_default(name, value, priority) { - var key = "style." + (name += ""); - if (arguments.length < 2) - return (key = this.tween(key)) && key._value; - if (value == null) - return this.tween(key, null); - if (typeof value !== "function") - throw new Error(); - return this.tween(key, styleTween(name, value, priority == null ? "" : priority)); -} - -// node_modules/d3-transition/src/transition/text.js -function textConstant2(value) { - return function() { - this.textContent = value; - }; -} -function textFunction2(value) { - return function() { - var value1 = value(this); - this.textContent = value1 == null ? "" : value1; - }; -} -function text_default2(value) { - return this.tween("text", typeof value === "function" ? textFunction2(tweenValue(this, "text", value)) : textConstant2(value == null ? "" : value + "")); -} - -// node_modules/d3-transition/src/transition/textTween.js -function textInterpolate(i) { - return function(t) { - this.textContent = i.call(this, t); - }; -} -function textTween(value) { - var t0, i0; - function tween() { - var i = value.apply(this, arguments); - if (i !== i0) - t0 = (i0 = i) && textInterpolate(i); - return t0; - } - tween._value = value; - return tween; -} -function textTween_default(value) { - var key = "text"; - if (arguments.length < 1) - return (key = this.tween(key)) && key._value; - if (value == null) - return this.tween(key, null); - if (typeof value !== "function") - throw new Error(); - return this.tween(key, textTween(value)); -} - -// node_modules/d3-transition/src/transition/transition.js -function transition_default() { - var name = this._name, id0 = this._id, id1 = newId(); - for (var groups = this._groups, m2 = groups.length, j = 0; j < m2; ++j) { - for (var group = groups[j], n2 = group.length, node, i = 0; i < n2; ++i) { - if (node = group[i]) { - var inherit2 = get2(node, id0); - schedule_default(node, name, id1, i, group, { - time: inherit2.time + inherit2.delay + inherit2.duration, - delay: 0, - duration: inherit2.duration, - ease: inherit2.ease - }); - } - } - } - return new Transition(groups, this._parents, name, id1); -} - -// node_modules/d3-transition/src/transition/end.js -function end_default() { - var on0, on1, that = this, id2 = that._id, size = that.size(); - return new Promise(function(resolve, reject) { - var cancel = { value: reject }, end = { value: function() { - if (--size === 0) - resolve(); - } }; - that.each(function() { - var schedule = set2(this, id2), on = schedule.on; - if (on !== on0) { - on1 = (on0 = on).copy(); - on1._.cancel.push(cancel); - on1._.interrupt.push(cancel); - on1._.end.push(end); - } - schedule.on = on1; - }); - if (size === 0) - resolve(); - }); -} - -// node_modules/d3-transition/src/transition/index.js -var id = 0; -function Transition(groups, parents, name, id2) { - this._groups = groups; - this._parents = parents; - this._name = name; - this._id = id2; -} -function transition(name) { - return selection_default().transition(name); -} -function newId() { - return ++id; -} -var selection_prototype = selection_default.prototype; -Transition.prototype = transition.prototype = { - constructor: Transition, - select: select_default3, - selectAll: selectAll_default2, - filter: filter_default2, - merge: merge_default2, - selection: selection_default2, - transition: transition_default, - call: selection_prototype.call, - nodes: selection_prototype.nodes, - node: selection_prototype.node, - size: selection_prototype.size, - empty: selection_prototype.empty, - each: selection_prototype.each, - on: on_default2, - attr: attr_default2, - attrTween: attrTween_default, - style: style_default2, - styleTween: styleTween_default, - text: text_default2, - textTween: textTween_default, - remove: remove_default2, - tween: tween_default, - delay: delay_default, - duration: duration_default, - ease: ease_default, - easeVarying: easeVarying_default, - end: end_default, - [Symbol.iterator]: selection_prototype[Symbol.iterator] -}; - -// node_modules/d3-ease/src/cubic.js -function cubicInOut(t) { - return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; -} - -// node_modules/d3-transition/src/selection/transition.js -var defaultTiming = { - time: null, - // Set on use. - delay: 0, - duration: 250, - ease: cubicInOut -}; -function inherit(node, id2) { - var timing; - while (!(timing = node.__transition) || !(timing = timing[id2])) { - if (!(node = node.parentNode)) { - throw new Error(`transition ${id2} not found`); - } - } - return timing; -} -function transition_default2(name) { - var id2, timing; - if (name instanceof Transition) { - id2 = name._id, name = name._name; - } else { - id2 = newId(), (timing = defaultTiming).time = now2(), name = name == null ? null : name + ""; - } - for (var groups = this._groups, m2 = groups.length, j = 0; j < m2; ++j) { - for (var group = groups[j], n2 = group.length, node, i = 0; i < n2; ++i) { - if (node = group[i]) { - schedule_default(node, name, id2, i, group, timing || inherit(node, id2)); - } - } - } - return new Transition(groups, this._parents, name, id2); -} - -// node_modules/d3-transition/src/selection/index.js -selection_default.prototype.interrupt = interrupt_default2; -selection_default.prototype.transition = transition_default2; - -// node_modules/d3-brush/src/brush.js -var { abs, max: max2, min } = Math; -function number1(e) { - return [+e[0], +e[1]]; -} -function number2(e) { - return [number1(e[0]), number1(e[1])]; -} -var X = { - name: "x", - handles: ["w", "e"].map(type), - input: function(x4, e) { - return x4 == null ? null : [[+x4[0], e[0][1]], [+x4[1], e[1][1]]]; - }, - output: function(xy) { - return xy && [xy[0][0], xy[1][0]]; - } -}; -var Y = { - name: "y", - handles: ["n", "s"].map(type), - input: function(y4, e) { - return y4 == null ? null : [[e[0][0], +y4[0]], [e[1][0], +y4[1]]]; - }, - output: function(xy) { - return xy && [xy[0][1], xy[1][1]]; - } -}; -var XY = { - name: "xy", - handles: ["n", "w", "e", "s", "nw", "ne", "sw", "se"].map(type), - input: function(xy) { - return xy == null ? null : number2(xy); - }, - output: function(xy) { - return xy; - } -}; -function type(t) { - return { type: t }; -} - -// node_modules/d3-path/src/path.js -var pi = Math.PI; -var tau = 2 * pi; -var epsilon = 1e-6; -var tauEpsilon = tau - epsilon; -function Path() { - this._x0 = this._y0 = // start of current subpath - this._x1 = this._y1 = null; - this._ = ""; -} -function path() { - return new Path(); -} -Path.prototype = path.prototype = { - constructor: Path, - moveTo: function(x4, y4) { - this._ += "M" + (this._x0 = this._x1 = +x4) + "," + (this._y0 = this._y1 = +y4); - }, - closePath: function() { - if (this._x1 !== null) { - this._x1 = this._x0, this._y1 = this._y0; - this._ += "Z"; - } - }, - lineTo: function(x4, y4) { - this._ += "L" + (this._x1 = +x4) + "," + (this._y1 = +y4); - }, - quadraticCurveTo: function(x1, y1, x4, y4) { - this._ += "Q" + +x1 + "," + +y1 + "," + (this._x1 = +x4) + "," + (this._y1 = +y4); - }, - bezierCurveTo: function(x1, y1, x22, y22, x4, y4) { - this._ += "C" + +x1 + "," + +y1 + "," + +x22 + "," + +y22 + "," + (this._x1 = +x4) + "," + (this._y1 = +y4); - }, - arcTo: function(x1, y1, x22, y22, r) { - x1 = +x1, y1 = +y1, x22 = +x22, y22 = +y22, r = +r; - var x0 = this._x1, y0 = this._y1, x21 = x22 - x1, y21 = y22 - y1, x01 = x0 - x1, y01 = y0 - y1, l01_2 = x01 * x01 + y01 * y01; - if (r < 0) - throw new Error("negative radius: " + r); - if (this._x1 === null) { - this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1); - } else if (!(l01_2 > epsilon)) - ; - else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) { - this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1); - } else { - var x20 = x22 - x0, y20 = y22 - y0, l21_2 = x21 * x21 + y21 * y21, l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), l2 = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l2 / l01, t21 = l2 / l21; - if (Math.abs(t01 - 1) > epsilon) { - this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01); - } - this._ += "A" + r + "," + r + ",0,0," + +(y01 * x20 > x01 * y20) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21); - } - }, - arc: function(x4, y4, r, a0, a1, ccw) { - x4 = +x4, y4 = +y4, r = +r, ccw = !!ccw; - var dx = r * Math.cos(a0), dy = r * Math.sin(a0), x0 = x4 + dx, y0 = y4 + dy, cw = 1 ^ ccw, da = ccw ? a0 - a1 : a1 - a0; - if (r < 0) - throw new Error("negative radius: " + r); - if (this._x1 === null) { - this._ += "M" + x0 + "," + y0; - } else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) { - this._ += "L" + x0 + "," + y0; - } - if (!r) - return; - if (da < 0) - da = da % tau + tau; - if (da > tauEpsilon) { - this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x4 - dx) + "," + (y4 - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0); - } else if (da > epsilon) { - this._ += "A" + r + "," + r + ",0," + +(da >= pi) + "," + cw + "," + (this._x1 = x4 + r * Math.cos(a1)) + "," + (this._y1 = y4 + r * Math.sin(a1)); - } - }, - rect: function(x4, y4, w, h) { - this._ += "M" + (this._x0 = this._x1 = +x4) + "," + (this._y0 = this._y1 = +y4) + "h" + +w + "v" + +h + "h" + -w + "Z"; - }, - toString: function() { - return this._; - } -}; -var path_default = path; - -// node_modules/d3-force/src/center.js -function center_default(x4, y4) { - var nodes, strength = 1; - if (x4 == null) - x4 = 0; - if (y4 == null) - y4 = 0; - function force() { - var i, n2 = nodes.length, node, sx = 0, sy = 0; - for (i = 0; i < n2; ++i) { - node = nodes[i], sx += node.x, sy += node.y; - } - for (sx = (sx / n2 - x4) * strength, sy = (sy / n2 - y4) * strength, i = 0; i < n2; ++i) { - node = nodes[i], node.x -= sx, node.y -= sy; - } - } - force.initialize = function(_) { - nodes = _; - }; - force.x = function(_) { - return arguments.length ? (x4 = +_, force) : x4; - }; - force.y = function(_) { - return arguments.length ? (y4 = +_, force) : y4; - }; - force.strength = function(_) { - return arguments.length ? (strength = +_, force) : strength; - }; - return force; -} - -// node_modules/d3-quadtree/src/add.js -function add_default(d) { - const x4 = +this._x.call(null, d), y4 = +this._y.call(null, d); - return add(this.cover(x4, y4), x4, y4, d); -} -function add(tree, x4, y4, d) { - if (isNaN(x4) || isNaN(y4)) - return tree; - var parent, node = tree._root, leaf = { data: d }, x0 = tree._x0, y0 = tree._y0, x1 = tree._x1, y1 = tree._y1, xm, ym, xp, yp, right, bottom, i, j; - if (!node) - return tree._root = leaf, tree; - while (node.length) { - if (right = x4 >= (xm = (x0 + x1) / 2)) - x0 = xm; - else - x1 = xm; - if (bottom = y4 >= (ym = (y0 + y1) / 2)) - y0 = ym; - else - y1 = ym; - if (parent = node, !(node = node[i = bottom << 1 | right])) - return parent[i] = leaf, tree; - } - xp = +tree._x.call(null, node.data); - yp = +tree._y.call(null, node.data); - if (x4 === xp && y4 === yp) - return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; - do { - parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); - if (right = x4 >= (xm = (x0 + x1) / 2)) - x0 = xm; - else - x1 = xm; - if (bottom = y4 >= (ym = (y0 + y1) / 2)) - y0 = ym; - else - y1 = ym; - } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | xp >= xm)); - return parent[j] = node, parent[i] = leaf, tree; -} -function addAll(data) { - var d, i, n2 = data.length, x4, y4, xz = new Array(n2), yz = new Array(n2), x0 = Infinity, y0 = Infinity, x1 = -Infinity, y1 = -Infinity; - for (i = 0; i < n2; ++i) { - if (isNaN(x4 = +this._x.call(null, d = data[i])) || isNaN(y4 = +this._y.call(null, d))) - continue; - xz[i] = x4; - yz[i] = y4; - if (x4 < x0) - x0 = x4; - if (x4 > x1) - x1 = x4; - if (y4 < y0) - y0 = y4; - if (y4 > y1) - y1 = y4; - } - if (x0 > x1 || y0 > y1) - return this; - this.cover(x0, y0).cover(x1, y1); - for (i = 0; i < n2; ++i) { - add(this, xz[i], yz[i], data[i]); - } - return this; -} - -// node_modules/d3-quadtree/src/cover.js -function cover_default(x4, y4) { - if (isNaN(x4 = +x4) || isNaN(y4 = +y4)) - return this; - var x0 = this._x0, y0 = this._y0, x1 = this._x1, y1 = this._y1; - if (isNaN(x0)) { - x1 = (x0 = Math.floor(x4)) + 1; - y1 = (y0 = Math.floor(y4)) + 1; - } else { - var z = x1 - x0 || 1, node = this._root, parent, i; - while (x0 > x4 || x4 >= x1 || y0 > y4 || y4 >= y1) { - i = (y4 < y0) << 1 | x4 < x0; - parent = new Array(4), parent[i] = node, node = parent, z *= 2; - switch (i) { - case 0: - x1 = x0 + z, y1 = y0 + z; - break; - case 1: - x0 = x1 - z, y1 = y0 + z; - break; - case 2: - x1 = x0 + z, y0 = y1 - z; - break; - case 3: - x0 = x1 - z, y0 = y1 - z; - break; - } - } - if (this._root && this._root.length) - this._root = node; - } - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - return this; -} - -// node_modules/d3-quadtree/src/data.js -function data_default2() { - var data = []; - this.visit(function(node) { - if (!node.length) - do - data.push(node.data); - while (node = node.next); - }); - return data; -} - -// node_modules/d3-quadtree/src/extent.js -function extent_default(_) { - return arguments.length ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1]) : isNaN(this._x0) ? void 0 : [[this._x0, this._y0], [this._x1, this._y1]]; -} - -// node_modules/d3-quadtree/src/quad.js -function quad_default(node, x0, y0, x1, y1) { - this.node = node; - this.x0 = x0; - this.y0 = y0; - this.x1 = x1; - this.y1 = y1; -} - -// node_modules/d3-quadtree/src/find.js -function find_default(x4, y4, radius) { - var data, x0 = this._x0, y0 = this._y0, x1, y1, x22, y22, x32 = this._x1, y32 = this._y1, quads = [], node = this._root, q, i; - if (node) - quads.push(new quad_default(node, x0, y0, x32, y32)); - if (radius == null) - radius = Infinity; - else { - x0 = x4 - radius, y0 = y4 - radius; - x32 = x4 + radius, y32 = y4 + radius; - radius *= radius; - } - while (q = quads.pop()) { - if (!(node = q.node) || (x1 = q.x0) > x32 || (y1 = q.y0) > y32 || (x22 = q.x1) < x0 || (y22 = q.y1) < y0) - continue; - if (node.length) { - var xm = (x1 + x22) / 2, ym = (y1 + y22) / 2; - quads.push( - new quad_default(node[3], xm, ym, x22, y22), - new quad_default(node[2], x1, ym, xm, y22), - new quad_default(node[1], xm, y1, x22, ym), - new quad_default(node[0], x1, y1, xm, ym) - ); - if (i = (y4 >= ym) << 1 | x4 >= xm) { - q = quads[quads.length - 1]; - quads[quads.length - 1] = quads[quads.length - 1 - i]; - quads[quads.length - 1 - i] = q; - } - } else { - var dx = x4 - +this._x.call(null, node.data), dy = y4 - +this._y.call(null, node.data), d2 = dx * dx + dy * dy; - if (d2 < radius) { - var d = Math.sqrt(radius = d2); - x0 = x4 - d, y0 = y4 - d; - x32 = x4 + d, y32 = y4 + d; - data = node.data; - } - } - } - return data; -} - -// node_modules/d3-quadtree/src/remove.js -function remove_default3(d) { - if (isNaN(x4 = +this._x.call(null, d)) || isNaN(y4 = +this._y.call(null, d))) - return this; - var parent, node = this._root, retainer, previous, next, x0 = this._x0, y0 = this._y0, x1 = this._x1, y1 = this._y1, x4, y4, xm, ym, right, bottom, i, j; - if (!node) - return this; - if (node.length) - while (true) { - if (right = x4 >= (xm = (x0 + x1) / 2)) - x0 = xm; - else - x1 = xm; - if (bottom = y4 >= (ym = (y0 + y1) / 2)) - y0 = ym; - else - y1 = ym; - if (!(parent = node, node = node[i = bottom << 1 | right])) - return this; - if (!node.length) - break; - if (parent[i + 1 & 3] || parent[i + 2 & 3] || parent[i + 3 & 3]) - retainer = parent, j = i; - } - while (node.data !== d) - if (!(previous = node, node = node.next)) - return this; - if (next = node.next) - delete node.next; - if (previous) - return next ? previous.next = next : delete previous.next, this; - if (!parent) - return this._root = next, this; - next ? parent[i] = next : delete parent[i]; - if ((node = parent[0] || parent[1] || parent[2] || parent[3]) && node === (parent[3] || parent[2] || parent[1] || parent[0]) && !node.length) { - if (retainer) - retainer[j] = node; - else - this._root = node; - } - return this; -} -function removeAll(data) { - for (var i = 0, n2 = data.length; i < n2; ++i) - this.remove(data[i]); - return this; -} - -// node_modules/d3-quadtree/src/root.js -function root_default() { - return this._root; -} - -// node_modules/d3-quadtree/src/size.js -function size_default2() { - var size = 0; - this.visit(function(node) { - if (!node.length) - do - ++size; - while (node = node.next); - }); - return size; -} - -// node_modules/d3-quadtree/src/visit.js -function visit_default(callback) { - var quads = [], q, node = this._root, child, x0, y0, x1, y1; - if (node) - quads.push(new quad_default(node, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { - var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[3]) - quads.push(new quad_default(child, xm, ym, x1, y1)); - if (child = node[2]) - quads.push(new quad_default(child, x0, ym, xm, y1)); - if (child = node[1]) - quads.push(new quad_default(child, xm, y0, x1, ym)); - if (child = node[0]) - quads.push(new quad_default(child, x0, y0, xm, ym)); - } - } - return this; -} - -// node_modules/d3-quadtree/src/visitAfter.js -function visitAfter_default(callback) { - var quads = [], next = [], q; - if (this._root) - quads.push(new quad_default(this._root, this._x0, this._y0, this._x1, this._y1)); - while (q = quads.pop()) { - var node = q.node; - if (node.length) { - var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; - if (child = node[0]) - quads.push(new quad_default(child, x0, y0, xm, ym)); - if (child = node[1]) - quads.push(new quad_default(child, xm, y0, x1, ym)); - if (child = node[2]) - quads.push(new quad_default(child, x0, ym, xm, y1)); - if (child = node[3]) - quads.push(new quad_default(child, xm, ym, x1, y1)); - } - next.push(q); - } - while (q = next.pop()) { - callback(q.node, q.x0, q.y0, q.x1, q.y1); - } - return this; -} - -// node_modules/d3-quadtree/src/x.js -function defaultX(d) { - return d[0]; -} -function x_default(_) { - return arguments.length ? (this._x = _, this) : this._x; -} - -// node_modules/d3-quadtree/src/y.js -function defaultY(d) { - return d[1]; -} -function y_default(_) { - return arguments.length ? (this._y = _, this) : this._y; -} - -// node_modules/d3-quadtree/src/quadtree.js -function quadtree(nodes, x4, y4) { - var tree = new Quadtree(x4 == null ? defaultX : x4, y4 == null ? defaultY : y4, NaN, NaN, NaN, NaN); - return nodes == null ? tree : tree.addAll(nodes); -} -function Quadtree(x4, y4, x0, y0, x1, y1) { - this._x = x4; - this._y = y4; - this._x0 = x0; - this._y0 = y0; - this._x1 = x1; - this._y1 = y1; - this._root = void 0; -} -function leaf_copy(leaf) { - var copy3 = { data: leaf.data }, next = copy3; - while (leaf = leaf.next) - next = next.next = { data: leaf.data }; - return copy3; -} -var treeProto = quadtree.prototype = Quadtree.prototype; -treeProto.copy = function() { - var copy3 = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), node = this._root, nodes, child; - if (!node) - return copy3; - if (!node.length) - return copy3._root = leaf_copy(node), copy3; - nodes = [{ source: node, target: copy3._root = new Array(4) }]; - while (node = nodes.pop()) { - for (var i = 0; i < 4; ++i) { - if (child = node.source[i]) { - if (child.length) - nodes.push({ source: child, target: node.target[i] = new Array(4) }); - else - node.target[i] = leaf_copy(child); - } - } - } - return copy3; -}; -treeProto.add = add_default; -treeProto.addAll = addAll; -treeProto.cover = cover_default; -treeProto.data = data_default2; -treeProto.extent = extent_default; -treeProto.find = find_default; -treeProto.remove = remove_default3; -treeProto.removeAll = removeAll; -treeProto.root = root_default; -treeProto.size = size_default2; -treeProto.visit = visit_default; -treeProto.visitAfter = visitAfter_default; -treeProto.x = x_default; -treeProto.y = y_default; - -// node_modules/d3-force/src/constant.js -function constant_default5(x4) { - return function() { - return x4; - }; -} - -// node_modules/d3-force/src/jiggle.js -function jiggle_default(random) { - return (random() - 0.5) * 1e-6; -} - -// node_modules/d3-force/src/collide.js -function x(d) { - return d.x + d.vx; -} -function y(d) { - return d.y + d.vy; -} -function collide_default(radius) { - var nodes, radii, random, strength = 1, iterations = 1; - if (typeof radius !== "function") - radius = constant_default5(radius == null ? 1 : +radius); - function force() { - var i, n2 = nodes.length, tree, node, xi, yi, ri, ri2; - for (var k = 0; k < iterations; ++k) { - tree = quadtree(nodes, x, y).visitAfter(prepare); - for (i = 0; i < n2; ++i) { - node = nodes[i]; - ri = radii[node.index], ri2 = ri * ri; - xi = node.x + node.vx; - yi = node.y + node.vy; - tree.visit(apply); - } - } - function apply(quad, x0, y0, x1, y1) { - var data = quad.data, rj = quad.r, r = ri + rj; - if (data) { - if (data.index > node.index) { - var x4 = xi - data.x - data.vx, y4 = yi - data.y - data.vy, l2 = x4 * x4 + y4 * y4; - if (l2 < r * r) { - if (x4 === 0) - x4 = jiggle_default(random), l2 += x4 * x4; - if (y4 === 0) - y4 = jiggle_default(random), l2 += y4 * y4; - l2 = (r - (l2 = Math.sqrt(l2))) / l2 * strength; - node.vx += (x4 *= l2) * (r = (rj *= rj) / (ri2 + rj)); - node.vy += (y4 *= l2) * r; - data.vx -= x4 * (r = 1 - r); - data.vy -= y4 * r; - } - } - return; - } - return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r; - } - } - function prepare(quad) { - if (quad.data) - return quad.r = radii[quad.data.index]; - for (var i = quad.r = 0; i < 4; ++i) { - if (quad[i] && quad[i].r > quad.r) { - quad.r = quad[i].r; - } - } - } - function initialize() { - if (!nodes) - return; - var i, n2 = nodes.length, node; - radii = new Array(n2); - for (i = 0; i < n2; ++i) - node = nodes[i], radii[node.index] = +radius(node, i, nodes); - } - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - force.strength = function(_) { - return arguments.length ? (strength = +_, force) : strength; - }; - force.radius = function(_) { - return arguments.length ? (radius = typeof _ === "function" ? _ : constant_default5(+_), initialize(), force) : radius; - }; - return force; -} - -// node_modules/d3-force/src/link.js -function index(d) { - return d.index; -} -function find2(nodeById, nodeId) { - var node = nodeById.get(nodeId); - if (!node) - throw new Error("node not found: " + nodeId); - return node; -} -function link_default(links) { - var id2 = index, strength = defaultStrength, strengths, distance = constant_default5(30), distances, nodes, count2, bias, random, iterations = 1; - if (links == null) - links = []; - function defaultStrength(link2) { - return 1 / Math.min(count2[link2.source.index], count2[link2.target.index]); - } - function force(alpha) { - for (var k = 0, n2 = links.length; k < iterations; ++k) { - for (var i = 0, link2, source, target, x4, y4, l2, b; i < n2; ++i) { - link2 = links[i], source = link2.source, target = link2.target; - x4 = target.x + target.vx - source.x - source.vx || jiggle_default(random); - y4 = target.y + target.vy - source.y - source.vy || jiggle_default(random); - l2 = Math.sqrt(x4 * x4 + y4 * y4); - l2 = (l2 - distances[i]) / l2 * alpha * strengths[i]; - x4 *= l2, y4 *= l2; - target.vx -= x4 * (b = bias[i]); - target.vy -= y4 * b; - source.vx += x4 * (b = 1 - b); - source.vy += y4 * b; - } - } - } - function initialize() { - if (!nodes) - return; - var i, n2 = nodes.length, m2 = links.length, nodeById = new Map(nodes.map((d, i2) => [id2(d, i2, nodes), d])), link2; - for (i = 0, count2 = new Array(n2); i < m2; ++i) { - link2 = links[i], link2.index = i; - if (typeof link2.source !== "object") - link2.source = find2(nodeById, link2.source); - if (typeof link2.target !== "object") - link2.target = find2(nodeById, link2.target); - count2[link2.source.index] = (count2[link2.source.index] || 0) + 1; - count2[link2.target.index] = (count2[link2.target.index] || 0) + 1; - } - for (i = 0, bias = new Array(m2); i < m2; ++i) { - link2 = links[i], bias[i] = count2[link2.source.index] / (count2[link2.source.index] + count2[link2.target.index]); - } - strengths = new Array(m2), initializeStrength(); - distances = new Array(m2), initializeDistance(); - } - function initializeStrength() { - if (!nodes) - return; - for (var i = 0, n2 = links.length; i < n2; ++i) { - strengths[i] = +strength(links[i], i, links); - } - } - function initializeDistance() { - if (!nodes) - return; - for (var i = 0, n2 = links.length; i < n2; ++i) { - distances[i] = +distance(links[i], i, links); - } - } - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - force.links = function(_) { - return arguments.length ? (links = _, initialize(), force) : links; - }; - force.id = function(_) { - return arguments.length ? (id2 = _, force) : id2; - }; - force.iterations = function(_) { - return arguments.length ? (iterations = +_, force) : iterations; - }; - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant_default5(+_), initializeStrength(), force) : strength; - }; - force.distance = function(_) { - return arguments.length ? (distance = typeof _ === "function" ? _ : constant_default5(+_), initializeDistance(), force) : distance; - }; - return force; -} - -// node_modules/d3-force/src/lcg.js -var a = 1664525; -var c = 1013904223; -var m = 4294967296; -function lcg_default() { - let s2 = 1; - return () => (s2 = (a * s2 + c) % m) / m; -} - -// node_modules/d3-force/src/simulation.js -function x2(d) { - return d.x; -} -function y2(d) { - return d.y; -} -var initialRadius = 10; -var initialAngle = Math.PI * (3 - Math.sqrt(5)); -function simulation_default(nodes) { - var simulation, alpha = 1, alphaMin = 1e-3, alphaDecay = 1 - Math.pow(alphaMin, 1 / 300), alphaTarget = 0, velocityDecay = 0.6, forces = /* @__PURE__ */ new Map(), stepper = timer(step), event = dispatch_default("tick", "end"), random = lcg_default(); - if (nodes == null) - nodes = []; - function step() { - tick2(); - event.call("tick", simulation); - if (alpha < alphaMin) { - stepper.stop(); - event.call("end", simulation); - } - } - function tick2(iterations) { - var i, n2 = nodes.length, node; - if (iterations === void 0) - iterations = 1; - for (var k = 0; k < iterations; ++k) { - alpha += (alphaTarget - alpha) * alphaDecay; - forces.forEach(function(force) { - force(alpha); - }); - for (i = 0; i < n2; ++i) { - node = nodes[i]; - if (node.fx == null) - node.x += node.vx *= velocityDecay; - else - node.x = node.fx, node.vx = 0; - if (node.fy == null) - node.y += node.vy *= velocityDecay; - else - node.y = node.fy, node.vy = 0; - } - } - return simulation; - } - function initializeNodes() { - for (var i = 0, n2 = nodes.length, node; i < n2; ++i) { - node = nodes[i], node.index = i; - if (node.fx != null) - node.x = node.fx; - if (node.fy != null) - node.y = node.fy; - if (isNaN(node.x) || isNaN(node.y)) { - var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle; - node.x = radius * Math.cos(angle); - node.y = radius * Math.sin(angle); - } - if (isNaN(node.vx) || isNaN(node.vy)) { - node.vx = node.vy = 0; - } - } - } - function initializeForce(force) { - if (force.initialize) - force.initialize(nodes, random); - return force; - } - initializeNodes(); - return simulation = { - tick: tick2, - restart: function() { - return stepper.restart(step), simulation; - }, - stop: function() { - return stepper.stop(), simulation; - }, - nodes: function(_) { - return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes; - }, - alpha: function(_) { - return arguments.length ? (alpha = +_, simulation) : alpha; - }, - alphaMin: function(_) { - return arguments.length ? (alphaMin = +_, simulation) : alphaMin; - }, - alphaDecay: function(_) { - return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay; - }, - alphaTarget: function(_) { - return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget; - }, - velocityDecay: function(_) { - return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay; - }, - randomSource: function(_) { - return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random; - }, - force: function(name, _) { - return arguments.length > 1 ? (_ == null ? forces.delete(name) : forces.set(name, initializeForce(_)), simulation) : forces.get(name); - }, - find: function(x4, y4, radius) { - var i = 0, n2 = nodes.length, dx, dy, d2, node, closest; - if (radius == null) - radius = Infinity; - else - radius *= radius; - for (i = 0; i < n2; ++i) { - node = nodes[i]; - dx = x4 - node.x; - dy = y4 - node.y; - d2 = dx * dx + dy * dy; - if (d2 < radius) - closest = node, radius = d2; - } - return closest; - }, - on: function(name, _) { - return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name); - } - }; -} - -// node_modules/d3-force/src/manyBody.js -function manyBody_default() { - var nodes, node, random, alpha, strength = constant_default5(-30), strengths, distanceMin2 = 1, distanceMax2 = Infinity, theta2 = 0.81; - function force(_) { - var i, n2 = nodes.length, tree = quadtree(nodes, x2, y2).visitAfter(accumulate); - for (alpha = _, i = 0; i < n2; ++i) - node = nodes[i], tree.visit(apply); - } - function initialize() { - if (!nodes) - return; - var i, n2 = nodes.length, node2; - strengths = new Array(n2); - for (i = 0; i < n2; ++i) - node2 = nodes[i], strengths[node2.index] = +strength(node2, i, nodes); - } - function accumulate(quad) { - var strength2 = 0, q, c3, weight = 0, x4, y4, i; - if (quad.length) { - for (x4 = y4 = i = 0; i < 4; ++i) { - if ((q = quad[i]) && (c3 = Math.abs(q.value))) { - strength2 += q.value, weight += c3, x4 += c3 * q.x, y4 += c3 * q.y; - } - } - quad.x = x4 / weight; - quad.y = y4 / weight; - } else { - q = quad; - q.x = q.data.x; - q.y = q.data.y; - do - strength2 += strengths[q.data.index]; - while (q = q.next); - } - quad.value = strength2; - } - function apply(quad, x1, _, x22) { - if (!quad.value) - return true; - var x4 = quad.x - node.x, y4 = quad.y - node.y, w = x22 - x1, l2 = x4 * x4 + y4 * y4; - if (w * w / theta2 < l2) { - if (l2 < distanceMax2) { - if (x4 === 0) - x4 = jiggle_default(random), l2 += x4 * x4; - if (y4 === 0) - y4 = jiggle_default(random), l2 += y4 * y4; - if (l2 < distanceMin2) - l2 = Math.sqrt(distanceMin2 * l2); - node.vx += x4 * quad.value * alpha / l2; - node.vy += y4 * quad.value * alpha / l2; - } - return true; - } else if (quad.length || l2 >= distanceMax2) - return; - if (quad.data !== node || quad.next) { - if (x4 === 0) - x4 = jiggle_default(random), l2 += x4 * x4; - if (y4 === 0) - y4 = jiggle_default(random), l2 += y4 * y4; - if (l2 < distanceMin2) - l2 = Math.sqrt(distanceMin2 * l2); - } - do - if (quad.data !== node) { - w = strengths[quad.data.index] * alpha / l2; - node.vx += x4 * w; - node.vy += y4 * w; - } - while (quad = quad.next); - } - force.initialize = function(_nodes, _random) { - nodes = _nodes; - random = _random; - initialize(); - }; - force.strength = function(_) { - return arguments.length ? (strength = typeof _ === "function" ? _ : constant_default5(+_), initialize(), force) : strength; - }; - force.distanceMin = function(_) { - return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2); - }; - force.distanceMax = function(_) { - return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2); - }; - force.theta = function(_) { - return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2); - }; - return force; -} - -// node_modules/d3-format/src/formatDecimal.js -function formatDecimal_default(x4) { - return Math.abs(x4 = Math.round(x4)) >= 1e21 ? x4.toLocaleString("en").replace(/,/g, "") : x4.toString(10); -} -function formatDecimalParts(x4, p) { - if ((i = (x4 = p ? x4.toExponential(p - 1) : x4.toExponential()).indexOf("e")) < 0) - return null; - var i, coefficient = x4.slice(0, i); - return [ - coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient, - +x4.slice(i + 1) - ]; -} - -// node_modules/d3-format/src/exponent.js -function exponent_default(x4) { - return x4 = formatDecimalParts(Math.abs(x4)), x4 ? x4[1] : NaN; -} - -// node_modules/d3-format/src/formatGroup.js -function formatGroup_default(grouping, thousands) { - return function(value, width) { - var i = value.length, t = [], j = 0, g = grouping[0], length = 0; - while (i > 0 && g > 0) { - if (length + g + 1 > width) - g = Math.max(1, width - length); - t.push(value.substring(i -= g, i + g)); - if ((length += g + 1) > width) - break; - g = grouping[j = (j + 1) % grouping.length]; - } - return t.reverse().join(thousands); - }; -} - -// node_modules/d3-format/src/formatNumerals.js -function formatNumerals_default(numerals) { - return function(value) { - return value.replace(/[0-9]/g, function(i) { - return numerals[+i]; - }); - }; -} - -// node_modules/d3-format/src/formatSpecifier.js -var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; -function formatSpecifier(specifier) { - if (!(match2 = re.exec(specifier))) - throw new Error("invalid format: " + specifier); - var match2; - return new FormatSpecifier({ - fill: match2[1], - align: match2[2], - sign: match2[3], - symbol: match2[4], - zero: match2[5], - width: match2[6], - comma: match2[7], - precision: match2[8] && match2[8].slice(1), - trim: match2[9], - type: match2[10] - }); -} -formatSpecifier.prototype = FormatSpecifier.prototype; -function FormatSpecifier(specifier) { - this.fill = specifier.fill === void 0 ? " " : specifier.fill + ""; - this.align = specifier.align === void 0 ? ">" : specifier.align + ""; - this.sign = specifier.sign === void 0 ? "-" : specifier.sign + ""; - this.symbol = specifier.symbol === void 0 ? "" : specifier.symbol + ""; - this.zero = !!specifier.zero; - this.width = specifier.width === void 0 ? void 0 : +specifier.width; - this.comma = !!specifier.comma; - this.precision = specifier.precision === void 0 ? void 0 : +specifier.precision; - this.trim = !!specifier.trim; - this.type = specifier.type === void 0 ? "" : specifier.type + ""; -} -FormatSpecifier.prototype.toString = function() { - return this.fill + this.align + this.sign + this.symbol + (this.zero ? "0" : "") + (this.width === void 0 ? "" : Math.max(1, this.width | 0)) + (this.comma ? "," : "") + (this.precision === void 0 ? "" : "." + Math.max(0, this.precision | 0)) + (this.trim ? "~" : "") + this.type; -}; - -// node_modules/d3-format/src/formatTrim.js -function formatTrim_default(s2) { - out: - for (var n2 = s2.length, i = 1, i0 = -1, i1; i < n2; ++i) { - switch (s2[i]) { - case ".": - i0 = i1 = i; - break; - case "0": - if (i0 === 0) - i0 = i; - i1 = i; - break; - default: - if (!+s2[i]) - break out; - if (i0 > 0) - i0 = 0; - break; - } - } - return i0 > 0 ? s2.slice(0, i0) + s2.slice(i1 + 1) : s2; -} - -// node_modules/d3-format/src/formatPrefixAuto.js -var prefixExponent; -function formatPrefixAuto_default(x4, p) { - var d = formatDecimalParts(x4, p); - if (!d) - return x4 + ""; - var coefficient = d[0], exponent = d[1], i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1, n2 = coefficient.length; - return i === n2 ? coefficient : i > n2 ? coefficient + new Array(i - n2 + 1).join("0") : i > 0 ? coefficient.slice(0, i) + "." + coefficient.slice(i) : "0." + new Array(1 - i).join("0") + formatDecimalParts(x4, Math.max(0, p + i - 1))[0]; -} - -// node_modules/d3-format/src/formatRounded.js -function formatRounded_default(x4, p) { - var d = formatDecimalParts(x4, p); - if (!d) - return x4 + ""; - var coefficient = d[0], exponent = d[1]; - return exponent < 0 ? "0." + new Array(-exponent).join("0") + coefficient : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + "." + coefficient.slice(exponent + 1) : coefficient + new Array(exponent - coefficient.length + 2).join("0"); -} - -// node_modules/d3-format/src/formatTypes.js -var formatTypes_default = { - "%": (x4, p) => (x4 * 100).toFixed(p), - "b": (x4) => Math.round(x4).toString(2), - "c": (x4) => x4 + "", - "d": formatDecimal_default, - "e": (x4, p) => x4.toExponential(p), - "f": (x4, p) => x4.toFixed(p), - "g": (x4, p) => x4.toPrecision(p), - "o": (x4) => Math.round(x4).toString(8), - "p": (x4, p) => formatRounded_default(x4 * 100, p), - "r": formatRounded_default, - "s": formatPrefixAuto_default, - "X": (x4) => Math.round(x4).toString(16).toUpperCase(), - "x": (x4) => Math.round(x4).toString(16) -}; - -// node_modules/d3-format/src/identity.js -function identity_default(x4) { - return x4; -} - -// node_modules/d3-format/src/locale.js -var map = Array.prototype.map; -var prefixes = ["y", "z", "a", "f", "p", "n", "\xB5", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"]; -function locale_default(locale2) { - var group = locale2.grouping === void 0 || locale2.thousands === void 0 ? identity_default : formatGroup_default(map.call(locale2.grouping, Number), locale2.thousands + ""), currencyPrefix = locale2.currency === void 0 ? "" : locale2.currency[0] + "", currencySuffix = locale2.currency === void 0 ? "" : locale2.currency[1] + "", decimal = locale2.decimal === void 0 ? "." : locale2.decimal + "", numerals = locale2.numerals === void 0 ? identity_default : formatNumerals_default(map.call(locale2.numerals, String)), percent = locale2.percent === void 0 ? "%" : locale2.percent + "", minus = locale2.minus === void 0 ? "\u2212" : locale2.minus + "", nan = locale2.nan === void 0 ? "NaN" : locale2.nan + ""; - function newFormat(specifier) { - specifier = formatSpecifier(specifier); - var fill = specifier.fill, align = specifier.align, sign = specifier.sign, symbol = specifier.symbol, zero2 = specifier.zero, width = specifier.width, comma = specifier.comma, precision = specifier.precision, trim = specifier.trim, type2 = specifier.type; - if (type2 === "n") - comma = true, type2 = "g"; - else if (!formatTypes_default[type2]) - precision === void 0 && (precision = 12), trim = true, type2 = "g"; - if (zero2 || fill === "0" && align === "=") - zero2 = true, fill = "0", align = "="; - var prefix = symbol === "$" ? currencyPrefix : symbol === "#" && /[boxX]/.test(type2) ? "0" + type2.toLowerCase() : "", suffix = symbol === "$" ? currencySuffix : /[%p]/.test(type2) ? percent : ""; - var formatType = formatTypes_default[type2], maybeSuffix = /[defgprs%]/.test(type2); - precision = precision === void 0 ? 6 : /[gprs]/.test(type2) ? Math.max(1, Math.min(21, precision)) : Math.max(0, Math.min(20, precision)); - function format2(value) { - var valuePrefix = prefix, valueSuffix = suffix, i, n2, c3; - if (type2 === "c") { - valueSuffix = formatType(value) + valueSuffix; - value = ""; - } else { - value = +value; - var valueNegative = value < 0 || 1 / value < 0; - value = isNaN(value) ? nan : formatType(Math.abs(value), precision); - if (trim) - value = formatTrim_default(value); - if (valueNegative && +value === 0 && sign !== "+") - valueNegative = false; - valuePrefix = (valueNegative ? sign === "(" ? sign : minus : sign === "-" || sign === "(" ? "" : sign) + valuePrefix; - valueSuffix = (type2 === "s" ? prefixes[8 + prefixExponent / 3] : "") + valueSuffix + (valueNegative && sign === "(" ? ")" : ""); - if (maybeSuffix) { - i = -1, n2 = value.length; - while (++i < n2) { - if (c3 = value.charCodeAt(i), 48 > c3 || c3 > 57) { - valueSuffix = (c3 === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix; - value = value.slice(0, i); - break; - } - } - } - } - if (comma && !zero2) - value = group(value, Infinity); - var length = valuePrefix.length + value.length + valueSuffix.length, padding = length < width ? new Array(width - length + 1).join(fill) : ""; - if (comma && zero2) - value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = ""; - switch (align) { - case "<": - value = valuePrefix + value + valueSuffix + padding; - break; - case "=": - value = valuePrefix + padding + value + valueSuffix; - break; - case "^": - value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); - break; - default: - value = padding + valuePrefix + value + valueSuffix; - break; - } - return numerals(value); - } - format2.toString = function() { - return specifier + ""; - }; - return format2; - } - function formatPrefix2(specifier, value) { - var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = "f", specifier)), e = Math.max(-8, Math.min(8, Math.floor(exponent_default(value) / 3))) * 3, k = Math.pow(10, -e), prefix = prefixes[8 + e / 3]; - return function(value2) { - return f(k * value2) + prefix; - }; - } - return { - format: newFormat, - formatPrefix: formatPrefix2 - }; -} - -// node_modules/d3-format/src/defaultLocale.js -var locale; -var format; -var formatPrefix; -defaultLocale2({ - thousands: ",", - grouping: [3], - currency: ["$", ""] -}); -function defaultLocale2(definition) { - locale = locale_default(definition); - format = locale.format; - formatPrefix = locale.formatPrefix; - return locale; -} - -// node_modules/d3-format/src/precisionFixed.js -function precisionFixed_default(step) { - return Math.max(0, -exponent_default(Math.abs(step))); -} - -// node_modules/d3-format/src/precisionPrefix.js -function precisionPrefix_default(step, value) { - return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent_default(value) / 3))) * 3 - exponent_default(Math.abs(step))); -} - -// node_modules/d3-format/src/precisionRound.js -function precisionRound_default(step, max4) { - step = Math.abs(step), max4 = Math.abs(max4) - step; - return Math.max(0, exponent_default(max4) - exponent_default(step)) + 1; -} - -// node_modules/d3-hierarchy/src/cluster.js -function defaultSeparation(a2, b) { - return a2.parent === b.parent ? 1 : 2; -} -function meanX(children3) { - return children3.reduce(meanXReduce, 0) / children3.length; -} -function meanXReduce(x4, c3) { - return x4 + c3.x; -} -function maxY(children3) { - return 1 + children3.reduce(maxYReduce, 0); -} -function maxYReduce(y4, c3) { - return Math.max(y4, c3.y); -} -function leafLeft(node) { - var children3; - while (children3 = node.children) - node = children3[0]; - return node; -} -function leafRight(node) { - var children3; - while (children3 = node.children) - node = children3[children3.length - 1]; - return node; -} -function cluster_default() { - var separation = defaultSeparation, dx = 1, dy = 1, nodeSize = false; - function cluster(root2) { - var previousNode, x4 = 0; - root2.eachAfter(function(node) { - var children3 = node.children; - if (children3) { - node.x = meanX(children3); - node.y = maxY(children3); - } else { - node.x = previousNode ? x4 += separation(node, previousNode) : 0; - node.y = 0; - previousNode = node; - } - }); - var left = leafLeft(root2), right = leafRight(root2), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2; - return root2.eachAfter(nodeSize ? function(node) { - node.x = (node.x - root2.x) * dx; - node.y = (root2.y - node.y) * dy; - } : function(node) { - node.x = (node.x - x0) / (x1 - x0) * dx; - node.y = (1 - (root2.y ? node.y / root2.y : 1)) * dy; - }); - } - cluster.separation = function(x4) { - return arguments.length ? (separation = x4, cluster) : separation; - }; - cluster.size = function(x4) { - return arguments.length ? (nodeSize = false, dx = +x4[0], dy = +x4[1], cluster) : nodeSize ? null : [dx, dy]; - }; - cluster.nodeSize = function(x4) { - return arguments.length ? (nodeSize = true, dx = +x4[0], dy = +x4[1], cluster) : nodeSize ? [dx, dy] : null; - }; - return cluster; -} - -// node_modules/d3-hierarchy/src/hierarchy/count.js -function count(node) { - var sum = 0, children3 = node.children, i = children3 && children3.length; - if (!i) - sum = 1; - else - while (--i >= 0) - sum += children3[i].value; - node.value = sum; -} -function count_default() { - return this.eachAfter(count); -} - -// node_modules/d3-hierarchy/src/hierarchy/each.js -function each_default2(callback, that) { - let index2 = -1; - for (const node of this) { - callback.call(that, node, ++index2, this); - } - return this; -} - -// node_modules/d3-hierarchy/src/hierarchy/eachBefore.js -function eachBefore_default(callback, that) { - var node = this, nodes = [node], children3, i, index2 = -1; - while (node = nodes.pop()) { - callback.call(that, node, ++index2, this); - if (children3 = node.children) { - for (i = children3.length - 1; i >= 0; --i) { - nodes.push(children3[i]); - } - } - } - return this; -} - -// node_modules/d3-hierarchy/src/hierarchy/eachAfter.js -function eachAfter_default(callback, that) { - var node = this, nodes = [node], next = [], children3, i, n2, index2 = -1; - while (node = nodes.pop()) { - next.push(node); - if (children3 = node.children) { - for (i = 0, n2 = children3.length; i < n2; ++i) { - nodes.push(children3[i]); - } - } - } - while (node = next.pop()) { - callback.call(that, node, ++index2, this); - } - return this; -} - -// node_modules/d3-hierarchy/src/hierarchy/find.js -function find_default2(callback, that) { - let index2 = -1; - for (const node of this) { - if (callback.call(that, node, ++index2, this)) { - return node; - } - } -} - -// node_modules/d3-hierarchy/src/hierarchy/sum.js -function sum_default(value) { - return this.eachAfter(function(node) { - var sum = +value(node.data) || 0, children3 = node.children, i = children3 && children3.length; - while (--i >= 0) - sum += children3[i].value; - node.value = sum; - }); -} - -// node_modules/d3-hierarchy/src/hierarchy/sort.js -function sort_default2(compare) { - return this.eachBefore(function(node) { - if (node.children) { - node.children.sort(compare); - } - }); -} - -// node_modules/d3-hierarchy/src/hierarchy/path.js -function path_default2(end) { - var start2 = this, ancestor = leastCommonAncestor(start2, end), nodes = [start2]; - while (start2 !== ancestor) { - start2 = start2.parent; - nodes.push(start2); - } - var k = nodes.length; - while (end !== ancestor) { - nodes.splice(k, 0, end); - end = end.parent; - } - return nodes; -} -function leastCommonAncestor(a2, b) { - if (a2 === b) - return a2; - var aNodes = a2.ancestors(), bNodes = b.ancestors(), c3 = null; - a2 = aNodes.pop(); - b = bNodes.pop(); - while (a2 === b) { - c3 = a2; - a2 = aNodes.pop(); - b = bNodes.pop(); - } - return c3; -} - -// node_modules/d3-hierarchy/src/hierarchy/ancestors.js -function ancestors_default() { - var node = this, nodes = [node]; - while (node = node.parent) { - nodes.push(node); - } - return nodes; -} - -// node_modules/d3-hierarchy/src/hierarchy/descendants.js -function descendants_default() { - return Array.from(this); -} - -// node_modules/d3-hierarchy/src/hierarchy/leaves.js -function leaves_default() { - var leaves = []; - this.eachBefore(function(node) { - if (!node.children) { - leaves.push(node); - } - }); - return leaves; -} - -// node_modules/d3-hierarchy/src/hierarchy/links.js -function links_default() { - var root2 = this, links = []; - root2.each(function(node) { - if (node !== root2) { - links.push({ source: node.parent, target: node }); - } - }); - return links; -} - -// node_modules/d3-hierarchy/src/hierarchy/iterator.js -function* iterator_default2() { - var node = this, current, next = [node], children3, i, n2; - do { - current = next.reverse(), next = []; - while (node = current.pop()) { - yield node; - if (children3 = node.children) { - for (i = 0, n2 = children3.length; i < n2; ++i) { - next.push(children3[i]); - } - } - } - } while (next.length); -} - -// node_modules/d3-hierarchy/src/hierarchy/index.js -function hierarchy(data, children3) { - if (data instanceof Map) { - data = [void 0, data]; - if (children3 === void 0) - children3 = mapChildren; - } else if (children3 === void 0) { - children3 = objectChildren; - } - var root2 = new Node(data), node, nodes = [root2], child, childs, i, n2; - while (node = nodes.pop()) { - if ((childs = children3(node.data)) && (n2 = (childs = Array.from(childs)).length)) { - node.children = childs; - for (i = n2 - 1; i >= 0; --i) { - nodes.push(child = childs[i] = new Node(childs[i])); - child.parent = node; - child.depth = node.depth + 1; - } - } - } - return root2.eachBefore(computeHeight); -} -function node_copy() { - return hierarchy(this).eachBefore(copyData); -} -function objectChildren(d) { - return d.children; -} -function mapChildren(d) { - return Array.isArray(d) ? d[1] : null; -} -function copyData(node) { - if (node.data.value !== void 0) - node.value = node.data.value; - node.data = node.data.data; -} -function computeHeight(node) { - var height = 0; - do - node.height = height; - while ((node = node.parent) && node.height < ++height); -} -function Node(data) { - this.data = data; - this.depth = this.height = 0; - this.parent = null; -} -Node.prototype = hierarchy.prototype = { - constructor: Node, - count: count_default, - each: each_default2, - eachAfter: eachAfter_default, - eachBefore: eachBefore_default, - find: find_default2, - sum: sum_default, - sort: sort_default2, - path: path_default2, - ancestors: ancestors_default, - descendants: descendants_default, - leaves: leaves_default, - links: links_default, - copy: node_copy, - [Symbol.iterator]: iterator_default2 -}; - -// node_modules/d3-hierarchy/src/accessors.js -function required(f) { - if (typeof f !== "function") - throw new Error(); - return f; -} - -// node_modules/d3-hierarchy/src/constant.js -function constantZero() { - return 0; -} -function constant_default6(x4) { - return function() { - return x4; - }; -} - -// node_modules/d3-hierarchy/src/treemap/round.js -function round_default2(node) { - node.x0 = Math.round(node.x0); - node.y0 = Math.round(node.y0); - node.x1 = Math.round(node.x1); - node.y1 = Math.round(node.y1); -} - -// node_modules/d3-hierarchy/src/treemap/dice.js -function dice_default(parent, x0, y0, x1, y1) { - var nodes = parent.children, node, i = -1, n2 = nodes.length, k = parent.value && (x1 - x0) / parent.value; - while (++i < n2) { - node = nodes[i], node.y0 = y0, node.y1 = y1; - node.x0 = x0, node.x1 = x0 += node.value * k; - } -} - -// node_modules/d3-hierarchy/src/partition.js -function partition_default() { - var dx = 1, dy = 1, padding = 0, round = false; - function partition(root2) { - var n2 = root2.height + 1; - root2.x0 = root2.y0 = padding; - root2.x1 = dx; - root2.y1 = dy / n2; - root2.eachBefore(positionNode(dy, n2)); - if (round) - root2.eachBefore(round_default2); - return root2; - } - function positionNode(dy2, n2) { - return function(node) { - if (node.children) { - dice_default(node, node.x0, dy2 * (node.depth + 1) / n2, node.x1, dy2 * (node.depth + 2) / n2); - } - var x0 = node.x0, y0 = node.y0, x1 = node.x1 - padding, y1 = node.y1 - padding; - if (x1 < x0) - x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) - y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - }; - } - partition.round = function(x4) { - return arguments.length ? (round = !!x4, partition) : round; - }; - partition.size = function(x4) { - return arguments.length ? (dx = +x4[0], dy = +x4[1], partition) : [dx, dy]; - }; - partition.padding = function(x4) { - return arguments.length ? (padding = +x4, partition) : padding; - }; - return partition; -} - -// node_modules/d3-hierarchy/src/stratify.js -var preroot = { depth: -1 }; -var ambiguous = {}; -function defaultId(d) { - return d.id; -} -function defaultParentId(d) { - return d.parentId; -} -function stratify_default() { - var id2 = defaultId, parentId = defaultParentId; - function stratify2(data) { - var nodes = Array.from(data), n2 = nodes.length, d, i, root2, parent, node, nodeId, nodeKey, nodeByKey = /* @__PURE__ */ new Map(); - for (i = 0; i < n2; ++i) { - d = nodes[i], node = nodes[i] = new Node(d); - if ((nodeId = id2(d, i, data)) != null && (nodeId += "")) { - nodeKey = node.id = nodeId; - nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node); - } - if ((nodeId = parentId(d, i, data)) != null && (nodeId += "")) { - node.parent = nodeId; - } - } - for (i = 0; i < n2; ++i) { - node = nodes[i]; - if (nodeId = node.parent) { - parent = nodeByKey.get(nodeId); - if (!parent) - throw new Error("missing: " + nodeId); - if (parent === ambiguous) - throw new Error("ambiguous: " + nodeId); - if (parent.children) - parent.children.push(node); - else - parent.children = [node]; - node.parent = parent; - } else { - if (root2) - throw new Error("multiple roots"); - root2 = node; - } - } - if (!root2) - throw new Error("no root"); - root2.parent = preroot; - root2.eachBefore(function(node2) { - node2.depth = node2.parent.depth + 1; - --n2; - }).eachBefore(computeHeight); - root2.parent = null; - if (n2 > 0) - throw new Error("cycle"); - return root2; - } - stratify2.id = function(x4) { - return arguments.length ? (id2 = required(x4), stratify2) : id2; - }; - stratify2.parentId = function(x4) { - return arguments.length ? (parentId = required(x4), stratify2) : parentId; - }; - return stratify2; -} - -// node_modules/d3-hierarchy/src/tree.js -function defaultSeparation2(a2, b) { - return a2.parent === b.parent ? 1 : 2; -} -function nextLeft(v) { - var children3 = v.children; - return children3 ? children3[0] : v.t; -} -function nextRight(v) { - var children3 = v.children; - return children3 ? children3[children3.length - 1] : v.t; -} -function moveSubtree(wm, wp, shift) { - var change = shift / (wp.i - wm.i); - wp.c -= change; - wp.s += shift; - wm.c += change; - wp.z += shift; - wp.m += shift; -} -function executeShifts(v) { - var shift = 0, change = 0, children3 = v.children, i = children3.length, w; - while (--i >= 0) { - w = children3[i]; - w.z += shift; - w.m += shift; - shift += w.s + (change += w.c); - } -} -function nextAncestor(vim, v, ancestor) { - return vim.a.parent === v.parent ? vim.a : ancestor; -} -function TreeNode(node, i) { - this._ = node; - this.parent = null; - this.children = null; - this.A = null; - this.a = this; - this.z = 0; - this.m = 0; - this.c = 0; - this.s = 0; - this.t = null; - this.i = i; -} -TreeNode.prototype = Object.create(Node.prototype); -function treeRoot(root2) { - var tree = new TreeNode(root2, 0), node, nodes = [tree], child, children3, i, n2; - while (node = nodes.pop()) { - if (children3 = node._.children) { - node.children = new Array(n2 = children3.length); - for (i = n2 - 1; i >= 0; --i) { - nodes.push(child = node.children[i] = new TreeNode(children3[i], i)); - child.parent = node; - } - } - } - (tree.parent = new TreeNode(null, 0)).children = [tree]; - return tree; -} -function tree_default() { - var separation = defaultSeparation2, dx = 1, dy = 1, nodeSize = null; - function tree(root2) { - var t = treeRoot(root2); - t.eachAfter(firstWalk), t.parent.m = -t.z; - t.eachBefore(secondWalk); - if (nodeSize) - root2.eachBefore(sizeNode); - else { - var left = root2, right = root2, bottom = root2; - root2.eachBefore(function(node) { - if (node.x < left.x) - left = node; - if (node.x > right.x) - right = node; - if (node.depth > bottom.depth) - bottom = node; - }); - var s2 = left === right ? 1 : separation(left, right) / 2, tx = s2 - left.x, kx = dx / (right.x + s2 + tx), ky = dy / (bottom.depth || 1); - root2.eachBefore(function(node) { - node.x = (node.x + tx) * kx; - node.y = node.depth * ky; - }); - } - return root2; - } - function firstWalk(v) { - var children3 = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null; - if (children3) { - executeShifts(v); - var midpoint = (children3[0].z + children3[children3.length - 1].z) / 2; - if (w) { - v.z = w.z + separation(v._, w._); - v.m = v.z - midpoint; - } else { - v.z = midpoint; - } - } else if (w) { - v.z = w.z + separation(v._, w._); - } - v.parent.A = apportion(v, w, v.parent.A || siblings[0]); - } - function secondWalk(v) { - v._.x = v.z + v.parent.m; - v.m += v.parent.m; - } - function apportion(v, w, ancestor) { - if (w) { - var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift; - while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) { - vom = nextLeft(vom); - vop = nextRight(vop); - vop.a = v; - shift = vim.z + sim - vip.z - sip + separation(vim._, vip._); - if (shift > 0) { - moveSubtree(nextAncestor(vim, v, ancestor), v, shift); - sip += shift; - sop += shift; - } - sim += vim.m; - sip += vip.m; - som += vom.m; - sop += vop.m; - } - if (vim && !nextRight(vop)) { - vop.t = vim; - vop.m += sim - sop; - } - if (vip && !nextLeft(vom)) { - vom.t = vip; - vom.m += sip - som; - ancestor = v; - } - } - return ancestor; - } - function sizeNode(node) { - node.x *= dx; - node.y = node.depth * dy; - } - tree.separation = function(x4) { - return arguments.length ? (separation = x4, tree) : separation; - }; - tree.size = function(x4) { - return arguments.length ? (nodeSize = false, dx = +x4[0], dy = +x4[1], tree) : nodeSize ? null : [dx, dy]; - }; - tree.nodeSize = function(x4) { - return arguments.length ? (nodeSize = true, dx = +x4[0], dy = +x4[1], tree) : nodeSize ? [dx, dy] : null; - }; - return tree; -} - -// node_modules/d3-hierarchy/src/treemap/slice.js -function slice_default(parent, x0, y0, x1, y1) { - var nodes = parent.children, node, i = -1, n2 = nodes.length, k = parent.value && (y1 - y0) / parent.value; - while (++i < n2) { - node = nodes[i], node.x0 = x0, node.x1 = x1; - node.y0 = y0, node.y1 = y0 += node.value * k; - } -} - -// node_modules/d3-hierarchy/src/treemap/squarify.js -var phi = (1 + Math.sqrt(5)) / 2; -function squarifyRatio(ratio, parent, x0, y0, x1, y1) { - var rows = [], nodes = parent.children, row, nodeValue, i0 = 0, i1 = 0, n2 = nodes.length, dx, dy, value = parent.value, sumValue, minValue, maxValue, newRatio, minRatio, alpha, beta; - while (i0 < n2) { - dx = x1 - x0, dy = y1 - y0; - do - sumValue = nodes[i1++].value; - while (!sumValue && i1 < n2); - minValue = maxValue = sumValue; - alpha = Math.max(dy / dx, dx / dy) / (value * ratio); - beta = sumValue * sumValue * alpha; - minRatio = Math.max(maxValue / beta, beta / minValue); - for (; i1 < n2; ++i1) { - sumValue += nodeValue = nodes[i1].value; - if (nodeValue < minValue) - minValue = nodeValue; - if (nodeValue > maxValue) - maxValue = nodeValue; - beta = sumValue * sumValue * alpha; - newRatio = Math.max(maxValue / beta, beta / minValue); - if (newRatio > minRatio) { - sumValue -= nodeValue; - break; - } - minRatio = newRatio; - } - rows.push(row = { value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1) }); - if (row.dice) - dice_default(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1); - else - slice_default(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1); - value -= sumValue, i0 = i1; - } - return rows; -} -var squarify_default = function custom(ratio) { - function squarify(parent, x0, y0, x1, y1) { - squarifyRatio(ratio, parent, x0, y0, x1, y1); - } - squarify.ratio = function(x4) { - return custom((x4 = +x4) > 1 ? x4 : 1); - }; - return squarify; -}(phi); - -// node_modules/d3-hierarchy/src/treemap/index.js -function treemap_default() { - var tile = squarify_default, round = false, dx = 1, dy = 1, paddingStack = [0], paddingInner = constantZero, paddingTop = constantZero, paddingRight = constantZero, paddingBottom = constantZero, paddingLeft = constantZero; - function treemap(root2) { - root2.x0 = root2.y0 = 0; - root2.x1 = dx; - root2.y1 = dy; - root2.eachBefore(positionNode); - paddingStack = [0]; - if (round) - root2.eachBefore(round_default2); - return root2; - } - function positionNode(node) { - var p = paddingStack[node.depth], x0 = node.x0 + p, y0 = node.y0 + p, x1 = node.x1 - p, y1 = node.y1 - p; - if (x1 < x0) - x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) - y0 = y1 = (y0 + y1) / 2; - node.x0 = x0; - node.y0 = y0; - node.x1 = x1; - node.y1 = y1; - if (node.children) { - p = paddingStack[node.depth + 1] = paddingInner(node) / 2; - x0 += paddingLeft(node) - p; - y0 += paddingTop(node) - p; - x1 -= paddingRight(node) - p; - y1 -= paddingBottom(node) - p; - if (x1 < x0) - x0 = x1 = (x0 + x1) / 2; - if (y1 < y0) - y0 = y1 = (y0 + y1) / 2; - tile(node, x0, y0, x1, y1); - } - } - treemap.round = function(x4) { - return arguments.length ? (round = !!x4, treemap) : round; - }; - treemap.size = function(x4) { - return arguments.length ? (dx = +x4[0], dy = +x4[1], treemap) : [dx, dy]; - }; - treemap.tile = function(x4) { - return arguments.length ? (tile = required(x4), treemap) : tile; - }; - treemap.padding = function(x4) { - return arguments.length ? treemap.paddingInner(x4).paddingOuter(x4) : treemap.paddingInner(); - }; - treemap.paddingInner = function(x4) { - return arguments.length ? (paddingInner = typeof x4 === "function" ? x4 : constant_default6(+x4), treemap) : paddingInner; - }; - treemap.paddingOuter = function(x4) { - return arguments.length ? treemap.paddingTop(x4).paddingRight(x4).paddingBottom(x4).paddingLeft(x4) : treemap.paddingTop(); - }; - treemap.paddingTop = function(x4) { - return arguments.length ? (paddingTop = typeof x4 === "function" ? x4 : constant_default6(+x4), treemap) : paddingTop; - }; - treemap.paddingRight = function(x4) { - return arguments.length ? (paddingRight = typeof x4 === "function" ? x4 : constant_default6(+x4), treemap) : paddingRight; - }; - treemap.paddingBottom = function(x4) { - return arguments.length ? (paddingBottom = typeof x4 === "function" ? x4 : constant_default6(+x4), treemap) : paddingBottom; - }; - treemap.paddingLeft = function(x4) { - return arguments.length ? (paddingLeft = typeof x4 === "function" ? x4 : constant_default6(+x4), treemap) : paddingLeft; - }; - return treemap; -} - -// node_modules/d3-hierarchy/src/treemap/binary.js -function binary_default(parent, x0, y0, x1, y1) { - var nodes = parent.children, i, n2 = nodes.length, sum, sums = new Array(n2 + 1); - for (sums[0] = sum = i = 0; i < n2; ++i) { - sums[i + 1] = sum += nodes[i].value; - } - partition(0, n2, parent.value, x0, y0, x1, y1); - function partition(i2, j, value, x02, y02, x12, y12) { - if (i2 >= j - 1) { - var node = nodes[i2]; - node.x0 = x02, node.y0 = y02; - node.x1 = x12, node.y1 = y12; - return; - } - var valueOffset = sums[i2], valueTarget = value / 2 + valueOffset, k = i2 + 1, hi = j - 1; - while (k < hi) { - var mid = k + hi >>> 1; - if (sums[mid] < valueTarget) - k = mid + 1; - else - hi = mid; - } - if (valueTarget - sums[k - 1] < sums[k] - valueTarget && i2 + 1 < k) - --k; - var valueLeft = sums[k] - valueOffset, valueRight = value - valueLeft; - if (x12 - x02 > y12 - y02) { - var xk = value ? (x02 * valueRight + x12 * valueLeft) / value : x12; - partition(i2, k, valueLeft, x02, y02, xk, y12); - partition(k, j, valueRight, xk, y02, x12, y12); - } else { - var yk = value ? (y02 * valueRight + y12 * valueLeft) / value : y12; - partition(i2, k, valueLeft, x02, y02, x12, yk); - partition(k, j, valueRight, x02, yk, x12, y12); - } - } -} - -// node_modules/d3-scale/src/init.js -function initRange(domain, range) { - switch (arguments.length) { - case 0: - break; - case 1: - this.range(domain); - break; - default: - this.range(range).domain(domain); - break; - } - return this; -} - -// node_modules/d3-scale/src/ordinal.js -var implicit = Symbol("implicit"); -function ordinal() { - var index2 = /* @__PURE__ */ new Map(), domain = [], range = [], unknown = implicit; - function scale(d) { - var key = d + "", i = index2.get(key); - if (!i) { - if (unknown !== implicit) - return unknown; - index2.set(key, i = domain.push(d)); - } - return range[(i - 1) % range.length]; - } - scale.domain = function(_) { - if (!arguments.length) - return domain.slice(); - domain = [], index2 = /* @__PURE__ */ new Map(); - for (const value of _) { - const key = value + ""; - if (index2.has(key)) - continue; - index2.set(key, domain.push(value)); - } - return scale; - }; - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), scale) : range.slice(); - }; - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - scale.copy = function() { - return ordinal(domain, range).unknown(unknown); - }; - initRange.apply(scale, arguments); - return scale; -} - -// node_modules/d3-scale/src/band.js -function band() { - var scale = ordinal().unknown(void 0), domain = scale.domain, ordinalRange = scale.range, r0 = 0, r1 = 1, step, bandwidth, round = false, paddingInner = 0, paddingOuter = 0, align = 0.5; - delete scale.unknown; - function rescale() { - var n2 = domain().length, reverse = r1 < r0, start2 = reverse ? r1 : r0, stop = reverse ? r0 : r1; - step = (stop - start2) / Math.max(1, n2 - paddingInner + paddingOuter * 2); - if (round) - step = Math.floor(step); - start2 += (stop - start2 - step * (n2 - paddingInner)) * align; - bandwidth = step * (1 - paddingInner); - if (round) - start2 = Math.round(start2), bandwidth = Math.round(bandwidth); - var values = range_default(n2).map(function(i) { - return start2 + step * i; - }); - return ordinalRange(reverse ? values.reverse() : values); - } - scale.domain = function(_) { - return arguments.length ? (domain(_), rescale()) : domain(); - }; - scale.range = function(_) { - return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1]; - }; - scale.rangeRound = function(_) { - return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale(); - }; - scale.bandwidth = function() { - return bandwidth; - }; - scale.step = function() { - return step; - }; - scale.round = function(_) { - return arguments.length ? (round = !!_, rescale()) : round; - }; - scale.padding = function(_) { - return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner; - }; - scale.paddingInner = function(_) { - return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner; - }; - scale.paddingOuter = function(_) { - return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter; - }; - scale.align = function(_) { - return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align; - }; - scale.copy = function() { - return band(domain(), [r0, r1]).round(round).paddingInner(paddingInner).paddingOuter(paddingOuter).align(align); - }; - return initRange.apply(rescale(), arguments); -} -function pointish(scale) { - var copy3 = scale.copy; - scale.padding = scale.paddingOuter; - delete scale.paddingInner; - delete scale.paddingOuter; - scale.copy = function() { - return pointish(copy3()); - }; - return scale; -} -function point() { - return pointish(band.apply(null, arguments).paddingInner(1)); -} - -// node_modules/d3-scale/src/constant.js -function constants(x4) { - return function() { - return x4; - }; -} - -// node_modules/d3-scale/src/number.js -function number(x4) { - return +x4; -} - -// node_modules/d3-scale/src/continuous.js -var unit = [0, 1]; -function identity2(x4) { - return x4; -} -function normalize(a2, b) { - return (b -= a2 = +a2) ? function(x4) { - return (x4 - a2) / b; - } : constants(isNaN(b) ? NaN : 0.5); -} -function clamper(a2, b) { - var t; - if (a2 > b) - t = a2, a2 = b, b = t; - return function(x4) { - return Math.max(a2, Math.min(b, x4)); - }; -} -function bimap(domain, range, interpolate) { - var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1]; - if (d1 < d0) - d0 = normalize(d1, d0), r0 = interpolate(r1, r0); - else - d0 = normalize(d0, d1), r0 = interpolate(r0, r1); - return function(x4) { - return r0(d0(x4)); - }; -} -function polymap(domain, range, interpolate) { - var j = Math.min(domain.length, range.length) - 1, d = new Array(j), r = new Array(j), i = -1; - if (domain[j] < domain[0]) { - domain = domain.slice().reverse(); - range = range.slice().reverse(); - } - while (++i < j) { - d[i] = normalize(domain[i], domain[i + 1]); - r[i] = interpolate(range[i], range[i + 1]); - } - return function(x4) { - var i2 = bisect_default(domain, x4, 1, j) - 1; - return r[i2](d[i2](x4)); - }; -} -function copy2(source, target) { - return target.domain(source.domain()).range(source.range()).interpolate(source.interpolate()).clamp(source.clamp()).unknown(source.unknown()); -} -function transformer() { - var domain = unit, range = unit, interpolate = value_default, transform2, untransform, unknown, clamp = identity2, piecewise, output, input; - function rescale() { - var n2 = Math.min(domain.length, range.length); - if (clamp !== identity2) - clamp = clamper(domain[0], domain[n2 - 1]); - piecewise = n2 > 2 ? polymap : bimap; - output = input = null; - return scale; - } - function scale(x4) { - return x4 == null || isNaN(x4 = +x4) ? unknown : (output || (output = piecewise(domain.map(transform2), range, interpolate)))(transform2(clamp(x4))); - } - scale.invert = function(y4) { - return clamp(untransform((input || (input = piecewise(range, domain.map(transform2), number_default2)))(y4))); - }; - scale.domain = function(_) { - return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice(); - }; - scale.range = function(_) { - return arguments.length ? (range = Array.from(_), rescale()) : range.slice(); - }; - scale.rangeRound = function(_) { - return range = Array.from(_), interpolate = round_default, rescale(); - }; - scale.clamp = function(_) { - return arguments.length ? (clamp = _ ? true : identity2, rescale()) : clamp !== identity2; - }; - scale.interpolate = function(_) { - return arguments.length ? (interpolate = _, rescale()) : interpolate; - }; - scale.unknown = function(_) { - return arguments.length ? (unknown = _, scale) : unknown; - }; - return function(t, u) { - transform2 = t, untransform = u; - return rescale(); - }; -} -function continuous() { - return transformer()(identity2, identity2); -} - -// node_modules/d3-scale/src/tickFormat.js -function tickFormat(start2, stop, count2, specifier) { - var step = tickStep(start2, stop, count2), precision; - specifier = formatSpecifier(specifier == null ? ",f" : specifier); - switch (specifier.type) { - case "s": { - var value = Math.max(Math.abs(start2), Math.abs(stop)); - if (specifier.precision == null && !isNaN(precision = precisionPrefix_default(step, value))) - specifier.precision = precision; - return formatPrefix(specifier, value); - } - case "": - case "e": - case "g": - case "p": - case "r": { - if (specifier.precision == null && !isNaN(precision = precisionRound_default(step, Math.max(Math.abs(start2), Math.abs(stop))))) - specifier.precision = precision - (specifier.type === "e"); - break; - } - case "f": - case "%": { - if (specifier.precision == null && !isNaN(precision = precisionFixed_default(step))) - specifier.precision = precision - (specifier.type === "%") * 2; - break; - } - } - return format(specifier); -} - -// node_modules/d3-scale/src/linear.js -function linearish(scale) { - var domain = scale.domain; - scale.ticks = function(count2) { - var d = domain(); - return ticks_default(d[0], d[d.length - 1], count2 == null ? 10 : count2); - }; - scale.tickFormat = function(count2, specifier) { - var d = domain(); - return tickFormat(d[0], d[d.length - 1], count2 == null ? 10 : count2, specifier); - }; - scale.nice = function(count2) { - if (count2 == null) - count2 = 10; - var d = domain(); - var i0 = 0; - var i1 = d.length - 1; - var start2 = d[i0]; - var stop = d[i1]; - var prestep; - var step; - var maxIter = 10; - if (stop < start2) { - step = start2, start2 = stop, stop = step; - step = i0, i0 = i1, i1 = step; - } - while (maxIter-- > 0) { - step = tickIncrement(start2, stop, count2); - if (step === prestep) { - d[i0] = start2; - d[i1] = stop; - return domain(d); - } else if (step > 0) { - start2 = Math.floor(start2 / step) * step; - stop = Math.ceil(stop / step) * step; - } else if (step < 0) { - start2 = Math.ceil(start2 * step) / step; - stop = Math.floor(stop * step) / step; - } else { - break; - } - prestep = step; - } - return scale; - }; - return scale; -} -function linear2() { - var scale = continuous(); - scale.copy = function() { - return copy2(scale, linear2()); - }; - initRange.apply(scale, arguments); - return linearish(scale); -} - -// node_modules/d3-scale-chromatic/src/colors.js -function colors_default(specifier) { - var n2 = specifier.length / 6 | 0, colors = new Array(n2), i = 0; - while (i < n2) - colors[i] = "#" + specifier.slice(i * 6, ++i * 6); - return colors; -} - -// node_modules/d3-scale-chromatic/src/categorical/category10.js -var category10_default = colors_default("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"); - -// node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js -var warm = cubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.5, 0.8)); -var cool = cubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.5, 0.8)); -var c2 = cubehelix(); -function rainbow_default(t) { - if (t < 0 || t > 1) - t -= Math.floor(t); - var ts = Math.abs(t - 0.5); - c2.h = 360 * t - 100; - c2.s = 1.5 - 1.5 * ts; - c2.l = 0.8 - 0.9 * ts; - return c2 + ""; -} - -// node_modules/d3-shape/src/constant.js -function constant_default7(x4) { - return function constant() { - return x4; - }; -} - -// node_modules/d3-shape/src/math.js -var abs2 = Math.abs; -var atan2 = Math.atan2; -var cos = Math.cos; -var max3 = Math.max; -var min2 = Math.min; -var sin = Math.sin; -var sqrt = Math.sqrt; -var epsilon3 = 1e-12; -var pi2 = Math.PI; -var halfPi = pi2 / 2; -var tau2 = 2 * pi2; -function acos(x4) { - return x4 > 1 ? 0 : x4 < -1 ? pi2 : Math.acos(x4); -} -function asin(x4) { - return x4 >= 1 ? halfPi : x4 <= -1 ? -halfPi : Math.asin(x4); -} - -// node_modules/d3-shape/src/arc.js -function arcInnerRadius(d) { - return d.innerRadius; -} -function arcOuterRadius(d) { - return d.outerRadius; -} -function arcStartAngle(d) { - return d.startAngle; -} -function arcEndAngle(d) { - return d.endAngle; -} -function arcPadAngle(d) { - return d && d.padAngle; -} -function intersect(x0, y0, x1, y1, x22, y22, x32, y32) { - var x10 = x1 - x0, y10 = y1 - y0, x322 = x32 - x22, y322 = y32 - y22, t = y322 * x10 - x322 * y10; - if (t * t < epsilon3) - return; - t = (x322 * (y0 - y22) - y322 * (x0 - x22)) / t; - return [x0 + t * x10, y0 + t * y10]; -} -function cornerTangents(x0, y0, x1, y1, r1, rc, cw) { - var x01 = x0 - x1, y01 = y0 - y1, lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x11 = x0 + ox, y11 = y0 + oy, x10 = x1 + ox, y10 = y1 + oy, x00 = (x11 + x10) / 2, y00 = (y11 + y10) / 2, dx = x10 - x11, dy = y10 - y11, d2 = dx * dx + dy * dy, r = r1 - rc, D2 = x11 * y10 - x10 * y11, d = (dy < 0 ? -1 : 1) * sqrt(max3(0, r * r * d2 - D2 * D2)), cx0 = (D2 * dy - dx * d) / d2, cy0 = (-D2 * dx - dy * d) / d2, cx1 = (D2 * dy + dx * d) / d2, cy1 = (-D2 * dx + dy * d) / d2, dx0 = cx0 - x00, dy0 = cy0 - y00, dx1 = cx1 - x00, dy1 = cy1 - y00; - if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) - cx0 = cx1, cy0 = cy1; - return { - cx: cx0, - cy: cy0, - x01: -ox, - y01: -oy, - x11: cx0 * (r1 / r - 1), - y11: cy0 * (r1 / r - 1) - }; -} -function arc_default() { - var innerRadius = arcInnerRadius, outerRadius = arcOuterRadius, cornerRadius = constant_default7(0), padRadius = null, startAngle = arcStartAngle, endAngle = arcEndAngle, padAngle = arcPadAngle, context = null; - function arc() { - var buffer, r, r0 = +innerRadius.apply(this, arguments), r1 = +outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) - halfPi, a1 = endAngle.apply(this, arguments) - halfPi, da = abs2(a1 - a0), cw = a1 > a0; - if (!context) - context = buffer = path_default(); - if (r1 < r0) - r = r1, r1 = r0, r0 = r; - if (!(r1 > epsilon3)) - context.moveTo(0, 0); - else if (da > tau2 - epsilon3) { - context.moveTo(r1 * cos(a0), r1 * sin(a0)); - context.arc(0, 0, r1, a0, a1, !cw); - if (r0 > epsilon3) { - context.moveTo(r0 * cos(a1), r0 * sin(a1)); - context.arc(0, 0, r0, a1, a0, cw); - } - } else { - var a01 = a0, a11 = a1, a00 = a0, a10 = a1, da0 = da, da1 = da, ap = padAngle.apply(this, arguments) / 2, rp = ap > epsilon3 && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)), rc = min2(abs2(r1 - r0) / 2, +cornerRadius.apply(this, arguments)), rc0 = rc, rc1 = rc, t0, t1; - if (rp > epsilon3) { - var p0 = asin(rp / r0 * sin(ap)), p1 = asin(rp / r1 * sin(ap)); - if ((da0 -= p0 * 2) > epsilon3) - p0 *= cw ? 1 : -1, a00 += p0, a10 -= p0; - else - da0 = 0, a00 = a10 = (a0 + a1) / 2; - if ((da1 -= p1 * 2) > epsilon3) - p1 *= cw ? 1 : -1, a01 += p1, a11 -= p1; - else - da1 = 0, a01 = a11 = (a0 + a1) / 2; - } - var x01 = r1 * cos(a01), y01 = r1 * sin(a01), x10 = r0 * cos(a10), y10 = r0 * sin(a10); - if (rc > epsilon3) { - var x11 = r1 * cos(a11), y11 = r1 * sin(a11), x00 = r0 * cos(a00), y00 = r0 * sin(a00), oc; - if (da < pi2 && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) { - var ax = x01 - oc[0], ay = y01 - oc[1], bx = x11 - oc[0], by = y11 - oc[1], kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2), lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]); - rc0 = min2(rc, (r0 - lc) / (kc - 1)); - rc1 = min2(rc, (r1 - lc) / (kc + 1)); - } - } - if (!(da1 > epsilon3)) - context.moveTo(x01, y01); - else if (rc1 > epsilon3) { - t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw); - t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw); - context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01); - if (rc1 < rc) - context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); - else { - context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw); - context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw); - context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw); - } - } else - context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw); - if (!(r0 > epsilon3) || !(da0 > epsilon3)) - context.lineTo(x10, y10); - else if (rc0 > epsilon3) { - t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw); - t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw); - context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01); - if (rc0 < rc) - context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw); - else { - context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw); - context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw); - context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw); - } - } else - context.arc(0, 0, r0, a10, a00, cw); - } - context.closePath(); - if (buffer) - return context = null, buffer + "" || null; - } - arc.centroid = function() { - var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a2 = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi2 / 2; - return [cos(a2) * r, sin(a2) * r]; - }; - arc.innerRadius = function(_) { - return arguments.length ? (innerRadius = typeof _ === "function" ? _ : constant_default7(+_), arc) : innerRadius; - }; - arc.outerRadius = function(_) { - return arguments.length ? (outerRadius = typeof _ === "function" ? _ : constant_default7(+_), arc) : outerRadius; - }; - arc.cornerRadius = function(_) { - return arguments.length ? (cornerRadius = typeof _ === "function" ? _ : constant_default7(+_), arc) : cornerRadius; - }; - arc.padRadius = function(_) { - return arguments.length ? (padRadius = _ == null ? null : typeof _ === "function" ? _ : constant_default7(+_), arc) : padRadius; - }; - arc.startAngle = function(_) { - return arguments.length ? (startAngle = typeof _ === "function" ? _ : constant_default7(+_), arc) : startAngle; - }; - arc.endAngle = function(_) { - return arguments.length ? (endAngle = typeof _ === "function" ? _ : constant_default7(+_), arc) : endAngle; - }; - arc.padAngle = function(_) { - return arguments.length ? (padAngle = typeof _ === "function" ? _ : constant_default7(+_), arc) : padAngle; - }; - arc.context = function(_) { - return arguments.length ? (context = _ == null ? null : _, arc) : context; - }; - return arc; -} - -// node_modules/d3-shape/src/array.js -var slice = Array.prototype.slice; -function array_default2(x4) { - return typeof x4 === "object" && "length" in x4 ? x4 : Array.from(x4); -} - -// node_modules/d3-shape/src/curve/linear.js -function Linear(context) { - this._context = context; -} -Linear.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._point = 0; - }, - lineEnd: function() { - if (this._line || this._line !== 0 && this._point === 1) - this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x4, y4) { - x4 = +x4, y4 = +y4; - switch (this._point) { - case 0: - this._point = 1; - this._line ? this._context.lineTo(x4, y4) : this._context.moveTo(x4, y4); - break; - case 1: - this._point = 2; - default: - this._context.lineTo(x4, y4); - break; - } - } -}; -function linear_default(context) { - return new Linear(context); -} - -// node_modules/d3-shape/src/point.js -function x3(p) { - return p[0]; -} -function y3(p) { - return p[1]; -} - -// node_modules/d3-shape/src/line.js -function line_default(x4, y4) { - var defined = constant_default7(true), context = null, curve = linear_default, output = null; - x4 = typeof x4 === "function" ? x4 : x4 === void 0 ? x3 : constant_default7(x4); - y4 = typeof y4 === "function" ? y4 : y4 === void 0 ? y3 : constant_default7(y4); - function line(data) { - var i, n2 = (data = array_default2(data)).length, d, defined0 = false, buffer; - if (context == null) - output = curve(buffer = path_default()); - for (i = 0; i <= n2; ++i) { - if (!(i < n2 && defined(d = data[i], i, data)) === defined0) { - if (defined0 = !defined0) - output.lineStart(); - else - output.lineEnd(); - } - if (defined0) - output.point(+x4(d, i, data), +y4(d, i, data)); - } - if (buffer) - return output = null, buffer + "" || null; - } - line.x = function(_) { - return arguments.length ? (x4 = typeof _ === "function" ? _ : constant_default7(+_), line) : x4; - }; - line.y = function(_) { - return arguments.length ? (y4 = typeof _ === "function" ? _ : constant_default7(+_), line) : y4; - }; - line.defined = function(_) { - return arguments.length ? (defined = typeof _ === "function" ? _ : constant_default7(!!_), line) : defined; - }; - line.curve = function(_) { - return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve; - }; - line.context = function(_) { - return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context; - }; - return line; -} - -// node_modules/d3-shape/src/curve/radial.js -var curveRadialLinear = curveRadial(linear_default); -function Radial(curve) { - this._curve = curve; -} -Radial.prototype = { - areaStart: function() { - this._curve.areaStart(); - }, - areaEnd: function() { - this._curve.areaEnd(); - }, - lineStart: function() { - this._curve.lineStart(); - }, - lineEnd: function() { - this._curve.lineEnd(); - }, - point: function(a2, r) { - this._curve.point(r * Math.sin(a2), r * -Math.cos(a2)); - } -}; -function curveRadial(curve) { - function radial(context) { - return new Radial(curve(context)); - } - radial._curve = curve; - return radial; -} - -// node_modules/d3-shape/src/lineRadial.js -function lineRadial(l2) { - var c3 = l2.curve; - l2.angle = l2.x, delete l2.x; - l2.radius = l2.y, delete l2.y; - l2.curve = function(_) { - return arguments.length ? c3(curveRadial(_)) : c3()._curve; - }; - return l2; -} -function lineRadial_default() { - return lineRadial(line_default().curve(curveRadialLinear)); -} - -// node_modules/d3-shape/src/link/index.js -function linkSource(d) { - return d.source; -} -function linkTarget(d) { - return d.target; -} -function link(curve) { - var source = linkSource, target = linkTarget, x4 = x3, y4 = y3, context = null; - function link2() { - var buffer, argv = slice.call(arguments), s2 = source.apply(this, argv), t = target.apply(this, argv); - if (!context) - context = buffer = path_default(); - curve(context, +x4.apply(this, (argv[0] = s2, argv)), +y4.apply(this, argv), +x4.apply(this, (argv[0] = t, argv)), +y4.apply(this, argv)); - if (buffer) - return context = null, buffer + "" || null; - } - link2.source = function(_) { - return arguments.length ? (source = _, link2) : source; - }; - link2.target = function(_) { - return arguments.length ? (target = _, link2) : target; - }; - link2.x = function(_) { - return arguments.length ? (x4 = typeof _ === "function" ? _ : constant_default7(+_), link2) : x4; - }; - link2.y = function(_) { - return arguments.length ? (y4 = typeof _ === "function" ? _ : constant_default7(+_), link2) : y4; - }; - link2.context = function(_) { - return arguments.length ? (context = _ == null ? null : _, link2) : context; - }; - return link2; -} -function curveHorizontal(context, x0, y0, x1, y1) { - context.moveTo(x0, y0); - context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1); -} -function linkHorizontal() { - return link(curveHorizontal); -} - -// node_modules/d3-shape/src/curve/basis.js -function point2(that, x4, y4) { - that._context.bezierCurveTo( - (2 * that._x0 + that._x1) / 3, - (2 * that._y0 + that._y1) / 3, - (that._x0 + 2 * that._x1) / 3, - (that._y0 + 2 * that._y1) / 3, - (that._x0 + 4 * that._x1 + x4) / 6, - (that._y0 + 4 * that._y1 + y4) / 6 - ); -} -function Basis(context) { - this._context = context; -} -Basis.prototype = { - areaStart: function() { - this._line = 0; - }, - areaEnd: function() { - this._line = NaN; - }, - lineStart: function() { - this._x0 = this._x1 = this._y0 = this._y1 = NaN; - this._point = 0; - }, - lineEnd: function() { - switch (this._point) { - case 3: - point2(this, this._x1, this._y1); - case 2: - this._context.lineTo(this._x1, this._y1); - break; - } - if (this._line || this._line !== 0 && this._point === 1) - this._context.closePath(); - this._line = 1 - this._line; - }, - point: function(x4, y4) { - x4 = +x4, y4 = +y4; - switch (this._point) { - case 0: - this._point = 1; - this._line ? this._context.lineTo(x4, y4) : this._context.moveTo(x4, y4); - break; - case 1: - this._point = 2; - break; - case 2: - this._point = 3; - this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); - default: - point2(this, x4, y4); - break; - } - this._x0 = this._x1, this._x1 = x4; - this._y0 = this._y1, this._y1 = y4; - } -}; - -// node_modules/d3-shape/src/curve/bundle.js -function Bundle(context, beta) { - this._basis = new Basis(context); - this._beta = beta; -} -Bundle.prototype = { - lineStart: function() { - this._x = []; - this._y = []; - this._basis.lineStart(); - }, - lineEnd: function() { - var x4 = this._x, y4 = this._y, j = x4.length - 1; - if (j > 0) { - var x0 = x4[0], y0 = y4[0], dx = x4[j] - x0, dy = y4[j] - y0, i = -1, t; - while (++i <= j) { - t = i / j; - this._basis.point( - this._beta * x4[i] + (1 - this._beta) * (x0 + t * dx), - this._beta * y4[i] + (1 - this._beta) * (y0 + t * dy) - ); - } - } - this._x = this._y = null; - this._basis.lineEnd(); - }, - point: function(x4, y4) { - this._x.push(+x4); - this._y.push(+y4); - } -}; -var bundle_default = function custom2(beta) { - function bundle(context) { - return beta === 1 ? new Basis(context) : new Bundle(context, beta); - } - bundle.beta = function(beta2) { - return custom2(+beta2); - }; - return bundle; -}(0.85); - -// node_modules/d3-zoom/src/constant.js -var constant_default8 = (x4) => () => x4; - -// node_modules/d3-zoom/src/event.js -function ZoomEvent(type2, { - sourceEvent, - target, - transform: transform2, - dispatch: dispatch2 -}) { - Object.defineProperties(this, { - type: { value: type2, enumerable: true, configurable: true }, - sourceEvent: { value: sourceEvent, enumerable: true, configurable: true }, - target: { value: target, enumerable: true, configurable: true }, - transform: { value: transform2, enumerable: true, configurable: true }, - _: { value: dispatch2 } - }); -} - -// node_modules/d3-zoom/src/transform.js -function Transform(k, x4, y4) { - this.k = k; - this.x = x4; - this.y = y4; -} -Transform.prototype = { - constructor: Transform, - scale: function(k) { - return k === 1 ? this : new Transform(this.k * k, this.x, this.y); - }, - translate: function(x4, y4) { - return x4 === 0 & y4 === 0 ? this : new Transform(this.k, this.x + this.k * x4, this.y + this.k * y4); - }, - apply: function(point3) { - return [point3[0] * this.k + this.x, point3[1] * this.k + this.y]; - }, - applyX: function(x4) { - return x4 * this.k + this.x; - }, - applyY: function(y4) { - return y4 * this.k + this.y; - }, - invert: function(location) { - return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k]; - }, - invertX: function(x4) { - return (x4 - this.x) / this.k; - }, - invertY: function(y4) { - return (y4 - this.y) / this.k; - }, - rescaleX: function(x4) { - return x4.copy().domain(x4.range().map(this.invertX, this).map(x4.invert, x4)); - }, - rescaleY: function(y4) { - return y4.copy().domain(y4.range().map(this.invertY, this).map(y4.invert, y4)); - }, - toString: function() { - return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; - } -}; -var identity3 = new Transform(1, 0, 0); -transform.prototype = Transform.prototype; -function transform(node) { - while (!node.__zoom) - if (!(node = node.parentNode)) - return identity3; - return node.__zoom; -} - -// node_modules/d3-zoom/src/noevent.js -function nopropagation3(event) { - event.stopImmediatePropagation(); -} -function noevent_default3(event) { - event.preventDefault(); - event.stopImmediatePropagation(); -} - -// node_modules/d3-zoom/src/zoom.js -function defaultFilter2(event) { - return (!event.ctrlKey || event.type === "wheel") && !event.button; -} -function defaultExtent() { - var e = this; - if (e instanceof SVGElement) { - e = e.ownerSVGElement || e; - if (e.hasAttribute("viewBox")) { - e = e.viewBox.baseVal; - return [[e.x, e.y], [e.x + e.width, e.y + e.height]]; - } - return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]]; - } - return [[0, 0], [e.clientWidth, e.clientHeight]]; -} -function defaultTransform() { - return this.__zoom || identity3; -} -function defaultWheelDelta(event) { - return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 2e-3) * (event.ctrlKey ? 10 : 1); -} -function defaultTouchable2() { - return navigator.maxTouchPoints || "ontouchstart" in this; -} -function defaultConstrain(transform2, extent, translateExtent) { - var dx0 = transform2.invertX(extent[0][0]) - translateExtent[0][0], dx1 = transform2.invertX(extent[1][0]) - translateExtent[1][0], dy0 = transform2.invertY(extent[0][1]) - translateExtent[0][1], dy1 = transform2.invertY(extent[1][1]) - translateExtent[1][1]; - return transform2.translate( - dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), - dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) - ); -} -function zoom_default2() { - var filter2 = defaultFilter2, extent = defaultExtent, constrain = defaultConstrain, wheelDelta = defaultWheelDelta, touchable = defaultTouchable2, scaleExtent = [0, Infinity], translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], duration = 250, interpolate = zoom_default, listeners = dispatch_default("start", "zoom", "end"), touchstarting, touchfirst, touchending, touchDelay = 500, wheelDelay = 150, clickDistance2 = 0, tapDistance = 10; - function zoom(selection2) { - selection2.property("__zoom", defaultTransform).on("wheel.zoom", wheeled).on("mousedown.zoom", mousedowned).on("dblclick.zoom", dblclicked).filter(touchable).on("touchstart.zoom", touchstarted).on("touchmove.zoom", touchmoved).on("touchend.zoom touchcancel.zoom", touchended).style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); - } - zoom.transform = function(collection, transform2, point3, event) { - var selection2 = collection.selection ? collection.selection() : collection; - selection2.property("__zoom", defaultTransform); - if (collection !== selection2) { - schedule(collection, transform2, point3, event); - } else { - selection2.interrupt().each(function() { - gesture(this, arguments).event(event).start().zoom(null, typeof transform2 === "function" ? transform2.apply(this, arguments) : transform2).end(); - }); - } - }; - zoom.scaleBy = function(selection2, k, p, event) { - zoom.scaleTo(selection2, function() { - var k0 = this.__zoom.k, k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return k0 * k1; - }, p, event); - }; - zoom.scaleTo = function(selection2, k, p, event) { - zoom.transform(selection2, function() { - var e = extent.apply(this, arguments), t0 = this.__zoom, p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p, p1 = t0.invert(p0), k1 = typeof k === "function" ? k.apply(this, arguments) : k; - return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent); - }, p, event); - }; - zoom.translateBy = function(selection2, x4, y4, event) { - zoom.transform(selection2, function() { - return constrain(this.__zoom.translate( - typeof x4 === "function" ? x4.apply(this, arguments) : x4, - typeof y4 === "function" ? y4.apply(this, arguments) : y4 - ), extent.apply(this, arguments), translateExtent); - }, null, event); - }; - zoom.translateTo = function(selection2, x4, y4, p, event) { - zoom.transform(selection2, function() { - var e = extent.apply(this, arguments), t = this.__zoom, p0 = p == null ? centroid(e) : typeof p === "function" ? p.apply(this, arguments) : p; - return constrain(identity3.translate(p0[0], p0[1]).scale(t.k).translate( - typeof x4 === "function" ? -x4.apply(this, arguments) : -x4, - typeof y4 === "function" ? -y4.apply(this, arguments) : -y4 - ), e, translateExtent); - }, p, event); - }; - function scale(transform2, k) { - k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k)); - return k === transform2.k ? transform2 : new Transform(k, transform2.x, transform2.y); - } - function translate(transform2, p0, p1) { - var x4 = p0[0] - p1[0] * transform2.k, y4 = p0[1] - p1[1] * transform2.k; - return x4 === transform2.x && y4 === transform2.y ? transform2 : new Transform(transform2.k, x4, y4); - } - function centroid(extent2) { - return [(+extent2[0][0] + +extent2[1][0]) / 2, (+extent2[0][1] + +extent2[1][1]) / 2]; - } - function schedule(transition2, transform2, point3, event) { - transition2.on("start.zoom", function() { - gesture(this, arguments).event(event).start(); - }).on("interrupt.zoom end.zoom", function() { - gesture(this, arguments).event(event).end(); - }).tween("zoom", function() { - var that = this, args = arguments, g = gesture(that, args).event(event), e = extent.apply(that, args), p = point3 == null ? centroid(e) : typeof point3 === "function" ? point3.apply(that, args) : point3, w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), a2 = that.__zoom, b = typeof transform2 === "function" ? transform2.apply(that, args) : transform2, i = interpolate(a2.invert(p).concat(w / a2.k), b.invert(p).concat(w / b.k)); - return function(t) { - if (t === 1) - t = b; - else { - var l2 = i(t), k = w / l2[2]; - t = new Transform(k, p[0] - l2[0] * k, p[1] - l2[1] * k); - } - g.zoom(null, t); - }; - }); - } - function gesture(that, args, clean) { - return !clean && that.__zooming || new Gesture(that, args); - } - function Gesture(that, args) { - this.that = that; - this.args = args; - this.active = 0; - this.sourceEvent = null; - this.extent = extent.apply(that, args); - this.taps = 0; - } - Gesture.prototype = { - event: function(event) { - if (event) - this.sourceEvent = event; - return this; - }, - start: function() { - if (++this.active === 1) { - this.that.__zooming = this; - this.emit("start"); - } - return this; - }, - zoom: function(key, transform2) { - if (this.mouse && key !== "mouse") - this.mouse[1] = transform2.invert(this.mouse[0]); - if (this.touch0 && key !== "touch") - this.touch0[1] = transform2.invert(this.touch0[0]); - if (this.touch1 && key !== "touch") - this.touch1[1] = transform2.invert(this.touch1[0]); - this.that.__zoom = transform2; - this.emit("zoom"); - return this; - }, - end: function() { - if (--this.active === 0) { - delete this.that.__zooming; - this.emit("end"); - } - return this; - }, - emit: function(type2) { - var d = select_default2(this.that).datum(); - listeners.call( - type2, - this.that, - new ZoomEvent(type2, { - sourceEvent: this.sourceEvent, - target: zoom, - type: type2, - transform: this.that.__zoom, - dispatch: listeners - }), - d - ); - } - }; - function wheeled(event, ...args) { - if (!filter2.apply(this, arguments)) - return; - var g = gesture(this, args).event(event), t = this.__zoom, k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), p = pointer_default(event); - if (g.wheel) { - if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) { - g.mouse[1] = t.invert(g.mouse[0] = p); - } - clearTimeout(g.wheel); - } else if (t.k === k) - return; - else { - g.mouse = [p, t.invert(p)]; - interrupt_default(this); - g.start(); - } - noevent_default3(event); - g.wheel = setTimeout(wheelidled, wheelDelay); - g.zoom("mouse", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent)); - function wheelidled() { - g.wheel = null; - g.end(); - } - } - function mousedowned(event, ...args) { - if (touchending || !filter2.apply(this, arguments)) - return; - var g = gesture(this, args, true).event(event), v = select_default2(event.view).on("mousemove.zoom", mousemoved, true).on("mouseup.zoom", mouseupped, true), p = pointer_default(event, currentTarget), currentTarget = event.currentTarget, x0 = event.clientX, y0 = event.clientY; - nodrag_default(event.view); - nopropagation3(event); - g.mouse = [p, this.__zoom.invert(p)]; - interrupt_default(this); - g.start(); - function mousemoved(event2) { - noevent_default3(event2); - if (!g.moved) { - var dx = event2.clientX - x0, dy = event2.clientY - y0; - g.moved = dx * dx + dy * dy > clickDistance2; - } - g.event(event2).zoom("mouse", constrain(translate(g.that.__zoom, g.mouse[0] = pointer_default(event2, currentTarget), g.mouse[1]), g.extent, translateExtent)); - } - function mouseupped(event2) { - v.on("mousemove.zoom mouseup.zoom", null); - yesdrag(event2.view, g.moved); - noevent_default3(event2); - g.event(event2).end(); - } - } - function dblclicked(event, ...args) { - if (!filter2.apply(this, arguments)) - return; - var t0 = this.__zoom, p0 = pointer_default(event.changedTouches ? event.changedTouches[0] : event, this), p1 = t0.invert(p0), k1 = t0.k * (event.shiftKey ? 0.5 : 2), t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent); - noevent_default3(event); - if (duration > 0) - select_default2(this).transition().duration(duration).call(schedule, t1, p0, event); - else - select_default2(this).call(zoom.transform, t1, p0, event); - } - function touchstarted(event, ...args) { - if (!filter2.apply(this, arguments)) - return; - var touches = event.touches, n2 = touches.length, g = gesture(this, args, event.changedTouches.length === n2).event(event), started, i, t, p; - nopropagation3(event); - for (i = 0; i < n2; ++i) { - t = touches[i], p = pointer_default(t, this); - p = [p, this.__zoom.invert(p), t.identifier]; - if (!g.touch0) - g.touch0 = p, started = true, g.taps = 1 + !!touchstarting; - else if (!g.touch1 && g.touch0[2] !== p[2]) - g.touch1 = p, g.taps = 0; - } - if (touchstarting) - touchstarting = clearTimeout(touchstarting); - if (started) { - if (g.taps < 2) - touchfirst = p[0], touchstarting = setTimeout(function() { - touchstarting = null; - }, touchDelay); - interrupt_default(this); - g.start(); - } - } - function touchmoved(event, ...args) { - if (!this.__zooming) - return; - var g = gesture(this, args).event(event), touches = event.changedTouches, n2 = touches.length, i, t, p, l2; - noevent_default3(event); - for (i = 0; i < n2; ++i) { - t = touches[i], p = pointer_default(t, this); - if (g.touch0 && g.touch0[2] === t.identifier) - g.touch0[0] = p; - else if (g.touch1 && g.touch1[2] === t.identifier) - g.touch1[0] = p; - } - t = g.that.__zoom; - if (g.touch1) { - var p0 = g.touch0[0], l0 = g.touch0[1], p1 = g.touch1[0], l1 = g.touch1[1], dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl; - t = scale(t, Math.sqrt(dp / dl)); - p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2]; - l2 = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2]; - } else if (g.touch0) - p = g.touch0[0], l2 = g.touch0[1]; - else - return; - g.zoom("touch", constrain(translate(t, p, l2), g.extent, translateExtent)); - } - function touchended(event, ...args) { - if (!this.__zooming) - return; - var g = gesture(this, args).event(event), touches = event.changedTouches, n2 = touches.length, i, t; - nopropagation3(event); - if (touchending) - clearTimeout(touchending); - touchending = setTimeout(function() { - touchending = null; - }, touchDelay); - for (i = 0; i < n2; ++i) { - t = touches[i]; - if (g.touch0 && g.touch0[2] === t.identifier) - delete g.touch0; - else if (g.touch1 && g.touch1[2] === t.identifier) - delete g.touch1; - } - if (g.touch1 && !g.touch0) - g.touch0 = g.touch1, delete g.touch1; - if (g.touch0) - g.touch0[1] = this.__zoom.invert(g.touch0[0]); - else { - g.end(); - if (g.taps === 2) { - t = pointer_default(t, this); - if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) { - var p = select_default2(this).on("dblclick.zoom"); - if (p) - p.apply(this, arguments); - } - } - } - } - zoom.wheelDelta = function(_) { - return arguments.length ? (wheelDelta = typeof _ === "function" ? _ : constant_default8(+_), zoom) : wheelDelta; - }; - zoom.filter = function(_) { - return arguments.length ? (filter2 = typeof _ === "function" ? _ : constant_default8(!!_), zoom) : filter2; - }; - zoom.touchable = function(_) { - return arguments.length ? (touchable = typeof _ === "function" ? _ : constant_default8(!!_), zoom) : touchable; - }; - zoom.extent = function(_) { - return arguments.length ? (extent = typeof _ === "function" ? _ : constant_default8([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent; - }; - zoom.scaleExtent = function(_) { - return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]]; - }; - zoom.translateExtent = function(_) { - return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]]; - }; - zoom.constrain = function(_) { - return arguments.length ? (constrain = _, zoom) : constrain; - }; - zoom.duration = function(_) { - return arguments.length ? (duration = +_, zoom) : duration; - }; - zoom.interpolate = function(_) { - return arguments.length ? (interpolate = _, zoom) : interpolate; - }; - zoom.on = function() { - var value = listeners.on.apply(listeners, arguments); - return value === listeners ? zoom : value; - }; - zoom.clickDistance = function(_) { - return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2); - }; - zoom.tapDistance = function(_) { - return arguments.length ? (tapDistance = +_, zoom) : tapDistance; - }; - return zoom; -} - -// src/Visualisations/VisModal.ts -var import_obsidian43 = require("obsidian"); - -// src/Components/VisComp.svelte -var import_loglevel21 = __toESM(require_loglevel()); - -// src/Visualisations/ArcDiagram.ts -var arcDiagram = (graph, currFile, modal, width, height) => { - const data = graphlibToD3(graph); - const margin = { top: 20, right: 20, bottom: 20, left: 150 }; - const svg = select_default2(".d3-graph").append("svg").attr("height", height).attr("width", width); - const nodes = data.nodes.map(({ id: id2, name }) => ({ - id: id2, - name, - sourceLinks: [], - targetLinks: [] - })); - const nodeById = new Map(nodes.map((d) => [d.id, d])); - const links = data.links.map(({ source, target }) => ({ - source: nodeById.get(source), - target: nodeById.get(target) - })); - for (const link2 of links) { - const { source, target } = link2; - source.sourceLinks.push(link2); - target.targetLinks.push(link2); - } - svg.append("style").text(` - -path { - stroke: #808080; - opacity: 0.8; -} - -text { - stroke: var(--text-a); - opacity: 0.8; -} - - -.hover g.primary text { - fill: black; -} - -.hover g.secondary text { - fill: #333; -} - -.hover .secondary { - color: red; -} - -.hover path.primary { - stroke: #333; - stroke-opacity: 1; -} - -.hover rect { - opacity: 1; - cursor: pointer; -} - -`); - const y4 = point(nodes.map((d) => d.name).sort(ascending_default), [ - margin.top, - height - margin.bottom - ]); - const label = svg.append("g").attr("font-family", "sans-serif").attr("font-size", 10).attr("text-anchor", "end").selectAll("g").data(nodes).join("g").attr("transform", (d) => `translate(${margin.left},${d.y = y4(d.name)})`).call( - (g) => g.append("text").attr("x", -6).attr("dy", "0.35em").text((d) => d.name) - ).call( - (g) => g.append("circle").attr("r", 3) - // .attr("fill", (d) => color(d.group)) - ); - const path2 = svg.insert("g", "*").attr("fill", "none").attr("stroke-opacity", 0.6).attr("stroke-width", 1.5).selectAll("path").data(links).join("path").attr("d", arc); - const step = 104; - const nodeClick = (event, dest) => { - openOrSwitch(dest, event); - modal.close(); - }; - const overlay = svg.append("g").attr("fill", "none").attr("pointer-events", "all").selectAll("rect").data(nodes).join("rect").attr("width", margin.left + 40).attr("height", step).attr("y", (d) => y4(d.name) - step / 2).on("mouseover", (d) => { - svg.classed("hover", true); - label.classed("primary", (n2) => n2 === d); - label.classed( - "secondary", - (n2) => n2.sourceLinks.some((l2) => l2.target === d) || n2.targetLinks.some((l2) => l2.source === d) - ); - path2.classed("primary", (l2) => l2.source === d || l2.target === d).filter(".primary").raise(); - }).on("mouseout", (d) => { - svg.classed("hover", false); - label.classed("primary", false); - label.classed("secondary", false); - path2.classed("primary", false).order(); - }).on("click", (event, d) => { - nodeClick(event, d.name); - }); - function arc(d) { - const y1 = d.source.y; - const y22 = d.target.y; - const r = Math.abs(y22 - y1) / 2; - return `M${margin.left},${y1}A${r},${r} 0,0,${y1 < y22 ? 1 : 0} ${margin.left},${y22}`; - } - function zoomed({ transform: transform2 }) { - svg.attr("transform", transform2); - } - svg.call( - zoom_default2().extent([ - [0, 0], - [width, height] - ]).scaleExtent([0.5, 8]).on("zoom", zoomed) - ); -}; - -// src/Visualisations/CirclePacking.ts -var circlePacking = (graph, currFile, modal, width, height) => { - const flatAdj = dfsFlatAdjList(graph, currFile.basename); - console.log({ flatAdj }); - const hierarchy2 = stratify_default()(flatAdj); - console.log({ hierarchy: hierarchy2 }); - const adjList = bfsAdjList(graph, currFile.basename); - console.log({ adjList }); - const noDoubles = [...adjList]; - noDoubles.forEach((a2, i) => { - if (noDoubles.some((b, j) => i !== j && a2.name === b.name)) { - const index2 = noDoubles.findIndex((b, j) => i !== j && a2.name === b.name); - noDoubles.splice(index2, 1); - } - }); - console.log({ noDoubles }); - const linkArr = noDoubles.map((d) => { - return { source: d.name, target: d.parentId }; - }); - const links = linkArr.map((d) => Object.create(d)); - const svg = select_default2(".d3-graph").append("svg").attr("height", height).attr("width", width); - const nodeColour = getComputedStyle(document.body).getPropertyValue( - "--text-accent" - ); - const node = svg.append("g").selectAll("circle").data(noDoubles).join("circle").attr("r", (d) => Math.round(d.height / 10) + 10).attr("cx", width / 2).attr("cy", height / 2).style("fill", nodeColour).style("fill-opacity", 0.6).attr("stroke", nodeColour).style("stroke-width", 4); - node.attr("aria-label", (d) => d.name); - const nodeClick = (event, dest) => { - const currFile2 = getCurrFile(); - openOrSwitch(dest, event); - modal.close(); - }; - node.on("click", (event, d) => { - nodeClick(event, d.name); - }); - const link2 = svg.append("g").attr("stroke", "#868282").attr("stroke-opacity", 0.6).selectAll("line").data(links).join("line").attr("stroke-width", 0.8); - const simulation = simulation_default().force( - "center", - center_default().x(width / 2).y(height / 2) - ).force("charge", manyBody_default().strength(0.5)).force( - "collide", - collide_default().strength(0.025).radius(30).iterations(1) - ); - simulation.nodes(noDoubles).on("tick", function(d) { - node.attr("cx", (d2) => d2.x).attr("cy", (d2) => d2.y); - }); - function zoomed({ transform: transform2 }) { - node.attr("transform", transform2); - } - svg.call( - zoom_default2().extent([ - [0, 0], - [width, height] - ]).scaleExtent([0.5, 8]).on("zoom", zoomed) - ); - const drag = (simulation2) => { - function dragstarted(event, d) { - if (!event.active) - simulation2.alphaTarget(0.3).restart(); - d.fx = d.x; - d.fy = d.y; - } - function dragged(event, d) { - d.fx = event.x; - d.fy = event.y; - } - function dragended(event, d) { - if (!event.active) - simulation2.alphaTarget(0); - d.fx = null; - d.fy = null; - } - return drag_default().on("start", dragstarted).on("drag", dragged).on("end", dragended); - }; - node.call(drag(simulation)); -}; - -// src/Visualisations/EdgeBundling.ts -var edgeBundling = (graph, currFile, modal, width, height) => { - const flatAdj = dfsFlatAdjList(graph, currFile.basename); - console.log({ flatAdj }); - const hier = stratify_default()(flatAdj); - console.log({ hier }); - const PADDING_BUBBLE = 15; - const PADDING_LABEL = 30; - const BUBBLE_SIZE_MIN = 4; - const BUBBLE_SIZE_MAX = 20; - var diameter = 560, radius = diameter / 2, innerRadius = radius - 170; - var cluster = cluster_default().size([360, innerRadius]); - var line = lineRadial_default().curve(bundle_default.beta(0.85)).radius(function(d) { - return d[1]; - }).angle(function(d) { - return d[0] / 180 * Math.PI; - }); - const svg = select_default2(".d3-graph").append("svg").attr("height", height).attr("width", width).append("g").attr("transform", "translate(" + radius + "," + radius + ")"); - var link2 = svg.append("g").selectAll(".link"), label = svg.append("g").selectAll(".label"), bubble = svg.append("g").selectAll(".bubble"); - var bubbleSizeScale = linear2().domain([0, 100]).range([BUBBLE_SIZE_MIN, BUBBLE_SIZE_MAX]); - var root2 = packageHierarchy(hier).sum(function(d) { - console.log(d); - return d.height; - }); - cluster(root2); - const leaves = root2.leaves(); - const _link = link2.data(packageImports(leaves)).enter().append("path").each(function(d) { - d.source = d[0], d.target = d[d.length - 1]; - }).attr("class", "link").attr("d", line).attr("fill", "none").attr("stroke", "black"); - const _label = label.data(leaves).enter().append("text").attr("class", "label").attr("dy", "0.31em").attr("transform", function(d) { - return "rotate(" + (d.x - 90) + ")translate(" + (d.y + PADDING_LABEL) + ",0)" + (d.x < 180 ? "" : "rotate(180)"); - }).attr("text-anchor", function(d) { - return d.x < 180 ? "start" : "end"; - }).text(function(d) { - return d.data.key; - }); - const _bubble = bubble.data(leaves).enter().append("circle").attr("class", "bubble").attr("transform", function(d) { - return "rotate(" + (d.x - 90) + ")translate(" + (d.y + PADDING_BUBBLE) + ",0)"; - }).attr("r", (d) => bubbleSizeScale(d.value)).attr("stroke", "black").attr("fill", "#69a3b2").style("opacity", 0.2); - function packageHierarchy(classes) { - var map2 = {}; - function find3(name, data) { - var node = map2[name], i; - if (!node) { - node = map2[name] = data || { name, children: [] }; - if (name.length) { - node.parent = find3(name.substring(0, i = name.lastIndexOf("."))); - node.parent.children.push(node); - node.key = name.substring(i + 1); - } - } - return node; - } - classes.forEach(function(d) { - find3(d.name, d); - }); - return hierarchy(map2[""]); - } - function packageImports(nodes) { - var map2 = {}, imports = []; - nodes.forEach(function(d) { - map2[d.data.name] = d; - }); - nodes.forEach(function(d) { - if (d.data.imports) - d.data.imports.forEach(function(i) { - imports.push(map2[d.data.name].path(map2[i])); - }); - }); - return imports; - } -}; - -// src/Visualisations/ForceDirectedG.ts -var forceDirectedG = (graph, currFile, modal, width, height) => { - const { settings } = modal.plugin; - let nodeToGetTo = currFile.basename; - console.log({ nodeToGetTo }); - console.time("Find all paths"); - console.timeEnd("Find all paths"); - const defaultNodeColour = getComputedStyle(document.body).getPropertyValue( - "--text-accent" - ); - let currNodeColour = defaultNodeColour; - const colourChangeInput = select_default2(".d3-graph").append("input").attr("type", "color"); - colourChangeInput.on("change", function changeColor(el) { - currNodeColour = el.target.value; - node.transition().duration(300).style("fill", (d) => { - if (d.index === currNodeIndex) - return; - return currNodeColour; - }); - }); - const data = graphlibToD3(graph); - const links = data.links.map((d) => Object.create(d)); - const currNode = data.nodes.find((node2) => node2.name === currFile.basename); - let currNodeIndex; - if (!currNode) { - const id2 = data.nodes.length; - data.nodes.push({ id: id2, name: currFile.basename }); - currNodeIndex = id2; - } else { - currNodeIndex = currNode.id; - } - const nodes = data.nodes.map((d) => Object.create(d)); - const simulation = simulation_default(nodes).force( - "link", - link_default(links).id((d) => d.id) - ).force("charge", manyBody_default().strength(-8)).force("center", center_default(width / 2, height / 2).strength(0.5)); - const drag = (simulation2) => { - function dragstarted(event, d) { - if (!event.active) - simulation2.alphaTarget(0.3).restart(); - d.fx = d.x; - d.fy = d.y; - } - function dragged(event, d) { - d.fx = event.x; - d.fy = event.y; - } - function dragended(event, d) { - if (!event.active) - simulation2.alphaTarget(0); - d.fx = null; - d.fy = null; - } - return drag_default().on("start", dragstarted).on("drag", dragged).on("end", dragended); - }; - const svg = select_default2(".d3-graph").append("svg").attr("height", height).attr("width", width).attr("class", "forceDirectedG"); - const link2 = svg.append("g").attr("stroke", "#868282").attr("stroke-opacity", 0.6).selectAll("line").data(links).join("line").attr("stroke-width", 0.8).attr("marker-end", "url(#end)"); - var path2 = svg.append("svg:g").selectAll("path").data(links).enter().append("svg:path").attr("class", "link").attr("marker-end", "url(#end)"); - const arrowHead = svg.append("svg:defs").selectAll("marker").data(["end"]).enter().append("svg:marker").attr("id", String).attr("viewBox", "0 -5 10 10").attr("refX", 20).attr("refY", 0.1).attr("markerWidth", 6).attr("markerHeight", 6).attr("orient", "auto").attr("stroke-width", 10).append("svg:path").attr("d", "M0,-5L10,0L0,5"); - const nameFromIndex = (d) => data.nodes.find((node2) => node2.id === d.index).name; - const indexFromName = (name) => data.nodes.find((node2) => node2.name === name).id; - const node = svg.append("g").selectAll("circle").data(nodes).join("circle").attr("r", 5).attr("fill", (d) => { - if (nameFromIndex(d) === currFile.basename) { - return "#ffffff"; - } else { - return currNodeColour; - } - }).call(drag(simulation)); - node.attr("aria-label", (d) => d.name); - const nodeClick = (event, dest) => { - openOrSwitch(dest, event); - modal.close(); - }; - node.on("click", (event, d) => { - nodeClick(event, d.name); - }); - node.on("mousedown", (event, d) => { - if (event.button === 2) { - nodeToGetTo = d.name; - node.style("fill", (n2) => { - if (n2.name === nodeToGetTo) { - return "#ff0000"; - } else - return currNodeColour; - }); - } - }); - function linked(a2, b) { - if (a2 === b) - return true; - const linkedArr = links.find( - (link3) => link3.source.index === a2 && link3.target.index === b || link3.target.index === a2 && link3.source.index === b - ); - return !!linkedArr; - } - node.on("mouseover", (event, d) => { - node.transition().duration(150).style("opacity", (o) => { - return linked(d.index, o.index) ? 1 : 0.2; - }); - link2.transition().duration(150).style("opacity", function(o) { - return o.source.index === d.index || o.target.index === d.index ? 1 : 0.2; - }); - const hoveredNode = nameFromIndex(d); - }).on("mouseout", unfocus); - function focusNeighbours(d, event) { - } - function unfocus() { - node.style("opacity", 1); - link2.style("opacity", 1).style("stroke", "#868282"); - } - simulation.on("tick", () => { - link2.attr("x1", (d) => d.source.x).attr("y1", (d) => d.source.y).attr("x2", (d) => d.target.x).attr("y2", (d) => d.target.y); - node.attr("cx", (d) => d.x).attr("cy", (d) => d.y); - }); - function zoomed({ transform: transform2 }) { - node.attr("transform", transform2); - link2.attr("transform", transform2); - } - svg.call( - zoom_default2().extent([ - [0, 0], - [width, height] - ]).scaleExtent([0.5, 10]).on("zoom", zoomed) - ); - function saveGraph() { - const clone3 = svg.clone(true); - localStorage.setItem("FDG", JSON.stringify(clone3)); - } -}; - -// src/Visualisations/Icicle.ts -var icicle = (graph, currFile, modal, width, viewHeight) => { - const flatAdj = dfsFlatAdjList(graph, currFile.basename); - console.log({ flatAdj }); - const hier = stratify_default()(flatAdj); - console.log({ hier }); - const format2 = format(",d"); - const color2 = ordinal( - quantize_default(rainbow_default, hier.children.length + 1) - ); - const partition = (data) => { - const root3 = hierarchy(data).sum((d) => d.value).sort((a2, b) => b.height - a2.height || b.value - a2.value); - return partition_default().size([viewHeight, (root3.height + 1) * width / 3])( - root3 - ); - }; - const root2 = partition(hier); - let focus = root2; - const svg = select_default2(".d3-graph").append("svg").attr("height", viewHeight).attr("width", width).style("font", "10px sans-serif"); - const cell = svg.selectAll("g").data(root2.descendants()).join("g").attr("transform", (d) => `translate(${d.y0},${d.x0})`); - const rect = cell.append("rect").attr("width", (d) => d.y1 - d.y0 - 1).attr("height", (d) => rectHeight(d)).attr("fill-opacity", 0.6).attr("fill", (d) => { - if (!d.depth) - return "#ccc"; - while (d.depth > 1) - d = d.parent; - return color2(d.data.data.name); - }).style("cursor", "pointer").on("click", clicked); - const text2 = cell.append("text").style("user-select", "none").attr("pointer-events", "none").attr("x", 4).attr("y", 13); - text2.append("tspan").text((d) => d.data.data.name); - const tspan = text2.append("tspan").attr("fill-opacity", (d) => (labelVisible(d) ? 1 : 0) * 0.7).text((d) => ` ${format2(d.value)}`); - cell.append("title").text( - (d) => `${d.ancestors().map((d2) => d2.data.data.name)}` - ); - function clicked(event, p) { - console.log({ p }); - focus = focus === p ? p = p.parent : p; - root2.each((d) => { - d.target = { - x0: (d.x0 - p.x0) / (p.x1 - p.x0) * viewHeight, - x1: (d.x1 - p.x0) / (p.x1 - p.x0) * viewHeight, - y0: d.y0 - p.y0, - y1: d.y1 - p.y0 - }; - console.log(d.target.x0); - }); - const t = cell.transition().duration(750).attr("transform", (d) => `translate(${d.target.y0},${d.target.x0})`); - rect.transition(t).attr("height", (d) => rectHeight(d.target)); - text2.transition(t).attr("fill-opacity", (d) => +labelVisible(d.target)); - tspan.transition(t).attr("fill-opacity", (d) => (labelVisible(d) ? 1 : 0) * 0.7); - } - function rectHeight(d) { - console.log({ d }); - return d.x1 - d.x0 - Math.min(1, (d.x1 - d.x0) / 2); - } - function labelVisible(d) { - return d.y1 <= width && d.y0 >= 0 && d.x1 - d.x0 > 16; - } -}; - -// src/Visualisations/RadialTree.ts -var radialTree = (graph, currFile, modal, width, height) => { - const flatAdj = dfsFlatAdjList(graph, currFile.basename); - console.log({ flatAdj }); - const hierarchy2 = stratify_default()(flatAdj); - console.log({ hierarchy: hierarchy2 }); - const svg = select_default2(".d3-graph").append("svg").attr("height", height).attr("width", width); - const root2 = hierarchy(hierarchy2, (d) => d.children).sum((d) => d.children ? 0 : 1).sort((a2, b) => a2.depth - b.depth); - const outerRadius = width / 2; - const innerRadius = outerRadius - 170; - const cluster = cluster_default().size([360, innerRadius]).separation((a2, b) => 1); - const color2 = ordinal().domain(graph.nodes()).range(category10_default); - function maxLength(d) { - return d.data.data.depth + (d.children ? max(d.children, maxLength) : 0); - } - function setRadius(d, y0, k) { - d.radius = (y0 += d.data.data.depth) * k; - if (d.children) - d.children.forEach((d2) => setRadius(d2, y0, k)); - } - function setColor(d) { - var name = d.data.data.name; - d.color = color2.domain().indexOf(name) >= 0 ? color2(name) : d.parent ? d.parent.color : null; - if (d.children) - d.children.forEach(setColor); - } - function linkVariable(d) { - return linkStep(d.source.x, d.source.radius, d.target.x, d.target.radius); - } - function linkConstant(d) { - return linkStep(d.source.x, d.source.y, d.target.x, d.target.y); - } - function linkExtensionVariable(d) { - return linkStep(d.target.x, d.target.radius, d.target.x, innerRadius); - } - function linkExtensionConstant(d) { - return linkStep(d.target.x, d.target.y, d.target.x, innerRadius); - } - function linkStep(startAngle, startRadius, endAngle, endRadius) { - const c0 = Math.cos(startAngle = (startAngle - 90) / 180 * Math.PI); - const s0 = Math.sin(startAngle); - const c1 = Math.cos(endAngle = (endAngle - 90) / 180 * Math.PI); - const s1 = Math.sin(endAngle); - return "M" + startRadius * c0 + "," + startRadius * s0 + (endAngle === startAngle ? "" : "A" + startRadius + "," + startRadius + " 0 0 " + (endAngle > startAngle ? 1 : 0) + " " + startRadius * c1 + "," + startRadius * s1) + "L" + endRadius * c1 + "," + endRadius * s1; - } - const legend = (svg2) => { - const g = svg2.selectAll("g").data(color2.domain()).join("g").attr( - "transform", - (d, i) => `translate(${-outerRadius},${-outerRadius + i * 20})` - ); - g.append("rect").attr("width", 18).attr("height", 18).attr("fill", color2); - g.append("text").attr("x", 24).attr("y", 9).attr("dy", "0.35em").text((d) => d); - }; - cluster(root2); - setRadius(root2, root2.data.data.depth = 0, innerRadius / maxLength(root2)); - setColor(root2); - svg.append("g").call(legend); - svg.append("style").text(` - -.link--active { -stroke: #000 !important; -stroke-width: 1.5px; -} - -.link-extension--active { -stroke-opacity: .6; -} - -.label--active { -font-weight: bold; -} - -`); - const linkExtension = svg.append("g").attr("fill", "none").attr("stroke", "#000").attr("stroke-opacity", 0.25).selectAll("path").data(root2.links().filter((d) => !d.target.children)).join("path").each(function(d) { - d.target.linkExtensionNode = this; - }).attr("d", linkExtensionConstant); - const link2 = svg.append("g").attr("fill", "none").attr("stroke", "#000").selectAll("path").data(root2.links()).join("path").each(function(d) { - d.target.linkNode = this; - }).attr("d", linkConstant).attr("stroke", (d) => d.target.color); - const label = svg.append("g").selectAll("text").data(root2.leaves()).join("text").attr("dy", ".31em").attr( - "transform", - (d) => `rotate(${d.x - 90}) translate(${innerRadius + 4},0)${d.x < 180 ? "" : " rotate(180)"}` - ).attr("text-anchor", (d) => d.x < 180 ? "start" : "end").text((d) => d.data.data.name).on("mouseover", mouseovered(true)).on("mouseout", mouseovered(false)); - function mouseovered(active) { - return function(event, d) { - select_default2(this).classed("label--active", active); - select_default2(d.linkExtensionNode).classed("link-extension--active", active).raise(); - do - select_default2(d.linkNode).classed("link--active", active).raise(); - while (d = d.parent); - }; - } - function zoomed({ transform: transform2 }) { - linkExtension.attr("transform", transform2); - link2.attr("transform", transform2); - label.attr("transform", transform2); - } - svg.call( - zoom_default2().extent([ - [0, 0], - [width, height] - ]).scaleExtent([0.5, 8]).on("zoom", zoomed) - ); -}; - -// src/Visualisations/Sunburst.ts -var sunburst = (graph, currFile, modal, width, height) => { - const flatAdj = dfsFlatAdjList(graph, currFile.basename); - console.log({ flatAdj }); - const hierarchy2 = stratify_default()(flatAdj); - console.log({ hierarchy: hierarchy2 }); - var radius = Math.min(width, height) / 2; - var color2 = ordinal(category10_default); - var g = select_default2("svg").attr("width", width).attr("height", height).append("g").attr("transform", "translate(" + width / 2 + "," + height / 2 + ")"); - var g = select_default2("svg").attr("width", width).attr("height", height).append("g").attr("transform", "translate(" + width / 2 + "," + height / 2 + ")"); - var g = select_default2("svg").attr("width", width).attr("height", height).append("g").attr("transform", "translate(" + width / 2 + "," + height / 2 + ")"); - var partition = partition_default().size([2 * Math.PI, radius]); - var root2 = hierarchy(hierarchy2).sum(function(d) { - return d.height; - }); - partition(root2); - var arc = arc_default().startAngle(function(d) { - return d.x0; - }).endAngle(function(d) { - return d.x1; - }).innerRadius(function(d) { - return d.y0; - }).outerRadius(function(d) { - return d.y1; - }); - g.selectAll("path").data(root2.descendants()).enter().append("path").attr("display", function(d) { - return d.depth ? null : "none"; - }).attr("d", arc).style("stroke", "#fff").style("fill", function(d) { - return color2((d.children ? d : d.parent).data.name); - }); -}; - -// src/Visualisations/TidyTree.ts -var tidyTree = (graph, currFile, modal, width, height) => { - const tree = (data) => { - const root3 = hierarchy(data); - root3.dx = 10; - root3.dy = width / (root3.height + 1); - return tree_default().nodeSize([root3.dx, root3.dy])(root3); - }; - const flatAdj = dfsFlatAdjList(graph, currFile.basename); - console.log({ flatAdj }); - const hierarchy2 = stratify_default()(flatAdj); - console.log({ hierarchy: hierarchy2 }); - const root2 = tree(hierarchy2); - console.log(root2); - let x0 = Infinity; - let x1 = -x0; - root2.each((d) => { - if (d.x > x1) - x1 = d.x; - if (d.x < x0) - x0 = d.x; - }); - const svg = select_default2(".d3-graph").append("svg").attr("height", height).attr("width", width); - const g = svg.append("g").attr("font-family", "sans-serif").attr("font-size", 10).attr("transform", `translate(${root2.dy / 3},${root2.dx - x0})`); - const link2 = g.append("g").attr("fill", "none").attr("stroke", "#555").attr("stroke-opacity", 0.4).attr("stroke-width", 1.5).selectAll("path").data(root2.links()).join("path").attr( - "d", - linkHorizontal().x((d) => d.y).y((d) => d.x) - ); - const node = g.append("g").attr("stroke-linejoin", "round").attr("stroke-width", 10).selectAll("g").data(root2.descendants()).join("g").attr("transform", (d) => `translate(${d.y},${d.x})`); - node.append("circle").attr("fill", (d) => d.children ? "#555" : "#999").attr("r", 10); - node.attr("aria-label", (d) => { - console.log(d); - return d.data.data.name; - }); - const nodeClick = (event, dest) => { - openOrSwitch(dest, event); - modal.close(); - }; - node.on("click", (event, d) => { - console.log({ d }); - nodeClick(event, d.data.data.name); - }); - node.append("text").attr("dy", "0.31em").attr("x", (d) => d.children ? -6 : 6).attr("text-anchor", (d) => d.children ? "end" : "start").text((d) => d.data.data.name).clone(true).lower().attr("stroke", "white"); - function zoomed({ transform: transform2 }) { - svg.attr("transform", transform2); - } - svg.call( - zoom_default2().extent([ - [0, 0], - [width, height] - ]).scaleExtent([0.5, 8]).on("zoom", zoomed) - ); -}; - -// src/Visualisations/TreeMap.ts -var treeMap = (graph, currFile, modal, width, height) => { - const flatAdj = dfsFlatAdjList(graph, currFile.basename); - console.log({ flatAdj }); - const hierarchy2 = stratify_default()(flatAdj); - console.log({ hierarchy: hierarchy2 }); - const root2 = treemap_default().tile(binary_default).size([width, height]).padding(1).round(true)( - hierarchy2.sum((d) => d.height).sort((a2, b) => b.height - a2.height) - ); - const svg = select_default2(".d3-graph").append("svg").attr("height", height).attr("width", width).style("font", "10px sans-serif"); - const leaf = svg.selectAll("g").data(root2.leaves()).join("g").attr("transform", (d) => `translate(${d.x0},${d.y0})`); - leaf.attr("aria-label", (d) => d.data.name); - const color2 = ordinal(category10_default); - leaf.append("rect").attr("fill", (d) => { - while (d.depth > 1) - d = d.parent; - return color2(d.data.id); - }).attr("fill-opacity", 0.6).attr("width", (d) => d.x1 - d.x0).attr("height", (d) => d.y1 - d.y0); - leaf.append("clipPath").append("use"); - const nodeClick = (event, dest) => { - openOrSwitch(dest, event); - modal.close(); - }; - leaf.on("click", (event, d) => { - console.log({ d }); - nodeClick(event, d.data.name); - }); - function zoomed({ transform: transform2 }) { - svg.attr("transform", transform2); - } - svg.call( - zoom_default2().extent([ - [0, 0], - [width, height] - ]).scaleExtent([0.5, 8]).on("zoom", zoomed) - ); -}; - -// src/Components/VisComp.svelte -function get_each_context10(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[23] = list[i].text; - child_ctx[24] = list[i].options; - child_ctx[25] = list[i].val; - child_ctx[26] = list; - child_ctx[27] = i; - return child_ctx; -} -function get_each_context_17(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[28] = list[i]; - return child_ctx; -} -function create_each_block_17(ctx) { - let option; - let t_value = ( - /*op*/ - ctx[28] + "" - ); - let t; - let option_value_value; - return { - c() { - option = element("option"); - t = text(t_value); - option.__value = option_value_value = /*op*/ - ctx[28]; - option.value = option.__value; - }, - m(target, anchor) { - insert(target, option, anchor); - append(option, t); - }, - p(ctx2, dirty) { - if (dirty & /*selectors*/ - 1 && t_value !== (t_value = /*op*/ - ctx2[28] + "")) - set_data(t, t_value); - if (dirty & /*selectors*/ - 1 && option_value_value !== (option_value_value = /*op*/ - ctx2[28])) { - option.__value = option_value_value; - option.value = option.__value; - } - }, - d(detaching) { - if (detaching) - detach(option); - } - }; -} -function create_each_block10(ctx) { - let span; - let t0_value = ( - /*text*/ - ctx[23] + "" - ); - let t0; - let t1; - let select; - let t2; - let mounted; - let dispose; - let each_value_1 = ( - /*options*/ - ctx[24] - ); - let each_blocks = []; - for (let i = 0; i < each_value_1.length; i += 1) { - each_blocks[i] = create_each_block_17(get_each_context_17(ctx, each_value_1, i)); - } - function select_change_handler() { - ctx[2].call( - select, - /*each_value*/ - ctx[26], - /*each_index*/ - ctx[27] - ); - } - return { - c() { - span = element("span"); - t0 = text(t0_value); - t1 = text(":\n "); - select = element("select"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - t2 = space(); - if ( - /*val*/ - ctx[25] === void 0 - ) - add_render_callback(select_change_handler); - }, - m(target, anchor) { - insert(target, span, anchor); - append(span, t0); - append(span, t1); - append(span, select); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(select, null); - } - } - select_option( - select, - /*val*/ - ctx[25], - true - ); - append(span, t2); - if (!mounted) { - dispose = listen(select, "change", select_change_handler); - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (dirty & /*selectors*/ - 1 && t0_value !== (t0_value = /*text*/ - ctx[23] + "")) - set_data(t0, t0_value); - if (dirty & /*selectors*/ - 1) { - each_value_1 = /*options*/ - ctx[24]; - let i; - for (i = 0; i < each_value_1.length; i += 1) { - const child_ctx = get_each_context_17(ctx, each_value_1, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block_17(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(select, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value_1.length; - } - if (dirty & /*selectors*/ - 1) { - select_option( - select, - /*val*/ - ctx[25] - ); - } - }, - d(detaching) { - if (detaching) - detach(span); - destroy_each(each_blocks, detaching); + if_blocks[current_block_type_index].d(); mounted = false; dispose(); } }; } -function create_fragment23(ctx) { - let div0; - let t; - let div1; - let each_value = ( - /*selectors*/ - ctx[0] - ); - let each_blocks = []; - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block10(get_each_context10(ctx, each_value, i)); +function instance43($$self, $$props, $$invalidate) { + let { cls = "" } = $$props; + let { collapse } = $$props; + const click_handler = () => $$invalidate(0, collapse = !collapse); + $$self.$$set = ($$props2) => { + if ("cls" in $$props2) + $$invalidate(1, cls = $$props2.cls); + if ("collapse" in $$props2) + $$invalidate(0, collapse = $$props2.collapse); + }; + return [collapse, cls, click_handler]; +} +var ChevronCollapseButton = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance43, create_fragment43, safe_not_equal, { cls: 1, collapse: 0 }); } +}; +var ChevronCollapseButton_default = ChevronCollapseButton; + +// src/components/button/RebuildGraphButton.svelte +function create_fragment44(ctx) { + let button; + let rotateccw; + let current; + let mounted; + let dispose; + rotateccw = new rotate_ccw_default({ props: { size: ICON_SIZE } }); return { c() { - div0 = element("div"); - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - t = space(); - div1 = element("div"); - attr(div1, "class", "d3-graph"); + button = element("button"); + create_component(rotateccw.$$.fragment); + attr( + button, + "class", + /*cls*/ + ctx[0] + ); + attr(button, "aria-label", "Rebuild Graph"); }, m(target, anchor) { - insert(target, div0, anchor); - for (let i = 0; i < each_blocks.length; i += 1) { - if (each_blocks[i]) { - each_blocks[i].m(div0, null); - } + insert(target, button, anchor); + mount_component(rotateccw, button, null); + current = true; + if (!mounted) { + dispose = listen( + button, + "click", + /*click_handler*/ + ctx[2] + ); + mounted = true; } - insert(target, t, anchor); - insert(target, div1, anchor); }, p(ctx2, [dirty]) { - if (dirty & /*selectors*/ + if (!current || dirty & /*cls*/ 1) { - each_value = /*selectors*/ - ctx2[0]; - let i; - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context10(ctx2, each_value, i); - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block10(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(div0, null); - } - } - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - each_blocks.length = each_value.length; + attr( + button, + "class", + /*cls*/ + ctx2[0] + ); + } + }, + i(local) { + if (current) + return; + transition_in(rotateccw.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(rotateccw.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(button); + } + destroy_component(rotateccw); + mounted = false; + dispose(); + } + }; +} +function instance44($$self, $$props, $$invalidate) { + let { cls = "" } = $$props; + let { plugin } = $$props; + const click_handler = () => plugin.refresh(); + $$self.$$set = ($$props2) => { + if ("cls" in $$props2) + $$invalidate(0, cls = $$props2.cls); + if ("plugin" in $$props2) + $$invalidate(1, plugin = $$props2.plugin); + }; + return [cls, plugin, click_handler]; +} +var RebuildGraphButton = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance44, create_fragment44, safe_not_equal, { cls: 0, plugin: 1 }); + } +}; +var RebuildGraphButton_default = RebuildGraphButton; + +// src/components/obsidian/TreeItemFlair.svelte +function create_fragment45(ctx) { + let div; + let span; + let t; + let span_class_value; + return { + c() { + div = element("div"); + span = element("span"); + t = text( + /*label*/ + ctx[1] + ); + attr(span, "class", span_class_value = /*cls*/ + ctx[0] + " tree-item-flair"); + attr( + span, + "aria-label", + /*aria_label*/ + ctx[2] + ); + attr(div, "class", "tree-item-flair-outer"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, span); + append(span, t); + }, + p(ctx2, [dirty]) { + if (dirty & /*label*/ + 2) + set_data( + t, + /*label*/ + ctx2[1] + ); + if (dirty & /*cls*/ + 1 && span_class_value !== (span_class_value = /*cls*/ + ctx2[0] + " tree-item-flair")) { + attr(span, "class", span_class_value); + } + if (dirty & /*aria_label*/ + 4) { + attr( + span, + "aria-label", + /*aria_label*/ + ctx2[2] + ); } }, i: noop, o: noop, d(detaching) { - if (detaching) - detach(div0); - destroy_each(each_blocks, detaching); - if (detaching) - detach(t); - if (detaching) - detach(div1); + if (detaching) { + detach(div); + } } }; } -function instance23($$self, $$props, $$invalidate) { - let argArr; - ; - ; - let { modal } = $$props; - const { plugin } = modal; - const { mainG, settings } = plugin; - const { visGraph, visRelation, visClosed, visAll } = settings; - const currFile = getCurrFile(); - const selectors = [ - { - text: "Type", - options: VISTYPES, - val: visGraph - }, - { - text: "Relation", - options: RELATIONS, - val: visRelation - }, - { - text: "Close Implied", - options: REAlCLOSED, - val: visClosed - }, - { - text: "No Unlinked", - options: ALLUNLINKED, - val: visAll - } - ]; - const [width, height] = [Math.round(window.innerWidth / 1.3), Math.round(window.innerHeight / 1.3)]; - const [up, same, down] = [ - getSubInDirs(mainG, "up"), - getSubInDirs(mainG, "same"), - getSubInDirs(mainG, "down") - ]; - const [closedParentNoSingle, closedSiblingNoSingle, closedChildNoSingle] = [ - closeImpliedLinks(up, down), - closeImpliedLinks(same, same), - closeImpliedLinks(down, up) - ]; - const graphs = { - Parent: { - Real: { - All: up, - "No Unlinked": removeUnlinkedNodes(up) - }, - Closed: { - All: closedParentNoSingle, - "No Unlinked": removeUnlinkedNodes(closedParentNoSingle) - } - }, - Sibling: { - Real: { - All: same, - "No Unlinked": removeUnlinkedNodes(same) - }, - Closed: { - All: closedSiblingNoSingle, - "No Unlinked": removeUnlinkedNodes(closedSiblingNoSingle) - } - }, - Child: { - Real: { - All: down, - "No Unlinked": removeUnlinkedNodes(down) - }, - Closed: { - All: closedChildNoSingle, - "No Unlinked": removeUnlinkedNodes(closedChildNoSingle) - } - } - }; - const types = { - "Force Directed Graph": forceDirectedG, - "Tidy Tree": tidyTree, - "Circle Packing": circlePacking, - "Edge Bundling": edgeBundling, - "Arc Diagram": arcDiagram, - Sunburst: sunburst, - "Tree Map": treeMap, - Icicle: icicle, - "Radial Tree": radialTree - }; - function draw(type2) { - if (!document.querySelector(".d3-graph")) { - setTimeout( - () => { - var _a; - (_a = document.querySelector(".d3-graph")) === null || _a === void 0 ? void 0 : _a.empty(); - try { - types[type2](...argArr); - } catch (error6) { - (0, import_loglevel21.warn)(error6); - } - }, - 10 - ); - } else { - document.querySelector(".d3-graph").empty(); - try { - types[type2](...argArr); - } catch (error6) { - (0, import_loglevel21.warn)(error6); - } - } - } - function select_change_handler(each_value, each_index) { - each_value[each_index].val = select_value(this); - $$invalidate(0, selectors); - } +function instance45($$self, $$props, $$invalidate) { + let { cls = "" } = $$props; + let { label = "" } = $$props; + let { aria_label = "" } = $$props; $$self.$$set = ($$props2) => { - if ("modal" in $$props2) - $$invalidate(1, modal = $$props2.modal); + if ("cls" in $$props2) + $$invalidate(0, cls = $$props2.cls); + if ("label" in $$props2) + $$invalidate(1, label = $$props2.label); + if ("aria_label" in $$props2) + $$invalidate(2, aria_label = $$props2.aria_label); }; - $$self.$$.update = () => { - if ($$self.$$.dirty & /*selectors, modal*/ - 3) { - $: - argArr = [ - graphs[selectors[1].val][selectors[2].val][selectors[3].val], - app, - currFile, - modal, - width, - height - ]; - } - if ($$self.$$.dirty & /*selectors*/ - 1) { - $: - draw(selectors[0].val); - } - }; - return [selectors, modal, select_change_handler]; + return [cls, label, aria_label]; } -var VisComp = class extends SvelteComponent { +var TreeItemFlair = class extends SvelteComponent { constructor(options) { super(); - init(this, options, instance23, create_fragment23, safe_not_equal, { modal: 1 }); + init(this, options, instance45, create_fragment45, safe_not_equal, { cls: 0, label: 1, aria_label: 2 }); } }; -var VisComp_default = VisComp; +var TreeItemFlair_default = TreeItemFlair; -// src/Visualisations/VisModal.ts -function graphlibToD3(g) { - const d3Graph = { nodes: [], links: [] }; - const nodeIDs = {}; - g.nodes().forEach((node, i) => { - d3Graph.nodes.push({ id: i, name: node }); - nodeIDs[node] = i; - }); - g.forEachEdge((k, a2, s2, t) => { - d3Graph.links.push({ - source: nodeIDs[s2], - target: nodeIDs[t] - }); - }); - return d3Graph; +// src/components/side_views/MatrixEdgeField.svelte +function get_each_context9(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[8] = list[i]; + return child_ctx; } -function bfsAdjList(g, startNode) { - const queue = [startNode]; - const adjList = []; - let i = 0; - while (queue.length && i < 1e3) { - i++; - const currNode = queue.shift(); - const neighbours = { - succs: getOutNeighbours(g, currNode), - pres: getInNeighbours(g, currNode) - }; - console.log({ currNode, neighbours }); - const next = { - name: currNode, - pres: void 0, - succs: void 0, - parentId: i, - depth: i - }; - if (neighbours.succs.length) { - next.succs = neighbours.succs; - queue.push(...neighbours.succs); +function create_each_block9(ctx) { + let div2; + let div1; + let div0; + let edgelink; + let t0; + let treeitemflair; + let t1; + let current; + edgelink = new EdgeLink_default({ + props: { + edge: ( + /*edge*/ + ctx[8] + ), + plugin: ( + /*plugin*/ + ctx[3] + ), + show_node_options: ( + /*show_node_options*/ + ctx[6] + ), + cls: "grow tree-item-inner-text" } - if (neighbours.pres.length) { - next.pres = neighbours.pres; + }); + treeitemflair = new TreeItemFlair_default({ + props: { + cls: "font-mono", + label: ( + /*edge*/ + ctx[8].attr.explicit ? "x" : "i" + ), + aria_label: url_search_params(untyped_pick( + /*edge*/ + ctx[8].attr, + /*show_attributes*/ + ctx[4] + ), { trim_lone_param: true }) } - adjList.push(next); + }); + return { + c() { + div2 = element("div"); + div1 = element("div"); + div0 = element("div"); + create_component(edgelink.$$.fragment); + t0 = space(); + create_component(treeitemflair.$$.fragment); + t1 = space(); + attr(div0, "class", "tree-item-inner flex grow"); + attr(div1, "class", "tree-item-self is-clickable"); + attr(div2, "class", "tree-item"); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, div1); + append(div1, div0); + mount_component(edgelink, div0, null); + append(div1, t0); + mount_component(treeitemflair, div1, null); + append(div2, t1); + current = true; + }, + p(ctx2, dirty) { + const edgelink_changes = {}; + if (dirty & /*edges, sort*/ + 34) + edgelink_changes.edge = /*edge*/ + ctx2[8]; + if (dirty & /*plugin*/ + 8) + edgelink_changes.plugin = /*plugin*/ + ctx2[3]; + edgelink.$set(edgelink_changes); + const treeitemflair_changes = {}; + if (dirty & /*edges, sort*/ + 34) + treeitemflair_changes.label = /*edge*/ + ctx2[8].attr.explicit ? "x" : "i"; + if (dirty & /*edges, sort, show_attributes*/ + 50) + treeitemflair_changes.aria_label = url_search_params(untyped_pick( + /*edge*/ + ctx2[8].attr, + /*show_attributes*/ + ctx2[4] + ), { trim_lone_param: true }); + treeitemflair.$set(treeitemflair_changes); + }, + i(local) { + if (current) + return; + transition_in(edgelink.$$.fragment, local); + transition_in(treeitemflair.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(edgelink.$$.fragment, local); + transition_out(treeitemflair.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div2); + } + destroy_component(edgelink); + destroy_component(treeitemflair); + } + }; +} +function create_key_block4(ctx) { + let each_1_anchor; + let current; + let each_value = ensure_array_like( + /*edges*/ + ctx[1].sort( + /*sort*/ + ctx[5] + ) + ); + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block9(get_each_context9(ctx, each_value, i)); } - const maxDepth = adjList.sort((a2, b) => a2.depth - b.depth).last().depth; - adjList.forEach((item) => item.height = maxDepth - item.depth); - return adjList; -} -function dfsFlatAdjList(g, startNode) { - const nodes = g.nodes(); - const nodeCount = nodes.length; - const visits = {}; - nodes.forEach((node, i2) => { - visits[node] = nodeCount * i2; + const out = (i) => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; }); - const queue = [startNode]; - const adjList = []; - let depth = 1; - let i = 0; - while (queue.length && i < 1e3) { - i++; - const currNode = queue.shift(); - const next = getOutNeighbours(g, currNode); - if (next.length) { - queue.unshift(...next); - next.forEach((succ) => { - const parentId = nodeCount * nodes.indexOf(succ); - if (!adjList.some( - (adjItem) => adjItem.name === currNode && adjItem.parentId === parentId - )) { - adjList.push({ - id: visits[currNode], - name: currNode, - parentId, - depth - }); - visits[currNode]++; + return { + c() { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + each_1_anchor = empty(); + }, + m(target, anchor) { + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(target, anchor); + } + } + insert(target, each_1_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + if (dirty & /*edges, sort, show_attributes, plugin, show_node_options*/ + 122) { + each_value = ensure_array_like( + /*edges*/ + ctx2[1].sort( + /*sort*/ + ctx2[5] + ) + ); + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context9(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block9(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } + group_outros(); + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + check_outros(); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(each_1_anchor); + } + destroy_each(each_blocks, detaching); + } + }; +} +function create_fragment46(ctx) { + let details; + let summary; + let div0; + let chevronopener; + let t0; + let div1; + let span0; + let t1_value = ( + /*field*/ + ctx[2].label + "" + ); + let t1; + let t2; + let div2; + let span1; + let t3_value = ( + /*edges*/ + ctx[1].length + "" + ); + let t3; + let t4; + let div3; + let previous_key = ( + /*sort*/ + ctx[5] + ); + let details_class_value; + let current; + let mounted; + let dispose; + chevronopener = new ChevronOpener_default({ props: { open: ( + /*open*/ + ctx[0] + ) } }); + let key_block = create_key_block4(ctx); + return { + c() { + details = element("details"); + summary = element("summary"); + div0 = element("div"); + create_component(chevronopener.$$.fragment); + t0 = space(); + div1 = element("div"); + span0 = element("span"); + t1 = text(t1_value); + t2 = space(); + div2 = element("div"); + span1 = element("span"); + t3 = text(t3_value); + t4 = space(); + div3 = element("div"); + key_block.c(); + attr(div0, "class", "tree-item-icon collapse-icon"); + attr(span0, "class", "tree-item-inner-text"); + attr(div1, "class", "tree-item-inner"); + attr(span1, "class", "tree-item-flair font-mono text-lg"); + attr(div2, "class", "tree-item-flair-outer"); + attr(summary, "class", "tree-item-self is-clickable mod-collapsible text-lg"); + attr(div3, "class", "tree-item-children flex flex-col"); + attr(details, "class", details_class_value = "BC-matrix-view-field BC-matrix-view-field-" + /*field*/ + ctx[2].label + " tree-item"); + }, + m(target, anchor) { + insert(target, details, anchor); + append(details, summary); + append(summary, div0); + mount_component(chevronopener, div0, null); + append(summary, t0); + append(summary, div1); + append(div1, span0); + append(span0, t1); + append(summary, t2); + append(summary, div2); + append(div2, span1); + append(span1, t3); + append(details, t4); + append(details, div3); + key_block.m(div3, null); + details.open = /*open*/ + ctx[0]; + current = true; + if (!mounted) { + dispose = listen( + details, + "toggle", + /*details_toggle_handler*/ + ctx[7] + ); + mounted = true; + } + }, + p(ctx2, [dirty]) { + const chevronopener_changes = {}; + if (dirty & /*open*/ + 1) + chevronopener_changes.open = /*open*/ + ctx2[0]; + chevronopener.$set(chevronopener_changes); + if ((!current || dirty & /*field*/ + 4) && t1_value !== (t1_value = /*field*/ + ctx2[2].label + "")) + set_data(t1, t1_value); + if ((!current || dirty & /*edges*/ + 2) && t3_value !== (t3_value = /*edges*/ + ctx2[1].length + "")) + set_data(t3, t3_value); + if (dirty & /*sort*/ + 32 && safe_not_equal(previous_key, previous_key = /*sort*/ + ctx2[5])) { + group_outros(); + transition_out(key_block, 1, 1, noop); + check_outros(); + key_block = create_key_block4(ctx2); + key_block.c(); + transition_in(key_block, 1); + key_block.m(div3, null); + } else { + key_block.p(ctx2, dirty); + } + if (!current || dirty & /*field*/ + 4 && details_class_value !== (details_class_value = "BC-matrix-view-field BC-matrix-view-field-" + /*field*/ + ctx2[2].label + " tree-item")) { + attr(details, "class", details_class_value); + } + if (dirty & /*open*/ + 1) { + details.open = /*open*/ + ctx2[0]; + } + }, + i(local) { + if (current) + return; + transition_in(chevronopener.$$.fragment, local); + transition_in(key_block); + current = true; + }, + o(local) { + transition_out(chevronopener.$$.fragment, local); + transition_out(key_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(details); + } + destroy_component(chevronopener); + key_block.d(detaching); + mounted = false; + dispose(); + } + }; +} +function instance46($$self, $$props, $$invalidate) { + let { open } = $$props; + let { edges } = $$props; + let { field } = $$props; + let { plugin } = $$props; + let { show_attributes } = $$props; + let { show_node_options } = plugin.settings.views.side.matrix; + let { sort } = $$props; + function details_toggle_handler() { + open = this.open; + $$invalidate(0, open); + } + $$self.$$set = ($$props2) => { + if ("open" in $$props2) + $$invalidate(0, open = $$props2.open); + if ("edges" in $$props2) + $$invalidate(1, edges = $$props2.edges); + if ("field" in $$props2) + $$invalidate(2, field = $$props2.field); + if ("plugin" in $$props2) + $$invalidate(3, plugin = $$props2.plugin); + if ("show_attributes" in $$props2) + $$invalidate(4, show_attributes = $$props2.show_attributes); + if ("sort" in $$props2) + $$invalidate(5, sort = $$props2.sort); + }; + return [ + open, + edges, + field, + plugin, + show_attributes, + sort, + show_node_options, + details_toggle_handler + ]; +} +var MatrixEdgeField = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance46, create_fragment46, safe_not_equal, { + open: 0, + edges: 1, + field: 2, + plugin: 3, + show_attributes: 4, + sort: 5 + }); + } +}; +var MatrixEdgeField_default = MatrixEdgeField; + +// src/components/side_views/Matrix.svelte +function get_each_context10(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[13] = list[i]; + const constants_0 = ( + /*grouped_out_edges*/ + child_ctx[6][ + /*field*/ + child_ctx[13].label + ] + ); + child_ctx[14] = constants_0; + return child_ctx; +} +function create_else_block7(ctx) { + let p; + return { + c() { + p = element("p"); + p.textContent = "No outgoings edges"; + attr(p, "class", "search-empty-state"); + }, + m(target, anchor) { + insert(target, p, anchor); + }, + p: noop, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(p); + } + } + }; +} +function create_if_block13(ctx) { + let div; + let current; + let each_value = ensure_array_like( + /*plugin*/ + ctx[0].settings.edge_fields + ); + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block10(get_each_context10(ctx, each_value, i)); + } + const out = (i) => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + return { + c() { + div = element("div"); + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + }, + m(target, anchor) { + insert(target, div, anchor); + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(div, null); + } + } + current = true; + }, + p(ctx2, dirty) { + if (dirty & /*sort, grouped_out_edges, plugin, show_attributes, collapse*/ + 121) { + each_value = ensure_array_like( + /*plugin*/ + ctx2[0].settings.edge_fields + ); + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context10(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block10(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(div, null); + } + } + group_outros(); + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + check_outros(); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_each(each_blocks, detaching); + } + }; +} +function create_if_block_15(ctx) { + let matrixedgefield; + let current; + matrixedgefield = new MatrixEdgeField_default({ + props: { + sort: ( + /*sort*/ + ctx[5] + ), + edges: ( + /*edges*/ + ctx[14] + ), + field: ( + /*field*/ + ctx[13] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + show_attributes: ( + /*show_attributes*/ + ctx[3] + ), + open: !/*collapse*/ + ctx[4] + } + }); + return { + c() { + create_component(matrixedgefield.$$.fragment); + }, + m(target, anchor) { + mount_component(matrixedgefield, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const matrixedgefield_changes = {}; + if (dirty & /*sort*/ + 32) + matrixedgefield_changes.sort = /*sort*/ + ctx2[5]; + if (dirty & /*grouped_out_edges, plugin*/ + 65) + matrixedgefield_changes.edges = /*edges*/ + ctx2[14]; + if (dirty & /*plugin*/ + 1) + matrixedgefield_changes.field = /*field*/ + ctx2[13]; + if (dirty & /*plugin*/ + 1) + matrixedgefield_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*show_attributes*/ + 8) + matrixedgefield_changes.show_attributes = /*show_attributes*/ + ctx2[3]; + if (dirty & /*collapse*/ + 16) + matrixedgefield_changes.open = !/*collapse*/ + ctx2[4]; + matrixedgefield.$set(matrixedgefield_changes); + }, + i(local) { + if (current) + return; + transition_in(matrixedgefield.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(matrixedgefield.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(matrixedgefield, detaching); + } + }; +} +function create_each_block10(ctx) { + var _a; + let if_block_anchor; + let current; + let if_block = ( + /*edges*/ + ((_a = ctx[14]) == null ? void 0 : _a.length) && create_if_block_15(ctx) + ); + return { + c() { + if (if_block) + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if (if_block) + if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + var _a2; + if ( + /*edges*/ + (_a2 = ctx2[14]) == null ? void 0 : _a2.length + ) { + if (if_block) { + if_block.p(ctx2, dirty); + if (dirty & /*grouped_out_edges, plugin*/ + 65) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_15(ctx2); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + check_outros(); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(if_block_anchor); + } + if (if_block) + if_block.d(detaching); + } + }; +} +function create_key_block5(ctx) { + let current_block_type_index; + let if_block; + let if_block_anchor; + let current; + const if_block_creators = [create_if_block13, create_else_block7]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*grouped_out_edges*/ + ctx2[6] + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if_blocks[current_block_type_index].m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + if_block.p(ctx2, dirty); + } + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(if_block_anchor); + } + if_blocks[current_block_type_index].d(detaching); + } + }; +} +function create_fragment47(ctx) { + let div2; + let div1; + let div0; + let rebuildgraphbutton; + let t0; + let edgesortidselector; + let updating_edge_sort_id; + let t1; + let chevroncollapsebutton; + let updating_collapse; + let t2; + let showattributesselectormenu; + let updating_show_attributes; + let t3; + let fieldgroupselector; + let updating_field_group_labels; + let t4; + let previous_key = ( + /*grouped_out_edges*/ + ctx[6] + ); + let current; + rebuildgraphbutton = new RebuildGraphButton_default({ + props: { + cls: "clickable-icon nav-action-button", + plugin: ( + /*plugin*/ + ctx[0] + ) + } + }); + function edgesortidselector_edge_sort_id_binding(value) { + ctx[9](value); + } + let edgesortidselector_props = { + cls: "clickable-icon nav-action-button", + exclude_fields: ["field", "neighbour-field:"] + }; + if ( + /*edge_sort_id*/ + ctx[1] !== void 0 + ) { + edgesortidselector_props.edge_sort_id = /*edge_sort_id*/ + ctx[1]; + } + edgesortidselector = new EdgeSortIdSelector_default({ props: edgesortidselector_props }); + binding_callbacks.push(() => bind(edgesortidselector, "edge_sort_id", edgesortidselector_edge_sort_id_binding)); + function chevroncollapsebutton_collapse_binding(value) { + ctx[10](value); + } + let chevroncollapsebutton_props = { cls: "clickable-icon nav-action-button" }; + if ( + /*collapse*/ + ctx[4] !== void 0 + ) { + chevroncollapsebutton_props.collapse = /*collapse*/ + ctx[4]; + } + chevroncollapsebutton = new ChevronCollapseButton_default({ props: chevroncollapsebutton_props }); + binding_callbacks.push(() => bind(chevroncollapsebutton, "collapse", chevroncollapsebutton_collapse_binding)); + function showattributesselectormenu_show_attributes_binding(value) { + ctx[11](value); + } + let showattributesselectormenu_props = { + cls: "clickable-icon nav-action-button", + exclude_attributes: ["field", "explicit"] + }; + if ( + /*show_attributes*/ + ctx[3] !== void 0 + ) { + showattributesselectormenu_props.show_attributes = /*show_attributes*/ + ctx[3]; + } + showattributesselectormenu = new ShowAttributesSelectorMenu_default({ props: showattributesselectormenu_props }); + binding_callbacks.push(() => bind(showattributesselectormenu, "show_attributes", showattributesselectormenu_show_attributes_binding)); + function fieldgroupselector_field_group_labels_binding(value) { + ctx[12](value); + } + let fieldgroupselector_props = { + cls: "clickable-icon nav-action-button", + edge_field_groups: ( + /*plugin*/ + ctx[0].settings.edge_field_groups + ) + }; + if ( + /*field_group_labels*/ + ctx[2] !== void 0 + ) { + fieldgroupselector_props.field_group_labels = /*field_group_labels*/ + ctx[2]; + } + fieldgroupselector = new FieldGroupLabelsSelector_default({ props: fieldgroupselector_props }); + binding_callbacks.push(() => bind(fieldgroupselector, "field_group_labels", fieldgroupselector_field_group_labels_binding)); + let key_block = create_key_block5(ctx); + return { + c() { + div2 = element("div"); + div1 = element("div"); + div0 = element("div"); + create_component(rebuildgraphbutton.$$.fragment); + t0 = space(); + create_component(edgesortidselector.$$.fragment); + t1 = space(); + create_component(chevroncollapsebutton.$$.fragment); + t2 = space(); + create_component(showattributesselectormenu.$$.fragment); + t3 = space(); + create_component(fieldgroupselector.$$.fragment); + t4 = space(); + key_block.c(); + attr(div0, "class", "nav-buttons-container"); + attr(div1, "class", "nav-header"); + attr(div2, "class", "markdown-rendered BC-matrix-view"); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, div1); + append(div1, div0); + mount_component(rebuildgraphbutton, div0, null); + append(div0, t0); + mount_component(edgesortidselector, div0, null); + append(div0, t1); + mount_component(chevroncollapsebutton, div0, null); + append(div0, t2); + mount_component(showattributesselectormenu, div0, null); + append(div0, t3); + mount_component(fieldgroupselector, div0, null); + append(div2, t4); + key_block.m(div2, null); + current = true; + }, + p(ctx2, [dirty]) { + const rebuildgraphbutton_changes = {}; + if (dirty & /*plugin*/ + 1) + rebuildgraphbutton_changes.plugin = /*plugin*/ + ctx2[0]; + rebuildgraphbutton.$set(rebuildgraphbutton_changes); + const edgesortidselector_changes = {}; + if (!updating_edge_sort_id && dirty & /*edge_sort_id*/ + 2) { + updating_edge_sort_id = true; + edgesortidselector_changes.edge_sort_id = /*edge_sort_id*/ + ctx2[1]; + add_flush_callback(() => updating_edge_sort_id = false); + } + edgesortidselector.$set(edgesortidselector_changes); + const chevroncollapsebutton_changes = {}; + if (!updating_collapse && dirty & /*collapse*/ + 16) { + updating_collapse = true; + chevroncollapsebutton_changes.collapse = /*collapse*/ + ctx2[4]; + add_flush_callback(() => updating_collapse = false); + } + chevroncollapsebutton.$set(chevroncollapsebutton_changes); + const showattributesselectormenu_changes = {}; + if (!updating_show_attributes && dirty & /*show_attributes*/ + 8) { + updating_show_attributes = true; + showattributesselectormenu_changes.show_attributes = /*show_attributes*/ + ctx2[3]; + add_flush_callback(() => updating_show_attributes = false); + } + showattributesselectormenu.$set(showattributesselectormenu_changes); + const fieldgroupselector_changes = {}; + if (dirty & /*plugin*/ + 1) + fieldgroupselector_changes.edge_field_groups = /*plugin*/ + ctx2[0].settings.edge_field_groups; + if (!updating_field_group_labels && dirty & /*field_group_labels*/ + 4) { + updating_field_group_labels = true; + fieldgroupselector_changes.field_group_labels = /*field_group_labels*/ + ctx2[2]; + add_flush_callback(() => updating_field_group_labels = false); + } + fieldgroupselector.$set(fieldgroupselector_changes); + if (dirty & /*grouped_out_edges*/ + 64 && safe_not_equal(previous_key, previous_key = /*grouped_out_edges*/ + ctx2[6])) { + group_outros(); + transition_out(key_block, 1, 1, noop); + check_outros(); + key_block = create_key_block5(ctx2); + key_block.c(); + transition_in(key_block, 1); + key_block.m(div2, null); + } else { + key_block.p(ctx2, dirty); + } + }, + i(local) { + if (current) + return; + transition_in(rebuildgraphbutton.$$.fragment, local); + transition_in(edgesortidselector.$$.fragment, local); + transition_in(chevroncollapsebutton.$$.fragment, local); + transition_in(showattributesselectormenu.$$.fragment, local); + transition_in(fieldgroupselector.$$.fragment, local); + transition_in(key_block); + current = true; + }, + o(local) { + transition_out(rebuildgraphbutton.$$.fragment, local); + transition_out(edgesortidselector.$$.fragment, local); + transition_out(chevroncollapsebutton.$$.fragment, local); + transition_out(showattributesselectormenu.$$.fragment, local); + transition_out(fieldgroupselector.$$.fragment, local); + transition_out(key_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div2); + } + destroy_component(rebuildgraphbutton); + destroy_component(edgesortidselector); + destroy_component(chevroncollapsebutton); + destroy_component(showattributesselectormenu); + destroy_component(fieldgroupselector); + key_block.d(detaching); + } + }; +} +function instance47($$self, $$props, $$invalidate) { + let edge_field_labels; + let grouped_out_edges; + let sort; + let $active_file_store; + component_subscribe($$self, active_file_store, ($$value) => $$invalidate(8, $active_file_store = $$value)); + let { plugin } = $$props; + let { edge_sort_id, field_group_labels, show_attributes, collapse } = plugin.settings.views.side.matrix; + function edgesortidselector_edge_sort_id_binding(value) { + edge_sort_id = value; + $$invalidate(1, edge_sort_id); + } + function chevroncollapsebutton_collapse_binding(value) { + collapse = value; + $$invalidate(4, collapse); + } + function showattributesselectormenu_show_attributes_binding(value) { + show_attributes = value; + $$invalidate(3, show_attributes); + } + function fieldgroupselector_field_group_labels_binding(value) { + field_group_labels = value; + $$invalidate(2, field_group_labels); + } + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*plugin, field_group_labels*/ + 5) { + $: + $$invalidate(7, edge_field_labels = resolve_field_group_labels(plugin.settings.edge_field_groups, field_group_labels)); + } + if ($$self.$$.dirty & /*$active_file_store, plugin, edge_field_labels*/ + 385) { + $: + $$invalidate(6, grouped_out_edges = $active_file_store && // Even tho we ensure the graph is built before the views are registered, + // Existing views still try render before the graph is built. + plugin.graph.hasNode($active_file_store.path) ? group_by(plugin.graph.get_out_edges($active_file_store.path).filter((e) => has_edge_attrs(e, { $or_fields: edge_field_labels })), (e) => e.attr.field) : null); + } + if ($$self.$$.dirty & /*edge_sort_id, plugin*/ + 3) { + $: + $$invalidate(5, sort = get_edge_sorter(edge_sort_id, plugin.graph)); + } + }; + return [ + plugin, + edge_sort_id, + field_group_labels, + show_attributes, + collapse, + sort, + grouped_out_edges, + edge_field_labels, + $active_file_store, + edgesortidselector_edge_sort_id_binding, + chevroncollapsebutton_collapse_binding, + showattributesselectormenu_show_attributes_binding, + fieldgroupselector_field_group_labels_binding + ]; +} +var Matrix = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance47, create_fragment47, safe_not_equal, { plugin: 0 }); + } +}; +var Matrix_default = Matrix; + +// src/views/matrix.ts +var MatrixView = class extends import_obsidian25.ItemView { + constructor(leaf, plugin) { + super(leaf); + this.icon = "blinds"; + this.plugin = plugin; + } + getViewType() { + return VIEW_IDS.matrix; + } + getDisplayText() { + return "Matrix view"; + } + async onOpen() { + const container = this.containerEl.children[1]; + container.empty(); + this.component = new Matrix_default({ + target: this.contentEl, + props: { plugin: this.plugin } + }); + } + async onClose() { + var _a; + (_a = this.component) == null ? void 0 : _a.$destroy(); + } +}; + +// src/api/index.ts +var BCAPI = class { + constructor(plugin) { + this.refresh = () => this.plugin.refresh(); + /** @deprecated Use refresh */ + this.refreshIndex = this.refresh; + /** @deprecated Filter edges of plugin.graph instead */ + this.getSubForFields = (fields, g = this.plugin.graph) => { + }; + this.build_tree = Traverse.build_tree; + this.breadth_first_traversal = Traverse.breadth_first; + this.create_list_index = (start_node = ((_a) => (_a = get_store_value(active_file_store)) == null ? void 0 : _a.path)(), options) => { + if (!start_node) + throw new Error("No active file"); + return ListIndex.build( + this.plugin.graph, + start_node, + Object.assign({ ...ListIndex.DEFAULT_OPTIONS }, options) + ); + }; + // BREAKING + /** @deprecated Use flatten_all_paths and flat_paths_to_index_list instead. Or, create_list_index */ + this.createIndex = () => { + }; + this.get_neighbours = (source = ((_b) => (_b = get_store_value(active_file_store)) == null ? void 0 : _b.path)()) => source && this.plugin.graph.hasNode(source) ? this.plugin.graph.get_out_edges(source) : []; + /** @deprecated Use get_neighbours instead */ + this.getMatrixNeighbours = this.get_neighbours; + this.plugin = plugin; + } + get fields() { + return this.plugin.settings.edge_fields; + } + get field_groups() { + return this.plugin.settings.edge_field_groups; + } +}; + +// src/codeblocks/MDRC.ts +var import_obsidian27 = require("obsidian"); + +// src/components/codeblocks/CodeblockErrors.svelte +function create_if_block14(ctx) { + let p0; + let t1; + let p1; + let t3; + let div; + let rendermarkdown; + let t4; + let hr; + let t5; + let p2; + let t9; + let p3; + let t10; + let code; + let t11_value = ( + /*plugin*/ + ctx[0].manifest.version + "" + ); + let t11; + let current; + rendermarkdown = new RenderMarkdown_default({ + props: { + plugin: ( + /*plugin*/ + ctx[0] + ), + markdown: ( + /*markdown*/ + ctx[2] + ) + } + }); + return { + c() { + p0 = element("p"); + p0.textContent = "Breadcrumbs Codeblock Errors"; + t1 = space(); + p1 = element("p"); + p1.textContent = "The codeblock YAML has errors in the following keys/properties:"; + t3 = space(); + div = element("div"); + create_component(rendermarkdown.$$.fragment); + t4 = space(); + hr = element("hr"); + t5 = space(); + p2 = element("p"); + p2.innerHTML = `See the codeblock docs for more info`; + t9 = space(); + p3 = element("p"); + t10 = text("Version: "); + code = element("code"); + t11 = text(t11_value); + attr(p0, "class", "text-warning text-lg font-semibold"); + attr(div, "class", "BC-codeblock-errors"); + }, + m(target, anchor) { + insert(target, p0, anchor); + insert(target, t1, anchor); + insert(target, p1, anchor); + insert(target, t3, anchor); + insert(target, div, anchor); + mount_component(rendermarkdown, div, null); + insert(target, t4, anchor); + insert(target, hr, anchor); + insert(target, t5, anchor); + insert(target, p2, anchor); + insert(target, t9, anchor); + insert(target, p3, anchor); + append(p3, t10); + append(p3, code); + append(code, t11); + current = true; + }, + p(ctx2, dirty) { + const rendermarkdown_changes = {}; + if (dirty & /*plugin*/ + 1) + rendermarkdown_changes.plugin = /*plugin*/ + ctx2[0]; + rendermarkdown.$set(rendermarkdown_changes); + if ((!current || dirty & /*plugin*/ + 1) && t11_value !== (t11_value = /*plugin*/ + ctx2[0].manifest.version + "")) + set_data(t11, t11_value); + }, + i(local) { + if (current) + return; + transition_in(rendermarkdown.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(rendermarkdown.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(p0); + detach(t1); + detach(p1); + detach(t3); + detach(div); + detach(t4); + detach(hr); + detach(t5); + detach(p2); + detach(t9); + detach(p3); + } + destroy_component(rendermarkdown); + } + }; +} +function create_fragment48(ctx) { + let if_block_anchor; + let current; + let if_block = ( + /*errors*/ + ctx[1].length && create_if_block14(ctx) + ); + return { + c() { + if (if_block) + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if (if_block) + if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx2, [dirty]) { + if ( + /*errors*/ + ctx2[1].length + ) { + if (if_block) { + if_block.p(ctx2, dirty); + if (dirty & /*errors*/ + 2) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block14(ctx2); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + check_outros(); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(if_block_anchor); + } + if (if_block) + if_block.d(detaching); + } + }; +} +function instance48($$self, $$props, $$invalidate) { + let { plugin } = $$props; + let { errors } = $$props; + const markdown = errors.map((e) => `- **\`${e.path}\`**: ${e.message}`).join("\n"); + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + if ("errors" in $$props2) + $$invalidate(1, errors = $$props2.errors); + }; + return [plugin, errors, markdown]; +} +var CodeblockErrors = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance48, create_fragment48, safe_not_equal, { plugin: 0, errors: 1 }); + } +}; +var CodeblockErrors_default = CodeblockErrors; + +// src/components/button/CopyToClipboardButton.svelte +function create_else_block8(ctx) { + let clipboardicon; + let current; + clipboardicon = new clipboard_default({ props: { size: ICON_SIZE } }); + return { + c() { + create_component(clipboardicon.$$.fragment); + }, + m(target, anchor) { + mount_component(clipboardicon, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(clipboardicon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(clipboardicon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(clipboardicon, detaching); + } + }; +} +function create_if_block15(ctx) { + let checkicon; + let current; + checkicon = new check_default({ props: { size: ICON_SIZE } }); + return { + c() { + create_component(checkicon.$$.fragment); + }, + m(target, anchor) { + mount_component(checkicon, target, anchor); + current = true; + }, + i(local) { + if (current) + return; + transition_in(checkicon.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(checkicon.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(checkicon, detaching); + } + }; +} +function create_fragment49(ctx) { + let button; + let current_block_type_index; + let if_block; + let button_aria_label_value; + let current; + let mounted; + let dispose; + const if_block_creators = [create_if_block15, create_else_block8]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*copied*/ + ctx2[4] + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + button = element("button"); + if_block.c(); + attr( + button, + "class", + /*cls*/ + ctx[0] + ); + attr(button, "aria-label", button_aria_label_value = /*copied*/ + ctx[4] ? "Copied!" : ( + /*aria_label*/ + ctx[2] + )); + }, + m(target, anchor) { + insert(target, button, anchor); + if_blocks[current_block_type_index].m(button, null); + current = true; + if (!mounted) { + dispose = listen( + button, + "click", + /*click_handler*/ + ctx[5] + ); + mounted = true; + } + }, + p(ctx2, [dirty]) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index !== previous_block_index) { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + } + transition_in(if_block, 1); + if_block.m(button, null); + } + if (!current || dirty & /*cls*/ + 1) { + attr( + button, + "class", + /*cls*/ + ctx2[0] + ); + } + if (!current || dirty & /*copied, aria_label*/ + 20 && button_aria_label_value !== (button_aria_label_value = /*copied*/ + ctx2[4] ? "Copied!" : ( + /*aria_label*/ + ctx2[2] + ))) { + attr(button, "aria-label", button_aria_label_value); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(button); + } + if_blocks[current_block_type_index].d(); + mounted = false; + dispose(); + } + }; +} +function instance49($$self, $$props, $$invalidate) { + let { cls = "" } = $$props; + let { text: text2 } = $$props; + let { aria_label = "Copy to Clipboard" } = $$props; + let { options = {} } = $$props; + let copied = false; + const click_handler = () => { + $$invalidate(4, copied = true); + copy_to_clipboard(text2, options); + setTimeout(() => $$invalidate(4, copied = false), 2500); + }; + $$self.$$set = ($$props2) => { + if ("cls" in $$props2) + $$invalidate(0, cls = $$props2.cls); + if ("text" in $$props2) + $$invalidate(1, text2 = $$props2.text); + if ("aria_label" in $$props2) + $$invalidate(2, aria_label = $$props2.aria_label); + if ("options" in $$props2) + $$invalidate(3, options = $$props2.options); + }; + return [cls, text2, aria_label, options, copied, click_handler]; +} +var CopyToClipboardButton = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance49, create_fragment49, safe_not_equal, { + cls: 0, + text: 1, + aria_label: 2, + options: 3 + }); + } +}; +var CopyToClipboardButton_default = CopyToClipboardButton; + +// src/components/codeblocks/CodeblockMarkmap.svelte +function create_if_block_16(ctx) { + let h3; + let t_value = ( + /*options*/ + ctx[1].title + "" + ); + let t; + return { + c() { + h3 = element("h3"); + t = text(t_value); + attr(h3, "class", "BC-codeblock-markmap-title"); + }, + m(target, anchor) { + insert(target, h3, anchor); + append(h3, t); + }, + p(ctx2, dirty) { + if (dirty & /*options*/ + 2 && t_value !== (t_value = /*options*/ + ctx2[1].title + "")) + set_data(t, t_value); + }, + d(detaching) { + if (detaching) { + detach(h3); + } + } + }; +} +function create_else_block9(ctx) { + let p; + return { + c() { + p = element("p"); + p.textContent = "No paths found."; + attr(p, "class", "search-empty-state"); + }, + m(target, anchor) { + insert(target, p, anchor); + }, + p: noop, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(p); + } + } + }; +} +function create_if_block16(ctx) { + let div1; + let div0; + let copytoclipboardbutton; + let t; + let renderexternalcodeblock; + let current; + copytoclipboardbutton = new CopyToClipboardButton_default({ + props: { + text: ( + /*code*/ + ctx[4] + ), + cls: "clickable-icon nav-action-button" + } + }); + renderexternalcodeblock = new RenderExternalCodeblock_default({ + props: { + code: ( + /*code*/ + ctx[4] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + source_path: ( + /*source_path*/ + ctx[5] + ), + type: "markmap" + } + }); + return { + c() { + div1 = element("div"); + div0 = element("div"); + create_component(copytoclipboardbutton.$$.fragment); + t = space(); + create_component(renderexternalcodeblock.$$.fragment); + attr(div0, "class", "absolute left-2 top-2 flex"); + attr(div1, "class", "relative"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + mount_component(copytoclipboardbutton, div0, null); + append(div1, t); + mount_component(renderexternalcodeblock, div1, null); + current = true; + }, + p(ctx2, dirty) { + const copytoclipboardbutton_changes = {}; + if (dirty & /*code*/ + 16) + copytoclipboardbutton_changes.text = /*code*/ + ctx2[4]; + copytoclipboardbutton.$set(copytoclipboardbutton_changes); + const renderexternalcodeblock_changes = {}; + if (dirty & /*code*/ + 16) + renderexternalcodeblock_changes.code = /*code*/ + ctx2[4]; + if (dirty & /*plugin*/ + 1) + renderexternalcodeblock_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*source_path*/ + 32) + renderexternalcodeblock_changes.source_path = /*source_path*/ + ctx2[5]; + renderexternalcodeblock.$set(renderexternalcodeblock_changes); + }, + i(local) { + if (current) + return; + transition_in(copytoclipboardbutton.$$.fragment, local); + transition_in(renderexternalcodeblock.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(copytoclipboardbutton.$$.fragment, local); + transition_out(renderexternalcodeblock.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div1); + } + destroy_component(copytoclipboardbutton); + destroy_component(renderexternalcodeblock); + } + }; +} +function create_fragment50(ctx) { + let div; + let codeblockerrors; + let t0; + let t1; + let current_block_type_index; + let if_block1; + let current; + codeblockerrors = new CodeblockErrors_default({ + props: { + plugin: ( + /*plugin*/ + ctx[0] + ), + errors: ( + /*errors*/ + ctx[2] + ) + } + }); + let if_block0 = ( + /*options*/ + ctx[1].title && create_if_block_16(ctx) + ); + const if_block_creators = [create_if_block16, create_else_block9]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*tree*/ + ctx2[3].length + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + div = element("div"); + create_component(codeblockerrors.$$.fragment); + t0 = space(); + if (if_block0) + if_block0.c(); + t1 = space(); + if_block1.c(); + attr(div, "class", "BC-codeblock-markmap"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(codeblockerrors, div, null); + append(div, t0); + if (if_block0) + if_block0.m(div, null); + append(div, t1); + if_blocks[current_block_type_index].m(div, null); + current = true; + }, + p(ctx2, [dirty]) { + const codeblockerrors_changes = {}; + if (dirty & /*plugin*/ + 1) + codeblockerrors_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*errors*/ + 4) + codeblockerrors_changes.errors = /*errors*/ + ctx2[2]; + codeblockerrors.$set(codeblockerrors_changes); + if ( + /*options*/ + ctx2[1].title + ) { + if (if_block0) { + if_block0.p(ctx2, dirty); + } else { + if_block0 = create_if_block_16(ctx2); + if_block0.c(); + if_block0.m(div, t1); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block1 = if_blocks[current_block_type_index]; + if (!if_block1) { + if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block1.c(); + } else { + if_block1.p(ctx2, dirty); + } + transition_in(if_block1, 1); + if_block1.m(div, null); + } + }, + i(local) { + if (current) + return; + transition_in(codeblockerrors.$$.fragment, local); + transition_in(if_block1); + current = true; + }, + o(local) { + transition_out(codeblockerrors.$$.fragment, local); + transition_out(if_block1); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_component(codeblockerrors); + if (if_block0) + if_block0.d(); + if_blocks[current_block_type_index].d(); + } + }; +} +function instance50($$self, $$props, $$invalidate) { + let source_path; + let code; + let $active_file_store; + component_subscribe($$self, active_file_store, ($$value) => $$invalidate(9, $active_file_store = $$value)); + var _a, _b; + let { plugin } = $$props; + let { options } = $$props; + let { errors } = $$props; + let { file_path } = $$props; + const sort = get_edge_sorter( + // @ts-expect-error: ts(2345) + options.sort, + plugin.graph + ); + const { show_node_options } = plugin.settings.views.codeblocks; + let tree = []; + const update2 = () => { + $$invalidate(3, tree = Traverse.sort_edge_tree(get_tree(), sort)); + }; + const base_traversal = (attr2) => Traverse.build_tree(plugin.graph, source_path, { max_depth: options.depth[1] }, (e) => has_edge_attrs(e, Object.assign(Object.assign({}, attr2), { + $or_target_ids: options["dataview-from-paths"] + }))); + const edge_field_labels = (_a = options.fields) !== null && _a !== void 0 ? _a : plugin.settings.edge_fields.map((f) => f.label); + const get_tree = () => { + if (source_path && plugin.graph.hasNode(source_path)) { + const traversal = options["merge-fields"] ? base_traversal({ $or_fields: options.fields }) : edge_field_labels.flatMap((field) => base_traversal({ field })); + return options.flat ? Traverse.flatten_tree(traversal).map((item) => ({ depth: 0, children: [], edge: item.edge })) : traversal; + } else { + return []; + } + }; + onMount(update2); + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + if ("options" in $$props2) + $$invalidate(1, options = $$props2.options); + if ("errors" in $$props2) + $$invalidate(2, errors = $$props2.errors); + if ("file_path" in $$props2) + $$invalidate(6, file_path = $$props2.file_path); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*file_path, $active_file_store*/ + 576) { + $: + $$invalidate(5, source_path = file_path ? file_path : $active_file_store ? $active_file_store.path : ""); + } + if ($$self.$$.dirty & /*tree, plugin, options, _b*/ + 267) { + $: + $$invalidate(4, code = ListIndex.edge_tree_to_list_index(tree, Object.assign(Object.assign({}, plugin.settings.commands.list_index.default_options), { + show_node_options, + show_attributes: $$invalidate(8, _b = options["show-attributes"]) !== null && _b !== void 0 ? _b : [] + }))); + } + }; + return [ + plugin, + options, + errors, + tree, + code, + source_path, + file_path, + update2, + _b, + $active_file_store + ]; +} +var CodeblockMarkmap = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance50, create_fragment50, safe_not_equal, { + plugin: 0, + options: 1, + errors: 2, + file_path: 6, + update: 7 + }); + } + get update() { + return this.$$.ctx[7]; + } +}; +var CodeblockMarkmap_default = CodeblockMarkmap; + +// src/graph/distance.ts +var from_traversal_items = (items) => { + const distances = /* @__PURE__ */ new Map(); + items.forEach((item) => { + var _a; + distances.set( + item.edge.target_id, + Math.min( + (_a = distances.get(item.edge.target_id)) != null ? _a : Infinity, + item.depth + 1 + ) + ); + }); + return distances; +}; +var Distance = { + from_traversal_items +}; + +// src/utils/numbers.ts +var is_between = (value, min, max) => value >= min && value <= max; + +// src/components/codeblocks/CodeblockMermaid.svelte +function create_if_block_17(ctx) { + let h3; + let t_value = ( + /*options*/ + ctx[1].title + "" + ); + let t; + return { + c() { + h3 = element("h3"); + t = text(t_value); + attr(h3, "class", "BC-codeblock-mermaid-title"); + }, + m(target, anchor) { + insert(target, h3, anchor); + append(h3, t); + }, + p(ctx2, dirty) { + if (dirty & /*options*/ + 2 && t_value !== (t_value = /*options*/ + ctx2[1].title + "")) + set_data(t, t_value); + }, + d(detaching) { + if (detaching) { + detach(h3); + } + } + }; +} +function create_else_block10(ctx) { + let p; + return { + c() { + p = element("p"); + p.textContent = "No paths found."; + attr(p, "class", "search-empty-state"); + }, + m(target, anchor) { + insert(target, p, anchor); + }, + p: noop, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(p); + } + } + }; +} +function create_if_block17(ctx) { + let div1; + let div0; + let copytoclipboardbutton; + let t0; + let button0; + let imageicon; + let t1; + let button1; + let pencilicon; + let t2; + let renderexternalcodeblock; + let current; + let mounted; + let dispose; + copytoclipboardbutton = new CopyToClipboardButton_default({ + props: { + text: ( + /*code*/ + ctx[4] + ), + cls: "clickable-icon nav-action-button" + } + }); + imageicon = new image_default({ props: { size: ICON_SIZE } }); + pencilicon = new pencil_default({ props: { size: ICON_SIZE } }); + renderexternalcodeblock = new RenderExternalCodeblock_default({ + props: { + code: ( + /*code*/ + ctx[4] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + source_path: ( + /*source_path*/ + ctx[5] + ), + type: "mermaid" + } + }); + return { + c() { + div1 = element("div"); + div0 = element("div"); + create_component(copytoclipboardbutton.$$.fragment); + t0 = space(); + button0 = element("button"); + create_component(imageicon.$$.fragment); + t1 = space(); + button1 = element("button"); + create_component(pencilicon.$$.fragment); + t2 = space(); + create_component(renderexternalcodeblock.$$.fragment); + attr(button0, "role", "link"); + attr(button0, "aria-label", "View Image on mermaid.ink"); + attr(button0, "class", "clickable-icon nav-action-button"); + attr(button1, "role", "link"); + attr(button1, "aria-label", "Live Edit on mermaid.live"); + attr(button1, "class", "clickable-icon nav-action-button"); + attr(div0, "class", "absolute left-2 top-2 flex"); + attr(div1, "class", "relative"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + mount_component(copytoclipboardbutton, div0, null); + append(div0, t0); + append(div0, button0); + mount_component(imageicon, button0, null); + append(div0, t1); + append(div0, button1); + mount_component(pencilicon, button1, null); + append(div1, t2); + mount_component(renderexternalcodeblock, div1, null); + current = true; + if (!mounted) { + dispose = [ + listen( + button0, + "click", + /*click_handler*/ + ctx[12] + ), + listen( + button1, + "click", + /*click_handler_1*/ + ctx[13] + ) + ]; + mounted = true; + } + }, + p(ctx2, dirty) { + const copytoclipboardbutton_changes = {}; + if (dirty & /*code*/ + 16) + copytoclipboardbutton_changes.text = /*code*/ + ctx2[4]; + copytoclipboardbutton.$set(copytoclipboardbutton_changes); + const renderexternalcodeblock_changes = {}; + if (dirty & /*code*/ + 16) + renderexternalcodeblock_changes.code = /*code*/ + ctx2[4]; + if (dirty & /*plugin*/ + 1) + renderexternalcodeblock_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*source_path*/ + 32) + renderexternalcodeblock_changes.source_path = /*source_path*/ + ctx2[5]; + renderexternalcodeblock.$set(renderexternalcodeblock_changes); + }, + i(local) { + if (current) + return; + transition_in(copytoclipboardbutton.$$.fragment, local); + transition_in(imageicon.$$.fragment, local); + transition_in(pencilicon.$$.fragment, local); + transition_in(renderexternalcodeblock.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(copytoclipboardbutton.$$.fragment, local); + transition_out(imageicon.$$.fragment, local); + transition_out(pencilicon.$$.fragment, local); + transition_out(renderexternalcodeblock.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div1); + } + destroy_component(copytoclipboardbutton); + destroy_component(imageicon); + destroy_component(pencilicon); + destroy_component(renderexternalcodeblock); + mounted = false; + run_all(dispose); + } + }; +} +function create_fragment51(ctx) { + let div; + let codeblockerrors; + let t0; + let t1; + let current_block_type_index; + let if_block1; + let current; + codeblockerrors = new CodeblockErrors_default({ + props: { + plugin: ( + /*plugin*/ + ctx[0] + ), + errors: ( + /*errors*/ + ctx[2] + ) + } + }); + let if_block0 = ( + /*options*/ + ctx[1].title && create_if_block_17(ctx) + ); + const if_block_creators = [create_if_block17, create_else_block10]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*traversal_items*/ + ctx2[3].length + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + div = element("div"); + create_component(codeblockerrors.$$.fragment); + t0 = space(); + if (if_block0) + if_block0.c(); + t1 = space(); + if_block1.c(); + attr(div, "class", "BC-codeblock-mermaid"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(codeblockerrors, div, null); + append(div, t0); + if (if_block0) + if_block0.m(div, null); + append(div, t1); + if_blocks[current_block_type_index].m(div, null); + current = true; + }, + p(ctx2, [dirty]) { + const codeblockerrors_changes = {}; + if (dirty & /*plugin*/ + 1) + codeblockerrors_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*errors*/ + 4) + codeblockerrors_changes.errors = /*errors*/ + ctx2[2]; + codeblockerrors.$set(codeblockerrors_changes); + if ( + /*options*/ + ctx2[1].title + ) { + if (if_block0) { + if_block0.p(ctx2, dirty); + } else { + if_block0 = create_if_block_17(ctx2); + if_block0.c(); + if_block0.m(div, t1); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block1 = if_blocks[current_block_type_index]; + if (!if_block1) { + if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block1.c(); + } else { + if_block1.p(ctx2, dirty); + } + transition_in(if_block1, 1); + if_block1.m(div, null); + } + }, + i(local) { + if (current) + return; + transition_in(codeblockerrors.$$.fragment, local); + transition_in(if_block1); + current = true; + }, + o(local) { + transition_out(codeblockerrors.$$.fragment, local); + transition_out(if_block1); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_component(codeblockerrors); + if (if_block0) + if_block0.d(); + if_blocks[current_block_type_index].d(); + } + }; +} +function instance51($$self, $$props, $$invalidate) { + let source_path; + let edges; + let code; + let $active_file_store; + component_subscribe($$self, active_file_store, ($$value) => $$invalidate(11, $active_file_store = $$value)); + var _a; + let { plugin } = $$props; + let { options } = $$props; + let { errors } = $$props; + let { file_path } = $$props; + const sort = get_edge_sorter( + // @ts-expect-error: ts(2345) + options.sort, + plugin.graph + ); + let traversal_items = []; + let distances = /* @__PURE__ */ new Map(); + const update2 = () => { + $$invalidate(3, traversal_items = get_traversal_items()); + $$invalidate(9, distances = Distance.from_traversal_items(traversal_items)); + }; + const base_traversal = (attr2) => Traverse.gather_items(plugin.graph, source_path, (item) => has_edge_attrs(item.edge, Object.assign(Object.assign({}, attr2), { + $or_target_ids: options["dataview-from-paths"] + }))); + const edge_field_labels = (_a = options.fields) !== null && _a !== void 0 ? _a : plugin.settings.edge_fields.map((f) => f.label); + const get_traversal_items = () => { + if (source_path && plugin.graph.hasNode(source_path)) { + return options["merge-fields"] ? base_traversal({ $or_fields: options.fields }) : edge_field_labels.flatMap((field) => base_traversal({ field })); + } else { + return []; + } + }; + onMount(update2); + const click_handler = () => { + window.open(Mermaid.to_image_link(code), "_blank"); + }; + const click_handler_1 = () => { + window.open(Mermaid.to_live_edit_link(code), "_blank"); + }; + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + if ("options" in $$props2) + $$invalidate(1, options = $$props2.options); + if ("errors" in $$props2) + $$invalidate(2, errors = $$props2.errors); + if ("file_path" in $$props2) + $$invalidate(6, file_path = $$props2.file_path); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*file_path, $active_file_store*/ + 2112) { + $: + $$invalidate(5, source_path = file_path ? file_path : $active_file_store ? $active_file_store.path : ""); + } + if ($$self.$$.dirty & /*traversal_items, distances, options*/ + 522) { + $: + $$invalidate(10, edges = traversal_items.filter((item) => { + var _a2; + return is_between( + (_a2 = distances.get(item.edge.target_id)) !== null && _a2 !== void 0 ? _a2 : 0, + options.depth[0] + 1, + options.depth[1] + ); + }).map((item) => item.edge).sort(sort)); + } + if ($$self.$$.dirty & /*edges, source_path, options, plugin*/ + 1059) { + $: + $$invalidate(4, code = Mermaid.from_edges(edges, { + kind: "graph", + click: { method: "class" }, + active_node_id: source_path, + renderer: options["mermaid-renderer"], + curve_style: options["mermaid-curve"], + direction: options["mermaid-direction"], + show_attributes: options["show-attributes"], + get_node_label: (node_id, _attr) => { + const file = plugin.app.vault.getFileByPath(node_id); + return file ? plugin.app.fileManager.generateMarkdownLink(file, source_path).slice(2, -2) : Paths.drop_ext(Links.resolve_to_absolute_path(plugin.app, node_id, source_path)); + } + })); + } + if ($$self.$$.dirty & /*code*/ + 16) { + $: + log.debug(code); + } + }; + return [ + plugin, + options, + errors, + traversal_items, + code, + source_path, + file_path, + update2, + _a, + distances, + edges, + $active_file_store, + click_handler, + click_handler_1 + ]; +} +var CodeblockMermaid = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance51, create_fragment51, safe_not_equal, { + plugin: 0, + options: 1, + errors: 2, + file_path: 6, + update: 7 + }); + } + get update() { + return this.$$.ctx[7]; + } +}; +var CodeblockMermaid_default = CodeblockMermaid; + +// src/components/NestedEdgeList.svelte +function get_each_context11(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[9] = list[i]; + child_ctx[10] = list; + child_ctx[11] = i; + return child_ctx; +} +function create_if_block_25(ctx) { + let div; + let chevronopener; + let current; + chevronopener = new ChevronOpener_default({ + props: { open: ( + /*opens*/ + ctx[5][ + /*i*/ + ctx[11] + ] + ) } + }); + return { + c() { + div = element("div"); + create_component(chevronopener.$$.fragment); + attr(div, "class", "tree-item-icon collapse-icon mod-collapsible"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(chevronopener, div, null); + current = true; + }, + p(ctx2, dirty) { + const chevronopener_changes = {}; + if (dirty & /*opens*/ + 32) + chevronopener_changes.open = /*opens*/ + ctx2[5][ + /*i*/ + ctx2[11] + ]; + chevronopener.$set(chevronopener_changes); + }, + i(local) { + if (current) + return; + transition_in(chevronopener.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(chevronopener.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_component(chevronopener); + } + }; +} +function create_if_block_18(ctx) { + let treeitemflair; + let current; + treeitemflair = new TreeItemFlair_default({ + props: { + label: url_search_params(untyped_pick( + /*item*/ + ctx[9].edge.attr, + /*show_attributes*/ + ctx[3] + ), { trim_lone_param: true }) + } + }); + return { + c() { + create_component(treeitemflair.$$.fragment); + }, + m(target, anchor) { + mount_component(treeitemflair, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const treeitemflair_changes = {}; + if (dirty & /*tree, sort, show_attributes*/ + 26) + treeitemflair_changes.label = url_search_params(untyped_pick( + /*item*/ + ctx2[9].edge.attr, + /*show_attributes*/ + ctx2[3] + ), { trim_lone_param: true }); + treeitemflair.$set(treeitemflair_changes); + }, + i(local) { + if (current) + return; + transition_in(treeitemflair.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(treeitemflair.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(treeitemflair, detaching); + } + }; +} +function create_if_block18(ctx) { + let div; + let nestededgelist; + let current; + nestededgelist = new NestedEdgeList({ + props: { + sort: ( + /*sort*/ + ctx[4] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + show_attributes: ( + /*show_attributes*/ + ctx[3] + ), + show_node_options: ( + /*show_node_options*/ + ctx[2] + ), + tree: ( + /*item*/ + ctx[9].children + ) + } + }); + return { + c() { + div = element("div"); + create_component(nestededgelist.$$.fragment); + attr(div, "class", "tree-item-children"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(nestededgelist, div, null); + current = true; + }, + p(ctx2, dirty) { + const nestededgelist_changes = {}; + if (dirty & /*sort*/ + 16) + nestededgelist_changes.sort = /*sort*/ + ctx2[4]; + if (dirty & /*plugin*/ + 1) + nestededgelist_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*show_attributes*/ + 8) + nestededgelist_changes.show_attributes = /*show_attributes*/ + ctx2[3]; + if (dirty & /*show_node_options*/ + 4) + nestededgelist_changes.show_node_options = /*show_node_options*/ + ctx2[2]; + if (dirty & /*tree, sort*/ + 18) + nestededgelist_changes.tree = /*item*/ + ctx2[9].children; + nestededgelist.$set(nestededgelist_changes); + }, + i(local) { + if (current) + return; + transition_in(nestededgelist.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(nestededgelist.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_component(nestededgelist); + } + }; +} +function create_each_block11(ctx) { + var _a; + let details; + let summary; + let t0; + let div; + let edgelink; + let t1; + let t2; + let t3; + let current; + let mounted; + let dispose; + let if_block0 = ( + /*item*/ + ctx[9].children.length && create_if_block_25(ctx) + ); + edgelink = new EdgeLink_default({ + props: { + plugin: ( + /*plugin*/ + ctx[0] + ), + edge: ( + /*item*/ + ctx[9].edge + ), + show_node_options: ( + /*show_node_options*/ + ctx[2] + ), + cls: "tree-item-inner-text" + } + }); + let if_block1 = ( + /*show_attributes*/ + ((_a = ctx[3]) == null ? void 0 : _a.length) && create_if_block_18(ctx) + ); + let if_block2 = ( + /*item*/ + ctx[9].children.length && create_if_block18(ctx) + ); + function details_toggle_handler() { + ctx[8].call( + details, + /*i*/ + ctx[11] + ); + } + return { + c() { + details = element("details"); + summary = element("summary"); + if (if_block0) + if_block0.c(); + t0 = space(); + div = element("div"); + create_component(edgelink.$$.fragment); + t1 = space(); + if (if_block1) + if_block1.c(); + t2 = space(); + if (if_block2) + if_block2.c(); + t3 = space(); + attr(div, "class", "tree-item-inner"); + attr(summary, "class", "tree-item-self is-clickable flex items-center"); + attr(details, "class", "tree-item"); + }, + m(target, anchor) { + insert(target, details, anchor); + append(details, summary); + if (if_block0) + if_block0.m(summary, null); + append(summary, t0); + append(summary, div); + mount_component(edgelink, div, null); + append(summary, t1); + if (if_block1) + if_block1.m(summary, null); + append(details, t2); + if (if_block2) + if_block2.m(details, null); + append(details, t3); + details.open = /*opens*/ + ctx[5][ + /*i*/ + ctx[11] + ]; + current = true; + if (!mounted) { + dispose = listen(details, "toggle", details_toggle_handler); + mounted = true; + } + }, + p(new_ctx, dirty) { + var _a2; + ctx = new_ctx; + if ( + /*item*/ + ctx[9].children.length + ) { + if (if_block0) { + if_block0.p(ctx, dirty); + if (dirty & /*tree, sort*/ + 18) { + transition_in(if_block0, 1); + } + } else { + if_block0 = create_if_block_25(ctx); + if_block0.c(); + transition_in(if_block0, 1); + if_block0.m(summary, t0); + } + } else if (if_block0) { + group_outros(); + transition_out(if_block0, 1, 1, () => { + if_block0 = null; + }); + check_outros(); + } + const edgelink_changes = {}; + if (dirty & /*plugin*/ + 1) + edgelink_changes.plugin = /*plugin*/ + ctx[0]; + if (dirty & /*tree, sort*/ + 18) + edgelink_changes.edge = /*item*/ + ctx[9].edge; + if (dirty & /*show_node_options*/ + 4) + edgelink_changes.show_node_options = /*show_node_options*/ + ctx[2]; + edgelink.$set(edgelink_changes); + if ( + /*show_attributes*/ + (_a2 = ctx[3]) == null ? void 0 : _a2.length + ) { + if (if_block1) { + if_block1.p(ctx, dirty); + if (dirty & /*show_attributes*/ + 8) { + transition_in(if_block1, 1); + } + } else { + if_block1 = create_if_block_18(ctx); + if_block1.c(); + transition_in(if_block1, 1); + if_block1.m(summary, null); + } + } else if (if_block1) { + group_outros(); + transition_out(if_block1, 1, 1, () => { + if_block1 = null; + }); + check_outros(); + } + if ( + /*item*/ + ctx[9].children.length + ) { + if (if_block2) { + if_block2.p(ctx, dirty); + if (dirty & /*tree, sort*/ + 18) { + transition_in(if_block2, 1); + } + } else { + if_block2 = create_if_block18(ctx); + if_block2.c(); + transition_in(if_block2, 1); + if_block2.m(details, t3); + } + } else if (if_block2) { + group_outros(); + transition_out(if_block2, 1, 1, () => { + if_block2 = null; + }); + check_outros(); + } + if (dirty & /*opens*/ + 32) { + details.open = /*opens*/ + ctx[5][ + /*i*/ + ctx[11] + ]; + } + }, + i(local) { + if (current) + return; + transition_in(if_block0); + transition_in(edgelink.$$.fragment, local); + transition_in(if_block1); + transition_in(if_block2); + current = true; + }, + o(local) { + transition_out(if_block0); + transition_out(edgelink.$$.fragment, local); + transition_out(if_block1); + transition_out(if_block2); + current = false; + }, + d(detaching) { + if (detaching) { + detach(details); + } + if (if_block0) + if_block0.d(); + destroy_component(edgelink); + if (if_block1) + if_block1.d(); + if (if_block2) + if_block2.d(); + mounted = false; + dispose(); + } + }; +} +function create_fragment52(ctx) { + let each_1_anchor; + let current; + let each_value = ensure_array_like( + /*tree*/ + ctx[1].sort( + /*func*/ + ctx[7] + ) + ); + let each_blocks = []; + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block11(get_each_context11(ctx, each_value, i)); + } + const out = (i) => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + return { + c() { + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + each_1_anchor = empty(); + }, + m(target, anchor) { + for (let i = 0; i < each_blocks.length; i += 1) { + if (each_blocks[i]) { + each_blocks[i].m(target, anchor); + } + } + insert(target, each_1_anchor, anchor); + current = true; + }, + p(ctx2, [dirty]) { + if (dirty & /*opens, sort, plugin, show_attributes, show_node_options, tree*/ + 63) { + each_value = ensure_array_like( + /*tree*/ + ctx2[1].sort( + /*func*/ + ctx2[7] + ) + ); + let i; + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context11(ctx2, each_value, i); + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block11(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } + group_outros(); + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + check_outros(); + } + }, + i(local) { + if (current) + return; + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + current = false; + }, + d(detaching) { + if (detaching) { + detach(each_1_anchor); + } + destroy_each(each_blocks, detaching); + } + }; +} +function instance52($$self, $$props, $$invalidate) { + let { plugin } = $$props; + let { tree } = $$props; + let { open_signal } = $$props; + let { show_node_options } = $$props; + let { show_attributes } = $$props; + let { sort } = $$props; + let opens = tree.map(() => true); + const func = (a, b) => sort(a.edge, b.edge); + function details_toggle_handler(i) { + opens[i] = this.open; + $$invalidate(5, opens), $$invalidate(6, open_signal); + } + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + if ("tree" in $$props2) + $$invalidate(1, tree = $$props2.tree); + if ("open_signal" in $$props2) + $$invalidate(6, open_signal = $$props2.open_signal); + if ("show_node_options" in $$props2) + $$invalidate(2, show_node_options = $$props2.show_node_options); + if ("show_attributes" in $$props2) + $$invalidate(3, show_attributes = $$props2.show_attributes); + if ("sort" in $$props2) + $$invalidate(4, sort = $$props2.sort); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*open_signal, opens*/ + 96) { + $: + if (open_signal === true) { + $$invalidate(5, opens = opens.map(() => true)); + $$invalidate(6, open_signal = null); + } else if (open_signal === false) { + $$invalidate(5, opens = opens.map(() => false)); + $$invalidate(6, open_signal = null); + } + } + }; + return [ + plugin, + tree, + show_node_options, + show_attributes, + sort, + opens, + open_signal, + func, + details_toggle_handler + ]; +} +var NestedEdgeList = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance52, create_fragment52, safe_not_equal, { + plugin: 0, + tree: 1, + open_signal: 6, + show_node_options: 2, + show_attributes: 3, + sort: 4 + }); + } +}; +var NestedEdgeList_default = NestedEdgeList; + +// src/components/codeblocks/CodeblockTree.svelte +function create_if_block_19(ctx) { + let h3; + let t_value = ( + /*options*/ + ctx[1].title + "" + ); + let t; + return { + c() { + h3 = element("h3"); + t = text(t_value); + attr(h3, "class", "BC-codeblock-tree-title"); + }, + m(target, anchor) { + insert(target, h3, anchor); + append(h3, t); + }, + p(ctx2, dirty) { + if (dirty & /*options*/ + 2 && t_value !== (t_value = /*options*/ + ctx2[1].title + "")) + set_data(t, t_value); + }, + d(detaching) { + if (detaching) { + detach(h3); + } + } + }; +} +function create_else_block11(ctx) { + let p; + return { + c() { + p = element("p"); + p.textContent = "No paths found"; + attr(p, "class", "search-empty-state"); + }, + m(target, anchor) { + insert(target, p, anchor); + }, + p: noop, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(p); + } + } + }; +} +function create_if_block19(ctx) { + var _a; + let div2; + let div0; + let copytoclipboardbutton; + let t; + let div1; + let nestededgelist; + let current; + copytoclipboardbutton = new CopyToClipboardButton_default({ + props: { + cls: "clickable-icon nav-action-button", + text: ListIndex.edge_tree_to_list_index( + /*tree*/ + ctx[3], + { + .../*plugin*/ + ctx[0].settings.commands.list_index.default_options, + show_attributes: ( + /*options*/ + (_a = ctx[1]["show-attributes"]) != null ? _a : [] + ) + } + ) + } + }); + nestededgelist = new NestedEdgeList_default({ + props: { + sort: ( + /*sort*/ + ctx[4] + ), + tree: ( + /*tree*/ + ctx[3] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + show_node_options: ( + /*show_node_options*/ + ctx[5] + ), + open_signal: !/*options*/ + ctx[1].collapse, + show_attributes: ( + /*options*/ + ctx[1]["show-attributes"] + ) + } + }); + return { + c() { + div2 = element("div"); + div0 = element("div"); + create_component(copytoclipboardbutton.$$.fragment); + t = space(); + div1 = element("div"); + create_component(nestededgelist.$$.fragment); + attr(div0, "class", "absolute bottom-2 right-2 flex"); + attr(div1, "class", "pr-10"); + attr(div2, "class", "BC-codeblock-tree-items relative"); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, div0); + mount_component(copytoclipboardbutton, div0, null); + append(div2, t); + append(div2, div1); + mount_component(nestededgelist, div1, null); + current = true; + }, + p(ctx2, dirty) { + var _a2; + const copytoclipboardbutton_changes = {}; + if (dirty & /*tree, plugin, options*/ + 11) + copytoclipboardbutton_changes.text = ListIndex.edge_tree_to_list_index( + /*tree*/ + ctx2[3], + { + .../*plugin*/ + ctx2[0].settings.commands.list_index.default_options, + show_attributes: ( + /*options*/ + (_a2 = ctx2[1]["show-attributes"]) != null ? _a2 : [] + ) + } + ); + copytoclipboardbutton.$set(copytoclipboardbutton_changes); + const nestededgelist_changes = {}; + if (dirty & /*tree*/ + 8) + nestededgelist_changes.tree = /*tree*/ + ctx2[3]; + if (dirty & /*plugin*/ + 1) + nestededgelist_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*options*/ + 2) + nestededgelist_changes.open_signal = !/*options*/ + ctx2[1].collapse; + if (dirty & /*options*/ + 2) + nestededgelist_changes.show_attributes = /*options*/ + ctx2[1]["show-attributes"]; + nestededgelist.$set(nestededgelist_changes); + }, + i(local) { + if (current) + return; + transition_in(copytoclipboardbutton.$$.fragment, local); + transition_in(nestededgelist.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(copytoclipboardbutton.$$.fragment, local); + transition_out(nestededgelist.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div2); + } + destroy_component(copytoclipboardbutton); + destroy_component(nestededgelist); + } + }; +} +function create_fragment53(ctx) { + let div; + let codeblockerrors; + let t0; + let t1; + let current_block_type_index; + let if_block1; + let current; + codeblockerrors = new CodeblockErrors_default({ + props: { + plugin: ( + /*plugin*/ + ctx[0] + ), + errors: ( + /*errors*/ + ctx[2] + ) + } + }); + let if_block0 = ( + /*options*/ + ctx[1].title && create_if_block_19(ctx) + ); + const if_block_creators = [create_if_block19, create_else_block11]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*tree*/ + ctx2[3].length + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + div = element("div"); + create_component(codeblockerrors.$$.fragment); + t0 = space(); + if (if_block0) + if_block0.c(); + t1 = space(); + if_block1.c(); + attr(div, "class", "BC-codeblock-tree"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(codeblockerrors, div, null); + append(div, t0); + if (if_block0) + if_block0.m(div, null); + append(div, t1); + if_blocks[current_block_type_index].m(div, null); + current = true; + }, + p(ctx2, [dirty]) { + const codeblockerrors_changes = {}; + if (dirty & /*plugin*/ + 1) + codeblockerrors_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*errors*/ + 4) + codeblockerrors_changes.errors = /*errors*/ + ctx2[2]; + codeblockerrors.$set(codeblockerrors_changes); + if ( + /*options*/ + ctx2[1].title + ) { + if (if_block0) { + if_block0.p(ctx2, dirty); + } else { + if_block0 = create_if_block_19(ctx2); + if_block0.c(); + if_block0.m(div, t1); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block1 = if_blocks[current_block_type_index]; + if (!if_block1) { + if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block1.c(); + } else { + if_block1.p(ctx2, dirty); + } + transition_in(if_block1, 1); + if_block1.m(div, null); + } + }, + i(local) { + if (current) + return; + transition_in(codeblockerrors.$$.fragment, local); + transition_in(if_block1); + current = true; + }, + o(local) { + transition_out(codeblockerrors.$$.fragment, local); + transition_out(if_block1); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div); + } + destroy_component(codeblockerrors); + if (if_block0) + if_block0.d(); + if_blocks[current_block_type_index].d(); + } + }; +} +function instance53($$self, $$props, $$invalidate) { + let source_path; + let $active_file_store; + component_subscribe($$self, active_file_store, ($$value) => $$invalidate(8, $active_file_store = $$value)); + var _a; + let { plugin } = $$props; + let { options } = $$props; + let { errors } = $$props; + let { file_path } = $$props; + const sort = get_edge_sorter( + // @ts-expect-error: ts(2345) + options.sort, + plugin.graph + ); + const { show_node_options } = plugin.settings.views.codeblocks; + let tree = []; + const update2 = () => { + $$invalidate(3, tree = get_tree()); + }; + const base_traversal = (attr2) => Traverse.build_tree(plugin.graph, source_path, { max_depth: options.depth[1] }, (e) => has_edge_attrs(e, Object.assign(Object.assign({}, attr2), { + $or_target_ids: options["dataview-from-paths"] + }))); + const edge_field_labels = (_a = options.fields) !== null && _a !== void 0 ? _a : plugin.settings.edge_fields.map((f) => f.label); + const get_tree = () => { + if (source_path && plugin.graph.hasNode(source_path)) { + const traversal = options["merge-fields"] ? base_traversal({ $or_fields: options.fields }) : edge_field_labels.flatMap((field) => base_traversal({ field })); + return options.flat ? Traverse.flatten_tree(traversal).map((item) => ({ depth: 0, children: [], edge: item.edge })) : traversal; + } else { + return []; + } + }; + onMount(update2); + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + if ("options" in $$props2) + $$invalidate(1, options = $$props2.options); + if ("errors" in $$props2) + $$invalidate(2, errors = $$props2.errors); + if ("file_path" in $$props2) + $$invalidate(6, file_path = $$props2.file_path); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*file_path, $active_file_store*/ + 320) { + $: + source_path = file_path ? file_path : $active_file_store ? $active_file_store.path : ""; + } + }; + return [ + plugin, + options, + errors, + tree, + sort, + show_node_options, + file_path, + update2, + $active_file_store + ]; +} +var CodeblockTree = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance53, create_fragment53, safe_not_equal, { + plugin: 0, + options: 1, + errors: 2, + file_path: 6, + update: 7 + }); + } + get update() { + return this.$$.ctx[7]; + } +}; +var CodeblockTree_default = CodeblockTree; + +// src/codeblocks/MDRC.ts +var CodeblockMDRC = class extends import_obsidian27.MarkdownRenderChild { + constructor(plugin, containerEl, source, file_path) { + super(containerEl); + this.plugin = plugin; + this.source = source; + this.file_path = file_path; + this.id = window.crypto.randomUUID(); + } + async update() { + log.debug("CodeblockMDRC.update"); + if (this.component) { + try { + this.component.update(); + } catch (e) { + log.error("CodeblockMDRC.update error >", e); + } + } + } + async onload() { + const timer_outer = new Timer(); + log.debug("CodeblockMDRC.load"); + Codeblocks.register(this); + this.containerEl.empty(); + const timer_inner = new Timer(); + const { parsed, errors } = Codeblocks.parse_source(this.source, { + edge_fields: this.plugin.settings.edge_fields, + field_groups: this.plugin.settings.edge_field_groups + }); + log.debug(timer_inner.elapsedMessage("Codeblocks.parse_source", true)); + if (!parsed) { + log.warn("fatal codeblock errors", errors); + new CodeblockErrors_default({ + target: this.containerEl, + props: { errors, plugin: this.plugin } + }); + return; + } + const { options, file_path } = Codeblocks.postprocess_options( + this.file_path, + parsed, + errors, + this.plugin + ); + log.debug("resolved codeblock options", options); + log.debug( + timer_inner.elapsedMessage("Codeblocks.postprocess_options", true) + ); + if (errors.length) + log.warn("non-fatal codeblock errors", errors); + if (options.type === "tree") { + this.component = new CodeblockTree_default({ + target: this.containerEl, + props: { + errors, + options, + file_path, + plugin: this.plugin } }); - depth++; - } else { - adjList.push({ - id: visits[currNode], - name: currNode, - parentId: 999999999, - depth + } else if (options.type === "mermaid") { + this.component = new CodeblockMermaid_default({ + target: this.containerEl, + props: { + errors, + options, + file_path, + plugin: this.plugin + } }); - depth = 1; - visits[currNode]++; + } else if (options.type === "markmap") { + this.component = new CodeblockMarkmap_default({ + target: this.containerEl, + props: { + errors, + options, + file_path, + plugin: this.plugin + } + }); + } else { + log.error("CodeblockMDRC unknown type", options.type); } + log.debug(timer_inner.elapsedMessage("component creation", true)); + log.debug(timer_outer.elapsedMessage("CodeblockMDRC.onload")); } - adjList.push({ - id: 999999999, - name: "CONTAINER", - parentId: void 0, - depth: 0 - }); - const maxDepth = adjList.sort((a2, b) => a2.depth - b.depth).last().depth; - adjList.forEach((item) => item.height = maxDepth - item.depth); - console.log({ visits }); - return adjList; + onunload() { + var _a; + log.debug("CodeblockMDRC.unload"); + Codeblocks.unregister(this); + (_a = this.component) == null ? void 0 : _a.$destroy(); + } +}; + +// src/commands/init.ts +var import_obsidian34 = require("obsidian"); + +// src/components/input/SimpleInput.svelte +function create_if_block20(ctx) { + let label_1; + let t; + return { + c() { + label_1 = element("label"); + t = text( + /*label*/ + ctx[0] + ); + attr(label_1, "for", "input"); + }, + m(target, anchor) { + insert(target, label_1, anchor); + append(label_1, t); + }, + p(ctx2, dirty) { + if (dirty & /*label*/ + 1) + set_data( + t, + /*label*/ + ctx2[0] + ); + }, + d(detaching) { + if (detaching) { + detach(label_1); + } + } + }; } -var stratify = stratify_default().id(function(d) { - console.log({ d }); - return d.name; -}).parentId(function(d) { - return d.parentId; -}); -var VisModal8 = class extends import_obsidian43.Modal { - constructor(plugin) { +function create_fragment54(ctx) { + let div; + let t0; + let input; + let t1; + let button; + let t2; + let button_disabled_value; + let mounted; + let dispose; + let if_block = ( + /*label*/ + ctx[0] && create_if_block20(ctx) + ); + return { + c() { + div = element("div"); + if (if_block) + if_block.c(); + t0 = space(); + input = element("input"); + t1 = space(); + button = element("button"); + t2 = text("Submit"); + attr(input, "name", "input"); + attr(input, "type", "text"); + button.disabled = button_disabled_value = /*disabled_cb*/ + ctx[1]( + /*value*/ + ctx[2] + ); + attr(div, "class", "flex flex-col gap-1"); + }, + m(target, anchor) { + insert(target, div, anchor); + if (if_block) + if_block.m(div, null); + append(div, t0); + append(div, input); + set_input_value( + input, + /*value*/ + ctx[2] + ); + append(div, t1); + append(div, button); + append(button, t2); + if (!mounted) { + dispose = [ + listen( + input, + "input", + /*input_input_handler*/ + ctx[4] + ), + listen( + button, + "click", + /*click_handler*/ + ctx[5] + ) + ]; + mounted = true; + } + }, + p(ctx2, [dirty]) { + if ( + /*label*/ + ctx2[0] + ) { + if (if_block) { + if_block.p(ctx2, dirty); + } else { + if_block = create_if_block20(ctx2); + if_block.c(); + if_block.m(div, t0); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + if (dirty & /*value*/ + 4 && input.value !== /*value*/ + ctx2[2]) { + set_input_value( + input, + /*value*/ + ctx2[2] + ); + } + if (dirty & /*disabled_cb, value*/ + 6 && button_disabled_value !== (button_disabled_value = /*disabled_cb*/ + ctx2[1]( + /*value*/ + ctx2[2] + ))) { + button.disabled = button_disabled_value; + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(div); + } + if (if_block) + if_block.d(); + mounted = false; + run_all(dispose); + } + }; +} +function instance54($$self, $$props, $$invalidate) { + let { label = "" } = $$props; + let { disabled_cb = (_value) => false } = $$props; + let value = ""; + const dispatch = createEventDispatcher(); + function input_input_handler() { + value = this.value; + $$invalidate(2, value); + } + const click_handler = () => dispatch("submit", value); + $$self.$$set = ($$props2) => { + if ("label" in $$props2) + $$invalidate(0, label = $$props2.label); + if ("disabled_cb" in $$props2) + $$invalidate(1, disabled_cb = $$props2.disabled_cb); + }; + return [label, disabled_cb, value, dispatch, input_input_handler, click_handler]; +} +var SimpleInput = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance54, create_fragment54, safe_not_equal, { label: 0, disabled_cb: 1 }); + } +}; +var SimpleInput_default = SimpleInput; + +// src/modals/CreateListIndexModal.ts +var import_obsidian28 = require("obsidian"); +var CreateListIndexModal = class extends import_obsidian28.Modal { + constructor(app, plugin) { super(app); + this.active_file = get_store_value(active_file_store); this.plugin = plugin; - this.modal = this; + this.options = plugin.settings.commands.list_index.default_options; } onOpen() { - new import_obsidian43.Notice( - "Alot of these features may not work, it is still very experimental." - ); - const { contentEl } = this; - contentEl.empty(); - new VisComp_default({ + if (!this.active_file) { + new import_obsidian28.Notice("No active file"); + return this.close(); + } + const { contentEl, plugin } = this; + contentEl.createEl("h2", { + text: "Create List Index" + }); + new FieldGroupLabelsSettingItem_default({ target: contentEl, props: { - modal: this + field_group_labels: this.options.field_group_labels, + edge_field_groups: plugin.settings.edge_field_groups + } + }).$on("select", (e) => { + this.options.field_group_labels = e.detail; + this.options.fields = resolve_field_group_labels( + plugin.settings.edge_field_groups, + this.options.field_group_labels + ); + }); + new_setting(contentEl, { + name: "Link Kind", + desc: "Format to use for links", + select: { + options: LINK_KINDS, + value: this.options.link_kind, + cb: (value) => this.options.link_kind = value } }); + new_setting(contentEl, { + name: "Indent", + desc: "Indentation to use for each level", + input: { + value: this.options.indent, + cb: (value) => this.options.indent = value + } + }); + new EdgeSortIdSettingItem_default({ + target: contentEl, + props: { edge_sort_id: this.options.edge_sort_id } + }).$on("select", (e) => { + this.options.edge_sort_id = e.detail; + }); + new ShowAttributesSettingItem_default({ + target: contentEl, + props: { show_attributes: this.options.show_attributes } + }).$on("select", (e) => { + this.options.show_attributes = e.detail; + }); + _add_settings_show_node_options( + plugin, + contentEl, + { + get: () => this.options.show_node_options, + set: (value) => this.options.show_node_options = value + }, + { save_and_refresh: false } + ); + new import_obsidian28.Setting(contentEl).addButton( + (btn) => btn.setButtonText("Build & Copy to Clipboard").setCta().onClick(async () => { + log.debug("build_list_index options", this.options); + const list_index = ListIndex.build( + plugin.graph, + this.active_file.path, + this.options + ); + if (list_index) { + await navigator.clipboard.writeText(list_index); + new import_obsidian28.Notice("List index copied to clipboard"); + } else { + new import_obsidian28.Notice("No list items to copy"); + } + this.close(); + }) + ); } onClose() { this.contentEl.empty(); } }; -// src/main.ts -var BCPlugin = class extends import_obsidian44.Plugin { - constructor() { - super(...arguments); - this.visited = []; - this.activeLeafChange = void 0; - this.layoutChange = void 0; - this.loadSettings = async () => this.settings = Object.assign( - {}, - DEFAULT_SETTINGS, - await this.loadData() - ); - this.saveSettings = async () => await this.saveData(this.settings); +// src/modals/GenericModal.ts +var import_obsidian29 = require("obsidian"); +var GenericModal = class extends import_obsidian29.Modal { + constructor(app, cb) { + super(app); + this.cb = cb; } - registerActiveLeafChangeEvent() { - this.activeLeafChange = app.workspace.on( - "file-open", - async () => { - if (this.settings.refreshOnNoteChange) - await refreshIndex(this); - else { - const activeView = this.getActiveTYPEView(MATRIX_VIEW); - if (activeView) - await activeView.draw(); + onOpen() { + this.cb(this); + } + onClose() { + this.contentEl.empty(); + } +}; + +// src/commands/freeze_edges/index.ts +var import_obsidian31 = require("obsidian"); + +// src/utils/drop_crumb.ts +var import_obsidian30 = require("obsidian"); +var linkify_edge = (plugin, source_id, target_id, target_aliases) => { + const target_file = plugin.app.vault.getFileByPath(target_id); + if (!target_file) { + return `[[${Paths.drop_ext(target_id)}]]`; + } else { + return plugin.app.fileManager.generateMarkdownLink( + target_file, + source_id, + void 0, + target_aliases == null ? void 0 : target_aliases.at(0) + ); + } +}; +var drop_crumbs = async (plugin, destination_file, crumbs, options) => { + var _a, _b; + if (!crumbs.length) + return; + const links_by_field = group_projection( + group_by(crumbs, (e) => e.attr.field), + (edges) => edges.map( + (e) => linkify_edge( + plugin, + e.source_id, + e.target_id, + e.target_attr.aliases + ) + ) + ); + switch (options.destination) { + case "frontmatter": { + let mutated = false; + const frontmatter = (_b = (_a = plugin.app.metadataCache.getFileCache(destination_file)) == null ? void 0 : _a.frontmatter) != null ? _b : {}; + Object.entries(links_by_field).forEach(([field, links]) => { + if (!(links == null ? void 0 : links.length)) + return; + const existing = frontmatter[field]; + if (existing) { + const existing_array = ensure_is_array(existing); + const new_links = remove_duplicates( + existing_array.concat(links) + ); + if (new_links.length !== existing_array.length) { + mutated = true; + frontmatter[field] = new_links; + } + } else { + mutated = true; + frontmatter[field] = links; } + }); + if (mutated) { + await plugin.app.fileManager.processFrontMatter( + destination_file, + (old_frontmatter) => { + const new_frontmatter = Object.assign( + old_frontmatter, + frontmatter + ); + log.debug( + "drop_crumbs > processed frontmatter", + new_frontmatter + ); + } + ); } + break; + } + case "dataview-inline": { + const dataview_fields = Object.entries(links_by_field).map(([field, links]) => { + if (!(links == null ? void 0 : links.length)) + return ""; + else + return `${field}:: ${links.join(", ")}`; + }).filter(Boolean); + await plugin.app.vault.process(destination_file, (content) => { + content += "\n\n" + dataview_fields.join("\n"); + return content; + }); + break; + } + case "none": { + break; + } + } +}; + +// src/commands/freeze_edges/index.ts +var freeze_implied_edges_to_note = async (plugin, source_file, options) => { + const implied_edges = plugin.graph.get_out_edges(source_file.path).filter( + (e) => ( + // Don't freeze a note to itself (self_is_sibling) + !is_self_loop(e) && !e.attr.explicit && // If field === null, we don't have an opposite field to freeze to + e.attr.field !== null + ) + ); + await drop_crumbs(plugin, source_file, implied_edges, options); +}; + +// src/commands/jump/index.ts +var import_obsidian32 = require("obsidian"); +var jump_to_neighbour = async (plugin, options) => { + const active_file = get_store_value(active_file_store); + if (!active_file) + return; + const matches = plugin.graph.get_out_edges(active_file.path).filter( + (e) => has_edge_attrs(e, options.attr) && e.target_id !== active_file.path + ); + if (!matches.length) { + new import_obsidian32.Notice( + `No matches found with attributes: ${url_search_params(options.attr)}` + ); + return; + } else { + await plugin.app.workspace.openLinkText( + matches[0].target_id, + active_file.path ); - this.registerEvent(this.activeLeafChange); } - registerLayoutChangeEvent() { - this.layoutChange = app.workspace.on("layout-change", async () => { - if (this.settings.showBCs) - await drawTrail(this); - }); - this.registerEvent(this.layoutChange); +}; + +// src/commands/stats/index.ts +var get_graph_stats = (graph, data) => { + var _a, _b; + const stats = { + nodes: { + resolved: {} + }, + edges: { + round: {}, + field: {}, + group: {}, + source: {}, + explicit: {}, + implied_kind: {} + } + }; + for (const node of graph.nodeEntries()) { + const resolved = String(node.attributes.resolved); + stats.nodes.resolved[resolved] = (stats.nodes.resolved[resolved] || 0) + 1; } - async onload() { - console.log("loading breadcrumbs plugin"); - await this.loadSettings(); - this.addSettingTab(new BCSettingTab(this)); - this.db = new Debugger(this); - const { settings } = this; - const { - fieldSuggestor, - enableRelationSuggestor, - openMatrixOnLoad, - openDuckOnLoad, - openDownOnLoad, - showBCs, - userHiers - } = settings; - if (fieldSuggestor) - this.registerEditorSuggest(new FieldSuggestor(this)); - if (enableRelationSuggestor) - this.registerEditorSuggest(new RelationSuggestor(this)); - if (settings.limitTrailCheckboxes.length === 0) - settings.limitTrailCheckboxes = getFields(settings.userHiers); - if (typeof settings.showAll === "boolean") - settings.showAll = settings.showAll ? "All" : "Shortest"; - this.VIEWS = [ - { - plain: "Matrix", - type: MATRIX_VIEW, - constructor: MatrixView, - openOnLoad: openMatrixOnLoad - }, - { - plain: "Duck", - type: DUCK_VIEW, - constructor: DucksView, - openOnLoad: openDuckOnLoad - }, - { - plain: "Down", - type: TREE_VIEW, - constructor: TreeView, - openOnLoad: openDownOnLoad + for (const { attributes: attr2 } of graph.edgeEntries()) { + stats.edges.field[(_a = attr2.field) != null ? _a : "null"] = (stats.edges.field[(_b = attr2.field) != null ? _b : "null"] || 0) + 1; + data.groups.forEach((group) => { + if (group.fields.includes(attr2.field)) { + stats.edges.group[group.label] = (stats.edges.group[group.label] || 0) + 1; } - ]; - for (const { constructor, type: type2 } of this.VIEWS) { - this.registerView( - type2, - (leaf) => ( - //@ts-ignore - new constructor(leaf, this) - ) + }); + const explicit = String(attr2.explicit); + stats.edges.explicit[explicit] = (stats.edges.explicit[explicit] || 0) + 1; + if (attr2.explicit) { + stats.edges.source[attr2.source] = (stats.edges.source[attr2.source] || 0) + 1; + } else { + stats.edges.implied_kind[attr2.implied_kind] = (stats.edges.implied_kind[attr2.implied_kind] || 0) + 1; + const round = String(attr2.round); + stats.edges.round[round] = (stats.edges.round[round] || 0) + 1; + } + } + return stats; +}; + +// src/commands/thread/index.ts +var import_obsidian33 = require("obsidian"); +var thread = async (plugin, attr2, options) => { + var _a, _b; + const active_view = plugin.app.workspace.getActiveViewOfType(import_obsidian33.MarkdownView); + if (!active_view) + return; + const source_file = active_view.file; + if (!source_file) + return; + const template_data = { + attr: attr2, + source: { + path: source_file.path, + folder: (_b = (_a = source_file.parent) == null ? void 0 : _a.path) != null ? _b : "", + basename: source_file.basename + } + }; + log.info("template_data", template_data); + const target_path = Paths.normalise( + Paths.ensure_ext( + resolve_templates(options.target_path_template, template_data), + "md" + ) + ); + log.debug("thread > target_path", target_path); + let target_file = null; + try { + target_file = await plugin.app.vault.create(target_path, ""); + } catch (error) { + const msg = `Error creating file "${target_path}". ${error instanceof Error ? error.message : error}`; + new import_obsidian33.Notice(msg); + log.error(msg); + return; + } + await drop_crumbs( + plugin, + source_file, + [ + { + attr: attr2, + target_id: target_path, + source_id: source_file.path, + target_attr: { aliases: [] } + } + ], + options + ); + await Promise.all([ + // Let the cache update so that the refresh sees the new file + // NOTE: I half-completed a less-flaky solution by listening to app.metadataCache.on("changed", ...) + // But this only works if Dataview isn't enabled, and I couldn't find the correct event to listen to for Dataview + sleep(500), + active_view.leaf.openFile(target_file) + ]); + await plugin.refresh(); +}; + +// src/commands/init.ts +var init_all_commands = (plugin) => { + plugin.addCommand({ + id: "breadcrumbs:rebuild-graph", + name: "Rebuild graph", + callback: async () => await plugin.refresh() + }); + Object.keys(VIEW_IDS).forEach((view_id) => { + plugin.addCommand({ + id: `breadcrumbs:open-${view_id}-view`, + name: `Open ${view_id} view`, + callback: () => plugin.activateView(VIEW_IDS[view_id]) + }); + }); + plugin.addCommand({ + id: "breadcrumbs:create-list-index", + name: "Create list index", + callback: () => { + new CreateListIndexModal(plugin.app, plugin).open(); + } + }); + plugin.addCommand({ + id: "breadcrumbs:graph-stats", + name: "Show/Copy graph stats", + callback: async () => { + const stats = get_graph_stats(plugin.graph, { + groups: plugin.settings.edge_field_groups + }); + log.feat("Graph stats >", stats); + await navigator.clipboard.writeText(JSON.stringify(stats, null, 2)); + new import_obsidian34.Notice( + "Graph stats printed to console and copied to clipboard" ); } - (0, import_obsidian44.addIcon)(DUCK_ICON, DUCK_ICON_SVG); - (0, import_obsidian44.addIcon)(TRAIL_ICON, TRAIL_ICON_SVG); - this.addRibbonIcon( - addFeatherIcon("tv"), - "Breadcrumbs Visualisation", - () => new VisModal8(this).open() - ); - await waitForCache(this); - this.mainG = await buildMainG(this); - this.closedG = buildClosedG(this); - app.workspace.onLayoutReady(async () => { - var _a; - const noFiles = app.vault.getMarkdownFiles().length; - if (((_a = this.mainG) == null ? void 0 : _a.nodes().length) < noFiles) { - await wait(3e3); - this.mainG = await buildMainG(this); - this.closedG = buildClosedG(this); + }); + plugin.addCommand({ + id: "breadcrumbs:freeze-implied-edges-to-note", + name: "Freeze implied edges to note", + callback: async () => { + const active_file = get_store_value(active_file_store); + if (!active_file) + return; + await freeze_implied_edges_to_note( + plugin, + active_file, + plugin.settings.commands.freeze_implied_edges.default_options + ); + new import_obsidian34.Notice("Implied edges frozen to note"); + } + }); + plugin.addCommand({ + id: "breadcrumbs:freeze-implied-edges-to-vault", + name: "Freeze implied edges to all notes in vault", + callback: async () => { + if (!confirm( + "Are you sure you want to freeze implied edges to all notes in vault? This will write to all notes that have outgoing implied edges." + )) { + return new import_obsidian34.Notice("Command cancelled"); } - for (const { openOnLoad, type: type2, constructor } of this.VIEWS) - if (openOnLoad) - await openView(type2, constructor); - if (showBCs) - await drawTrail(this); - this.registerActiveLeafChangeEvent(); - this.registerLayoutChangeEvent(); - const saveCommandDefinition = app.commands.commands["editor:save-file"]; - const save = saveCommandDefinition == null ? void 0 : saveCommandDefinition.callback; - if (typeof save === "function") { - saveCommandDefinition.callback = async () => { - await save(); - if (this.settings.refreshOnNoteSave) { - await refreshIndex(this); - const activeView = this.getActiveTYPEView(MATRIX_VIEW); - if (activeView) - await activeView.draw(); + const PROMPT_TARGET = "FREEZE TO VAULT"; + new GenericModal(plugin.app, (modal) => { + new SimpleInput_default({ + target: modal.contentEl, + props: { + label: `Type '${PROMPT_TARGET}' to confirm`, + disabled_cb: (value) => value !== PROMPT_TARGET } - }; - } - app.workspace.iterateAllLeaves((leaf) => { - if (leaf instanceof import_obsidian44.MarkdownView) - leaf.view.previewMode.rerender(true); - }); + }).$on("submit", async (e) => { + if (e.detail !== PROMPT_TARGET) { + new import_obsidian34.Notice("Command cancelled"); + } else { + const timer = new Timer(); + const notice = new import_obsidian34.Notice( + "Freezing implied edges to all notes in vault..." + ); + await Promise.all( + plugin.app.vault.getMarkdownFiles().map( + (file) => freeze_implied_edges_to_note( + plugin, + file, + plugin.settings.commands.freeze_implied_edges.default_options + ) + ) + ); + log.debug( + `freeze-implied-edges-to-vault > took ${timer.elapsed_str()}ms` + ); + notice.setMessage( + `Implied edges frozen to all notes in ${timer.elapsed_str()}ms` + ); + } + modal.close(); + }); + }).open(); + } + }); + plugin.settings.edge_field_groups.forEach((group) => { + plugin.addCommand({ + id: `breadcrumbs:jump-to-first-neighbour-group:${group.label}`, + name: `Jump to first neighbour by group:${group.label}`, + callback: () => jump_to_neighbour(plugin, { + attr: { $or_fields: group.fields } + }) }); - for (const { type: type2, plain, constructor } of this.VIEWS) { - this.addCommand({ - id: `show-${type2}-view`, - name: `Open ${plain} View`, - //@ts-ignore - checkCallback: async (checking) => { - if (checking) - return app.workspace.getLeavesOfType(type2).length === 0; - await openView(type2, constructor); + }); + plugin.settings.edge_fields.forEach(({ label }) => { + plugin.addCommand({ + id: `breadcrumbs:thread-field:${label}`, + name: `Thread by field:${label}`, + callback: () => thread( + plugin, + { field: label }, + plugin.settings.commands.thread.default_options + ) + }); + }); +}; + +// src/interfaces/settings.ts +var OLD_DIRECTIONS = ["up", "down", "same", "prev", "next"]; + +// src/settings/migration.ts +var get_opposite_direction = (dir) => { + switch (dir) { + case "up": + return "down"; + case "down": + return "up"; + case "same": + return "same"; + case "next": + return "prev"; + case "prev": + return "next"; + } +}; +var migrate_old_settings = (settings) => { + const old = settings; + if (old.userHiers && old.impliedRelations) { + const implied_relationships = { + opposite_direction: { + rounds: 1 + }, + self_is_sibling: { + rounds: Number(old.impliedRelations.siblingIdentity) + }, + cousin_is_sibling: { + rounds: Number(old.impliedRelations.cousinsIsSibling) + }, + same_parent_is_sibling: { + rounds: Number(old.impliedRelations.sameParentIsSibling) + }, + same_sibling_is_sibling: { + rounds: Number(old.impliedRelations.siblingsSiblingIsSibling) + }, + siblings_parent_is_parent: { + rounds: Number(old.impliedRelations.siblingsParentIsParent) + }, + parents_sibling_is_parent: { + rounds: Number(old.impliedRelations.parentsSiblingsIsParents) + } + }; + old.hierarchies = old.userHiers.map((hierarchy) => ({ + dirs: OLD_DIRECTIONS.reduce( + (acc, dir) => ({ + ...acc, + [dir]: hierarchy[dir] + }), + {} + ), + implied_relationships + })); + delete old.userHiers; + delete old.impliedRelations; + } + if (old.hierarchies) { + OLD_DIRECTIONS.forEach((dir) => { + const fields = old.hierarchies.flatMap((hier) => hier.dirs[dir]).filter(Boolean); + const label = `${dir}s`; + const existing = settings.edge_field_groups.find( + (group) => group.label === label + ); + if (existing) { + existing.fields.push(...fields); + existing.fields = remove_duplicates(existing.fields); + } else { + settings.edge_field_groups.push({ label, fields }); + } + }); + old.hierarchies.forEach((hier, hier_i) => { + Object.values(hier.dirs).flatMap((fields) => fields).filter(Boolean).forEach((label) => { + if (!settings.edge_fields.find( + (field) => field.label === label + )) { + settings.edge_fields.push({ label }); } }); + Object.entries(hier.implied_relationships).forEach( + ([rel, { rounds }]) => { + if (!rounds) + return; + const fields = { + up: hier.dirs.up[0], + same: hier.dirs.same[0], + down: hier.dirs.down[0], + next: hier.dirs.next[0], + prev: hier.dirs.prev[0] + }; + switch (rel) { + case "opposite_direction": { + OLD_DIRECTIONS.forEach((dir) => { + const field = fields[dir]; + const close_field = fields[get_opposite_direction(dir)]; + if (!field || !close_field) + return; + settings.implied_relations.transitive.push({ + rounds, + name: "", + close_field, + chain: [{ field }], + close_reversed: true + }); + }); + break; + } + case "cousin_is_sibling": { + if (!fields.up || !fields.same || !fields.down) { + return; + } + settings.implied_relations.transitive.push({ + rounds, + name: "", + chain: [ + { field: fields.up }, + { field: fields.same }, + { field: fields.down } + ], + close_reversed: false, + close_field: fields.same + }); + break; + } + case "same_parent_is_sibling": { + if (!fields.up || !fields.down || !fields.down) { + return; + } + settings.implied_relations.transitive.push({ + rounds, + name: "", + chain: [ + { field: fields.up }, + { field: fields.down } + ], + close_reversed: false, + close_field: fields.same + }); + break; + } + case "same_sibling_is_sibling": { + if (!fields.same) + return; + settings.implied_relations.transitive.push({ + rounds, + name: "", + chain: [ + { field: fields.same }, + { field: fields.same } + ], + close_reversed: false, + close_field: fields.same + }); + break; + } + case "siblings_parent_is_parent": { + if (!fields.up || !fields.same) + return; + settings.implied_relations.transitive.push({ + rounds, + name: "", + chain: [ + { field: fields.same }, + { field: fields.up } + ], + close_reversed: false, + close_field: fields.up + }); + break; + } + case "parents_sibling_is_parent": { + if (!fields.up || !fields.same) + return; + settings.implied_relations.transitive.push({ + rounds, + name: "", + chain: [ + { field: fields.up }, + { field: fields.same } + ], + close_reversed: false, + close_field: fields.up + }); + break; + } + } + } + ); + }); + delete old.hierarchies; + settings.edge_field_groups = remove_duplicates_by( + settings.edge_field_groups, + (group) => group.label + ); + } + if (old.custom_implied_relations) { + old.custom_implied_relations.transitive.forEach((rel) => { + settings.implied_relations.transitive.push({ + ...rel, + name: "", + close_reversed: false + }); + }); + delete old.custom_implied_relations; + } + settings.implied_relations.transitive = remove_duplicates_by( + settings.implied_relations.transitive, + stringify_transitive_relation + ); + if (old.tagNoteField !== void 0) { + settings.explicit_edge_sources.tag_note.default_field = old.tagNoteField; + delete old.tagNoteField; + } + if (old.hierarchyNotes !== void 0 && old.hierarchyNoteIsParent !== void 0 && old.HNUpField !== void 0) { + if (old.hierarchyNotes.length > 0) { + const msg = `DEPRECATED: The central Hierarchy Notes setting is deprecated in favour of the "${META_ALIAS["list-note-field"]}" field in each hierarchy note.`; + log.warn(msg); } - this.addCommand({ - id: "open-vis-modal", - name: "Open Visualisation Modal", - callback: () => new VisModal8(this).open() - }); - this.addCommand({ - id: "manipulate-hierarchy-notes", - name: "Adjust Hierarchy Notes", - callback: () => new HierarchyNoteSelectorModal(this).open() - }); - this.addCommand({ - id: "Refresh-Breadcrumbs-Index", - name: "Refresh Breadcrumbs Index", - callback: async () => await refreshIndex(this) - }); - this.addCommand({ - id: "Toggle-trail-in-Edit&LP", - name: "Toggle: Show Trail/Grid in Edit & LP mode", - callback: async () => { - settings.showBCsInEditLPMode = !settings.showBCsInEditLPMode; - await this.saveSettings(); - await drawTrail(this); + delete old.HNUpField; + delete old.hierarchyNotes; + delete old.hierarchyNoteIsParent; + } + if (old.addDendronNotes !== void 0 && old.dendronNoteField !== void 0 && old.trimDendronNotes !== void 0 && old.dendronNoteDelimiter !== void 0) { + settings.explicit_edge_sources.dendron_note = { + enabled: old.addDendronNotes, + default_field: old.dendronNoteField, + delimiter: old.dendronNoteDelimiter, + display_trimmed: old.trimDendronNotes + }; + delete old.addDendronNotes; + delete old.dendronNoteField; + delete old.trimDendronNotes; + delete old.dendronNoteDelimiter; + } + if (old.addDateNotes !== void 0 && old.dateNoteField !== void 0 && old.dateNoteFormat !== void 0) { + settings.explicit_edge_sources.date_note = { + ...DEFAULT_SETTINGS.explicit_edge_sources.date_note, + enabled: old.addDateNotes, + default_field: old.dateNoteField, + date_format: old.dateNoteFormat + }; + delete old.addDateNotes; + delete old.dateNoteField; + delete old.dateNoteFormat; + } + if (old.respectReadableLineLength !== void 0) { + settings.views.page.all.readable_line_width = old.respectReadableLineLength; + delete old.respectReadableLineLength; + } + if (old.showBCs !== void 0) { + settings.views.page.trail.enabled = old.showBCs; + delete old.showBCs; + } + if (old.showGrid !== void 0) { + settings.views.page.trail.format = old.showGrid ? "grid" : "path"; + delete old.showGrid; + } + if (old.gridDefaultDepth !== void 0) { + settings.views.page.trail.default_depth = old.gridDefaultDepth; + delete old.gridDefaultDepth; + } + if (old.noPathMessage !== void 0) { + settings.views.page.trail.no_path_message = old.noPathMessage; + delete old.noPathMessage; + } + if (old.showPrevNext !== void 0) { + settings.views.page.prev_next.enabled = old.showPrevNext; + delete old.showPrevNext; + } + if (old.views.side.tree.default_dir !== void 0) { + delete old.views.side.tree.default_dir; + } + if (settings.codeblocks !== void 0) { + settings.views.codeblocks = settings.codeblocks; + delete settings.codeblocks; + } + if (old.showRefreshNotice !== void 0 && old.refreshOnNoteSave !== void 0 && old.refreshOnNoteChange !== void 0) { + settings.commands.rebuild_graph.notify = old.showRefreshNotice; + settings.commands.rebuild_graph.trigger = { + note_save: old.refreshOnNoteSave, + layout_change: old.refreshOnNoteChange + }; + delete old.showRefreshNotice; + delete old.refreshOnNoteSave; + delete old.refreshOnNoteChange; + } + if (old.wikilinkIndex !== void 0 && old.aliasesInIndex !== void 0 && old.createIndexIndent !== void 0) { + settings.commands.list_index.default_options = { + ...settings.commands.list_index.default_options, + indent: old.createIndexIndent, + link_kind: old.wikilinkIndex ? "wiki" : "none", + show_node_options: { + ...ListIndex.DEFAULT_OPTIONS.show_node_options, + alias: old.aliasesInIndex } + }; + delete settings.commands.list_index.default_options.dir; + delete old.wikilinkIndex; + delete old.aliasesInIndex; + delete old.createIndexIndent; + } + if (old.writeBCsInline !== void 0) { + settings.commands.freeze_implied_edges.default_options.destination = old.writeBCsInline ? "dataview-inline" : "frontmatter"; + delete old.writeBCsInline; + } + if (old.threadingTemplate !== void 0) { + settings.commands.thread.default_options.target_path_template = old.threadingTemplate; + delete old.threadingTemplate; + } + if (old.threadUnderCursor !== void 0) { + settings.commands.thread.default_options.destination = old.threadUnderCursor ? "dataview-inline" : "frontmatter"; + delete old.threadUnderCursor; + } + if (old.enableRelationSuggestor !== void 0) { + settings.suggestors.edge_field.enabled = old.enableRelationSuggestor; + delete old.enableRelationSuggestor; + } + if (old.relSuggestorTrigger !== void 0) { + settings.suggestors.edge_field.trigger = old.relSuggestorTrigger; + delete old.relSuggestorTrigger; + } + if (old.suggestors.hierarchy_field !== void 0) { + settings.suggestors.edge_field = old.suggestors.hierarchy_field; + delete old.suggestors.hierarchy_field; + } + if (old.alphaSortAsc !== void 0) { + delete old.alphaSortAsc; + } + if (old.debugMode) { + delete old.debugMode; + } + if (old.dvWaitTime !== void 0) { + delete old.dvWaitTime; + } + if (old.fieldSuggestor !== void 0) { + delete old.fieldSuggestor; + } + if (old.filterImpliedSiblingsOfDifferentTypes !== void 0) { + delete old.filterImpliedSiblingsOfDifferentTypes; + } + if (old.jugglLayout !== void 0) { + delete old.jugglLayout; + } + return settings; +}; + +// src/suggestor/edge_fields.ts +var import_obsidian35 = require("obsidian"); +var EdgeFieldSuggestor = class extends import_obsidian35.EditorSuggest { + constructor(plugin) { + super(plugin.app); + this.getSuggestions = ({ query }) => this.plugin.settings.edge_fields.map((f) => f.label).filter((field) => field.includes(query)); + this.plugin = plugin; + } + onTrigger(cursor, editor, _file) { + const { trigger } = this.plugin.settings.suggestors.edge_field; + const sub = editor.getLine(cursor.line).substring(0, cursor.ch); + if (!sub.startsWith(trigger)) + return null; + const query = sub.slice(trigger.length); + return { + query, + end: cursor, + start: { ch: 0, line: cursor.line } + }; + } + renderSuggestion(suggestion, el) { + el.createDiv({ text: suggestion }); + } + selectSuggestion(suggestion) { + if (!this.context) + return; + const { start, end, editor } = this.context; + editor.replaceRange(suggestion + ":: [[", start, end); + } +}; + +// src/views/tree.ts +var import_obsidian36 = require("obsidian"); + +// src/components/side_views/TreeView.svelte +function create_else_block12(ctx) { + let div; + return { + c() { + div = element("div"); + div.textContent = "No paths found"; + attr(div, "class", "search-empty-state"); + }, + m(target, anchor) { + insert(target, div, anchor); + }, + p: noop, + i: noop, + o: noop, + d(detaching) { + if (detaching) { + detach(div); + } + } + }; +} +function create_if_block21(ctx) { + let nestededgelist; + let current; + nestededgelist = new NestedEdgeList_default({ + props: { + sort: ( + /*sort*/ + ctx[7] + ), + tree: ( + /*tree*/ + ctx[6] + ), + plugin: ( + /*plugin*/ + ctx[0] + ), + show_attributes: ( + /*show_attributes*/ + ctx[4] + ), + show_node_options: ( + /*show_node_options*/ + ctx[8] + ), + open_signal: !/*collapse*/ + ctx[5] + } + }); + return { + c() { + create_component(nestededgelist.$$.fragment); + }, + m(target, anchor) { + mount_component(nestededgelist, target, anchor); + current = true; + }, + p(ctx2, dirty) { + const nestededgelist_changes = {}; + if (dirty & /*sort*/ + 128) + nestededgelist_changes.sort = /*sort*/ + ctx2[7]; + if (dirty & /*tree*/ + 64) + nestededgelist_changes.tree = /*tree*/ + ctx2[6]; + if (dirty & /*plugin*/ + 1) + nestededgelist_changes.plugin = /*plugin*/ + ctx2[0]; + if (dirty & /*show_attributes*/ + 16) + nestededgelist_changes.show_attributes = /*show_attributes*/ + ctx2[4]; + if (dirty & /*collapse*/ + 32) + nestededgelist_changes.open_signal = !/*collapse*/ + ctx2[5]; + nestededgelist.$set(nestededgelist_changes); + }, + i(local) { + if (current) + return; + transition_in(nestededgelist.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(nestededgelist.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(nestededgelist, detaching); + } + }; +} +function create_key_block6(ctx) { + let current_block_type_index; + let if_block; + let if_block_anchor; + let current; + const if_block_creators = [create_if_block21, create_else_block12]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*tree*/ + ctx2[6].length + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, -1); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if_blocks[current_block_type_index].m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx2, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + if_block.p(ctx2, dirty); + } + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + }, + i(local) { + if (current) + return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(if_block_anchor); + } + if_blocks[current_block_type_index].d(detaching); + } + }; +} +function create_fragment55(ctx) { + let div3; + let div1; + let div0; + let rebuildgraphbutton; + let t0; + let edgesortidselector; + let updating_edge_sort_id; + let t1; + let showattributesselectormenu; + let updating_show_attributes; + let t2; + let chevroncollapsebutton; + let updating_collapse; + let t3; + let mergefieldsbutton; + let updating_merge_fields; + let t4; + let fieldgrouplabelsselector; + let updating_field_group_labels; + let t5; + let div2; + let previous_key = ( + /*tree*/ + ctx[6] || /*sort*/ + ctx[7] + ); + let current; + rebuildgraphbutton = new RebuildGraphButton_default({ + props: { + cls: "clickable-icon nav-action-button", + plugin: ( + /*plugin*/ + ctx[0] + ) + } + }); + function edgesortidselector_edge_sort_id_binding(value) { + ctx[11](value); + } + let edgesortidselector_props = { + cls: "clickable-icon nav-action-button", + exclude_fields: [] + }; + if ( + /*edge_sort_id*/ + ctx[1] !== void 0 + ) { + edgesortidselector_props.edge_sort_id = /*edge_sort_id*/ + ctx[1]; + } + edgesortidselector = new EdgeSortIdSelector_default({ props: edgesortidselector_props }); + binding_callbacks.push(() => bind(edgesortidselector, "edge_sort_id", edgesortidselector_edge_sort_id_binding)); + function showattributesselectormenu_show_attributes_binding(value) { + ctx[12](value); + } + let showattributesselectormenu_props = { cls: "clickable-icon nav-action-button" }; + if ( + /*show_attributes*/ + ctx[4] !== void 0 + ) { + showattributesselectormenu_props.show_attributes = /*show_attributes*/ + ctx[4]; + } + showattributesselectormenu = new ShowAttributesSelectorMenu_default({ props: showattributesselectormenu_props }); + binding_callbacks.push(() => bind(showattributesselectormenu, "show_attributes", showattributesselectormenu_show_attributes_binding)); + function chevroncollapsebutton_collapse_binding(value) { + ctx[13](value); + } + let chevroncollapsebutton_props = { cls: "clickable-icon nav-action-button" }; + if ( + /*collapse*/ + ctx[5] !== void 0 + ) { + chevroncollapsebutton_props.collapse = /*collapse*/ + ctx[5]; + } + chevroncollapsebutton = new ChevronCollapseButton_default({ props: chevroncollapsebutton_props }); + binding_callbacks.push(() => bind(chevroncollapsebutton, "collapse", chevroncollapsebutton_collapse_binding)); + function mergefieldsbutton_merge_fields_binding(value) { + ctx[14](value); + } + let mergefieldsbutton_props = { cls: "clickable-icon nav-action-button" }; + if ( + /*merge_fields*/ + ctx[2] !== void 0 + ) { + mergefieldsbutton_props.merge_fields = /*merge_fields*/ + ctx[2]; + } + mergefieldsbutton = new MergeFieldsButton_default({ props: mergefieldsbutton_props }); + binding_callbacks.push(() => bind(mergefieldsbutton, "merge_fields", mergefieldsbutton_merge_fields_binding)); + function fieldgrouplabelsselector_field_group_labels_binding(value) { + ctx[15](value); + } + let fieldgrouplabelsselector_props = { + cls: "clickable-icon nav-action-button", + edge_field_groups: ( + /*plugin*/ + ctx[0].settings.edge_field_groups + ) + }; + if ( + /*field_group_labels*/ + ctx[3] !== void 0 + ) { + fieldgrouplabelsselector_props.field_group_labels = /*field_group_labels*/ + ctx[3]; + } + fieldgrouplabelsselector = new FieldGroupLabelsSelector_default({ props: fieldgrouplabelsselector_props }); + binding_callbacks.push(() => bind(fieldgrouplabelsselector, "field_group_labels", fieldgrouplabelsselector_field_group_labels_binding)); + let key_block = create_key_block6(ctx); + return { + c() { + div3 = element("div"); + div1 = element("div"); + div0 = element("div"); + create_component(rebuildgraphbutton.$$.fragment); + t0 = space(); + create_component(edgesortidselector.$$.fragment); + t1 = space(); + create_component(showattributesselectormenu.$$.fragment); + t2 = space(); + create_component(chevroncollapsebutton.$$.fragment); + t3 = space(); + create_component(mergefieldsbutton.$$.fragment); + t4 = space(); + create_component(fieldgrouplabelsselector.$$.fragment); + t5 = space(); + div2 = element("div"); + key_block.c(); + attr(div0, "class", "nav-buttons-container"); + attr(div1, "class", "nav-header"); + attr(div2, "class", "BC-tree-view-items"); + attr(div3, "class", "markdown-rendered BC-tree-view"); + }, + m(target, anchor) { + insert(target, div3, anchor); + append(div3, div1); + append(div1, div0); + mount_component(rebuildgraphbutton, div0, null); + append(div0, t0); + mount_component(edgesortidselector, div0, null); + append(div0, t1); + mount_component(showattributesselectormenu, div0, null); + append(div0, t2); + mount_component(chevroncollapsebutton, div0, null); + append(div0, t3); + mount_component(mergefieldsbutton, div0, null); + append(div0, t4); + mount_component(fieldgrouplabelsselector, div0, null); + append(div3, t5); + append(div3, div2); + key_block.m(div2, null); + current = true; + }, + p(ctx2, [dirty]) { + const rebuildgraphbutton_changes = {}; + if (dirty & /*plugin*/ + 1) + rebuildgraphbutton_changes.plugin = /*plugin*/ + ctx2[0]; + rebuildgraphbutton.$set(rebuildgraphbutton_changes); + const edgesortidselector_changes = {}; + if (!updating_edge_sort_id && dirty & /*edge_sort_id*/ + 2) { + updating_edge_sort_id = true; + edgesortidselector_changes.edge_sort_id = /*edge_sort_id*/ + ctx2[1]; + add_flush_callback(() => updating_edge_sort_id = false); + } + edgesortidselector.$set(edgesortidselector_changes); + const showattributesselectormenu_changes = {}; + if (!updating_show_attributes && dirty & /*show_attributes*/ + 16) { + updating_show_attributes = true; + showattributesselectormenu_changes.show_attributes = /*show_attributes*/ + ctx2[4]; + add_flush_callback(() => updating_show_attributes = false); + } + showattributesselectormenu.$set(showattributesselectormenu_changes); + const chevroncollapsebutton_changes = {}; + if (!updating_collapse && dirty & /*collapse*/ + 32) { + updating_collapse = true; + chevroncollapsebutton_changes.collapse = /*collapse*/ + ctx2[5]; + add_flush_callback(() => updating_collapse = false); + } + chevroncollapsebutton.$set(chevroncollapsebutton_changes); + const mergefieldsbutton_changes = {}; + if (!updating_merge_fields && dirty & /*merge_fields*/ + 4) { + updating_merge_fields = true; + mergefieldsbutton_changes.merge_fields = /*merge_fields*/ + ctx2[2]; + add_flush_callback(() => updating_merge_fields = false); + } + mergefieldsbutton.$set(mergefieldsbutton_changes); + const fieldgrouplabelsselector_changes = {}; + if (dirty & /*plugin*/ + 1) + fieldgrouplabelsselector_changes.edge_field_groups = /*plugin*/ + ctx2[0].settings.edge_field_groups; + if (!updating_field_group_labels && dirty & /*field_group_labels*/ + 8) { + updating_field_group_labels = true; + fieldgrouplabelsselector_changes.field_group_labels = /*field_group_labels*/ + ctx2[3]; + add_flush_callback(() => updating_field_group_labels = false); + } + fieldgrouplabelsselector.$set(fieldgrouplabelsselector_changes); + if (dirty & /*tree, sort*/ + 192 && safe_not_equal(previous_key, previous_key = /*tree*/ + ctx2[6] || /*sort*/ + ctx2[7])) { + group_outros(); + transition_out(key_block, 1, 1, noop); + check_outros(); + key_block = create_key_block6(ctx2); + key_block.c(); + transition_in(key_block, 1); + key_block.m(div2, null); + } else { + key_block.p(ctx2, dirty); + } + }, + i(local) { + if (current) + return; + transition_in(rebuildgraphbutton.$$.fragment, local); + transition_in(edgesortidselector.$$.fragment, local); + transition_in(showattributesselectormenu.$$.fragment, local); + transition_in(chevroncollapsebutton.$$.fragment, local); + transition_in(mergefieldsbutton.$$.fragment, local); + transition_in(fieldgrouplabelsselector.$$.fragment, local); + transition_in(key_block); + current = true; + }, + o(local) { + transition_out(rebuildgraphbutton.$$.fragment, local); + transition_out(edgesortidselector.$$.fragment, local); + transition_out(showattributesselectormenu.$$.fragment, local); + transition_out(chevroncollapsebutton.$$.fragment, local); + transition_out(mergefieldsbutton.$$.fragment, local); + transition_out(fieldgrouplabelsselector.$$.fragment, local); + transition_out(key_block); + current = false; + }, + d(detaching) { + if (detaching) { + detach(div3); + } + destroy_component(rebuildgraphbutton); + destroy_component(edgesortidselector); + destroy_component(showattributesselectormenu); + destroy_component(chevroncollapsebutton); + destroy_component(mergefieldsbutton); + destroy_component(fieldgrouplabelsselector); + key_block.d(detaching); + } + }; +} +function instance55($$self, $$props, $$invalidate) { + let sort; + let edge_field_labels; + let tree; + let $active_file_store; + component_subscribe($$self, active_file_store, ($$value) => $$invalidate(10, $active_file_store = $$value)); + let { plugin } = $$props; + let { edge_sort_id, merge_fields, show_attributes, show_node_options, field_group_labels, collapse } = plugin.settings.views.side.tree; + const base_traversal = (attr2) => Traverse.build_tree( + plugin.graph, + $active_file_store.path, + // TODO: Customisable max depth + { max_depth: 20 }, + (edge) => has_edge_attrs(edge, attr2) + ); + function edgesortidselector_edge_sort_id_binding(value) { + edge_sort_id = value; + $$invalidate(1, edge_sort_id); + } + function showattributesselectormenu_show_attributes_binding(value) { + show_attributes = value; + $$invalidate(4, show_attributes); + } + function chevroncollapsebutton_collapse_binding(value) { + collapse = value; + $$invalidate(5, collapse); + } + function mergefieldsbutton_merge_fields_binding(value) { + merge_fields = value; + $$invalidate(2, merge_fields); + } + function fieldgrouplabelsselector_field_group_labels_binding(value) { + field_group_labels = value; + $$invalidate(3, field_group_labels); + } + $$self.$$set = ($$props2) => { + if ("plugin" in $$props2) + $$invalidate(0, plugin = $$props2.plugin); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*edge_sort_id, plugin*/ + 3) { + $: + $$invalidate(7, sort = get_edge_sorter(edge_sort_id, plugin.graph)); + } + if ($$self.$$.dirty & /*plugin, field_group_labels*/ + 9) { + $: + $$invalidate(9, edge_field_labels = resolve_field_group_labels(plugin.settings.edge_field_groups, field_group_labels)); + } + if ($$self.$$.dirty & /*$active_file_store, plugin, merge_fields, edge_field_labels*/ + 1541) { + $: + $$invalidate(6, tree = $active_file_store && plugin.graph.hasNode($active_file_store.path) ? merge_fields ? base_traversal({ $or_fields: edge_field_labels }) : edge_field_labels.flatMap((field) => base_traversal({ field })) : []); + } + }; + return [ + plugin, + edge_sort_id, + merge_fields, + field_group_labels, + show_attributes, + collapse, + tree, + sort, + show_node_options, + edge_field_labels, + $active_file_store, + edgesortidselector_edge_sort_id_binding, + showattributesselectormenu_show_attributes_binding, + chevroncollapsebutton_collapse_binding, + mergefieldsbutton_merge_fields_binding, + fieldgrouplabelsselector_field_group_labels_binding + ]; +} +var TreeView = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance55, create_fragment55, safe_not_equal, { plugin: 0 }); + } +}; +var TreeView_default = TreeView; + +// src/views/tree.ts +var TreeView2 = class extends import_obsidian36.ItemView { + constructor(leaf, plugin) { + super(leaf); + this.icon = "tree-pine"; + this.plugin = plugin; + } + getViewType() { + return VIEW_IDS.tree; + } + getDisplayText() { + return "Tree view"; + } + async onOpen() { + const container = this.containerEl.children[1]; + container.empty(); + this.component = new TreeView_default({ + target: this.contentEl, + props: { plugin: this.plugin } }); - this.addCommand({ - id: "Write-Breadcrumbs-to-Current-File", - name: "Write Breadcrumbs to Current File", - callback: async () => await writeBCToFile(this) + } + async onClose() { + var _a; + (_a = this.component) == null ? void 0 : _a.$destroy(); + } +}; + +// src/main.ts +var BreadcrumbsPlugin = class extends import_obsidian37.Plugin { + constructor() { + super(...arguments); + this.graph = new BCGraph(); + /** rebuild_graph, then react by updating active_file_store and redrawing page_views. + * Optionally disable any of these steps. + */ + this.refresh = async (options) => { + if ((options == null ? void 0 : options.rebuild_graph) !== false) { + const timer = new Timer(); + const notice = this.settings.commands.rebuild_graph.notify ? new import_obsidian37.Notice("Rebuilding graph") : null; + const rebuild_results = await rebuild_graph(this); + this.graph = rebuild_results.graph; + const explicit_edge_errors = rebuild_results.explicit_edge_results.filter((result) => result.errors.length).reduce( + (acc, { source, errors }) => { + acc[source] = errors; + return acc; + }, + {} + ); + const implied_edge_results = Object.fromEntries( + Object.entries(rebuild_results.implied_edge_results).filter(([_, errors]) => errors.length).map(([implied_kind, errors]) => [implied_kind, errors]) + ); + if (Object.keys(explicit_edge_errors).length) { + log.warn("explicit_edge_errors >", explicit_edge_errors); + } + if (Object.keys(implied_edge_results).length) { + log.warn("implied_edge_results >", implied_edge_results); + } + notice == null ? void 0 : notice.setMessage( + [ + `Rebuilt graph in ${timer.elapsed_str()}ms`, + explicit_edge_errors.length ? "\nExplicit edge errors (see console for details):" : null, + ...Object.entries(explicit_edge_errors).map( + ([source, errors]) => `- ${source}: ${errors.length} errors` + ), + implied_edge_results.length ? "\nImplied edge errors (see console for details):" : null, + ...Object.entries(implied_edge_results).map( + ([implied_kind, errors]) => `- ${implied_kind}: ${errors.length} errors` + ) + ].filter(Boolean).join("\n") + ); + } + if ((options == null ? void 0 : options.active_file_store) !== false) { + active_file_store.refresh(this.app); + } + if ((options == null ? void 0 : options.redraw_page_views) !== false) { + redraw_page_views(this); + } + if ((options == null ? void 0 : options.redraw_codeblocks) !== false) { + Codeblocks.update_all(); + } + if ((options == null ? void 0 : options.redraw_side_views) === true) { + this.app.workspace.getLeavesOfType(VIEW_IDS.matrix).forEach((leaf) => { + leaf.view.onOpen(); + }); + this.app.workspace.getLeavesOfType(VIEW_IDS.tree).forEach((leaf) => { + leaf.view.onOpen(); + }); + } + }; + } + async onload() { + var _a, _b; + await this.loadSettings(); + log.set_level(this.settings.debug.level); + log.info( + `loading plugin "${this.manifest.name}" plugin v${this.manifest.version}` + ); + log.debug("settings >", this.settings); + this.settings = migrate_old_settings(this.settings); + await this.saveSettings(); + try { + const all_properties = this.app.metadataTypeManager.getAllProperties(); + for (const field of this.settings.edge_fields) { + if (((_a = all_properties[field.label]) == null ? void 0 : _a.type) === "multitext") + continue; + this.app.metadataTypeManager.setType(field.label, "multitext"); + } + for (const [field, { property_type }] of Object.entries( + METADATA_FIELDS_MAP + )) { + if (((_b = all_properties[field]) == null ? void 0 : _b.type) === property_type) + continue; + this.app.metadataTypeManager.setType(field, property_type); + } + } catch (error) { + log.error("metadataTypeManager.setType error >", error); + } + this.addSettingTab(new BreadcrumbsSettingTab(this.app, this)); + this.api = new BCAPI(this); + window.BCAPI = this.api; + this.register( + // @ts-ignore: Don't want to make it optional, but still delete on unload + () => delete window.BCAPI + ); + this.registerHoverLinkSource("breadcrumbs", { + defaultMod: true, + display: "Breadcrumbs" }); - this.addCommand({ - id: "Write-Breadcrumbs-to-All-Files", - name: "Write Breadcrumbs to **ALL** Files", - callback: async () => await writeBCsToAllFiles(this) - }); - this.addCommand({ - id: "local-index", - name: "Copy a Local Index to the clipboard", - callback: async () => await copyLocalIndex(this) - }); - this.addCommand({ - id: "global-index", - name: "Copy a Global Index to the clipboard", - callback: async () => await copyGlobalIndex(this) - }); - ["up", "down", "next", "prev"].forEach((dir) => { - this.addCommand({ - id: `jump-to-first-${dir}`, - name: `Jump to first '${dir}'`, - callback: async () => await jumpToFirstDir(this, dir) - }); - }); - getFields(userHiers).forEach((field) => { - this.addCommand({ - id: `new-file-with-curr-as-${field}`, - name: `Create a new '${field}' from the current note`, - callback: async () => await thread(this, field) - }); + if (this.settings.suggestors.edge_field.enabled) { + this.registerEditorSuggest(new EdgeFieldSuggestor(this)); + } + this.app.workspace.onLayoutReady(async () => { + log.debug("on:layout-ready"); + await dataview_plugin.await_if_enabled(this); + if (this.app.metadataCache.initialized) { + log.debug("metadataCache:initialized"); + await this.refresh(); + } else { + const metadatacache_init_event = this.app.metadataCache.on( + "initialized", + async () => { + log.debug("on:metadatacache-initialized"); + await this.refresh(); + this.app.metadataCache.offref(metadatacache_init_event); + } + ); + } + this.registerEvent( + this.app.workspace.on("layout-change", async () => { + log.debug("on:layout-change"); + await this.refresh({ + rebuild_graph: this.settings.commands.rebuild_graph.trigger.layout_change + }); + }) + ); + this.registerEvent( + this.app.workspace.on("active-leaf-change", async (leaf) => { + log.debug("on:active-leaf-change"); + if ((leaf == null ? void 0 : leaf.getViewState().type) !== "markdown") { + return; + } + this.refresh({ + rebuild_graph: false, + redraw_page_views: false + }); + }) + ); + this.registerEvent( + this.app.vault.on("create", (file) => { + log.debug("on:create >", file.path); + if (file instanceof import_obsidian37.TFile) { + this.graph.upsert_node(file.path, { resolved: true }); + } + }) + ); + this.registerEvent( + this.app.vault.on("rename", (file, old_path) => { + log.debug("on:rename >", old_path, "->", file.path); + if (file instanceof import_obsidian37.TFile) { + const res = this.graph.safe_rename_node( + old_path, + file.path + ); + if (!res.ok) { + log.error("safe_rename_node >", res.error.message); + } + } + }) + ); + this.registerEvent( + this.app.vault.on("delete", (file) => { + log.debug("on:delete >", file.path); + if (file instanceof import_obsidian37.TFile) { + this.graph.setNodeAttribute( + file.path, + "resolved", + false + ); + } + }) + ); + this.registerView( + VIEW_IDS.matrix, + (leaf) => new MatrixView(leaf, this) + ); + this.registerView( + VIEW_IDS.tree, + (leaf) => new TreeView2(leaf, this) + ); }); this.registerMarkdownCodeBlockProcessor( "breadcrumbs", - getCodeblockCB(this) + (source, el, ctx) => { + const mdrc = new CodeblockMDRC( + this, + el, + source, + ctx.sourcePath + ); + ctx.addChild(mdrc); + } ); - const jugglPlugin = getPlugin(app); - if (jugglPlugin) { - this.bcStore = new BCStore(this.mainG, app.metadataCache); - jugglPlugin.registerStore(this.bcStore); - } - this.api = new BCAPI(this); - (window[API_NAME] = this.api) && this.register(() => delete window[API_NAME]); - } - getActiveTYPEView(type2) { - const { constructor } = this.VIEWS.find((view) => view.type === type2); - const leaves = app.workspace.getLeavesOfType(type2); - if (leaves && leaves.length >= 1) { - const { view } = leaves[0]; - if (view instanceof constructor) - return view; - } - return null; + init_all_commands(this); + log.debug("loaded Breadcrumbs plugin"); } onunload() { - console.log("unloading"); - this.VIEWS.forEach(async (view) => { - app.workspace.getLeavesOfType(view.type).forEach((leaf) => { - leaf.detach(); - }); - }); - this.visited.forEach((visit) => visit[1].remove()); - if (this.bcStore) { - const jugglPlugin = getPlugin(app); - if (jugglPlugin) { - jugglPlugin.removeStore(this.bcStore); + } + async loadSettings() { + var _a; + this.settings = deep_merge_objects( + (_a = await this.loadData()) != null ? _a : {}, + DEFAULT_SETTINGS + ); + } + async saveSettings() { + this.settings.is_dirty = false; + await this.saveData(this.settings); + } + // SOURCE: https://docs.obsidian.md/Plugins/User+interface/Views + async activateView(view_id, options) { + const { workspace } = this.app; + let leaf = null; + const leaves = workspace.getLeavesOfType(view_id); + if (leaves.length > 0) { + leaf = leaves[0]; + } else { + leaf = (options == null ? void 0 : options.side) === "left" ? workspace.getLeftLeaf(false) : workspace.getRightLeaf(false); + if (!leaf) { + log.warn("activate_view > no leaf found"); + return; } + await leaf.setViewState({ type: view_id, active: true }); } + workspace.revealLeaf(leaf); } }; /*! Bundled license information: -feather-icons/dist/feather.js: - (*! - Copyright (c) 2016 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames - *) - -lodash/lodash.js: +lucide-svelte/dist/defaultAttributes.js: (** - * @license - * Lodash - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/arrow-down-wide-narrow.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/arrow-down.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/arrow-up-narrow-wide.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/arrow-up.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/check.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/chevron-down.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/chevron-right.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/chevrons-down-up.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/chevrons-up-down.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/clipboard.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/file-json.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/group.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/image.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/merge.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/pencil.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/plus.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/rotate-ccw.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/save.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/split.svelte: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/icons/index.js: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + *) + +lucide-svelte/dist/aliases.js: + (** + * @license lucide-svelte v0.360.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. *) */ diff --git a/.obsidian.mobile/plugins/breadcrumbs/manifest.json b/.obsidian.mobile/plugins/breadcrumbs/manifest.json index 570ea280..031bde4e 100644 --- a/.obsidian.mobile/plugins/breadcrumbs/manifest.json +++ b/.obsidian.mobile/plugins/breadcrumbs/manifest.json @@ -1,10 +1 @@ -{ - "id": "breadcrumbs", - "name": "Breadcrumbs", - "version": "3.6.11", - "minAppVersion": "0.15.2", - "description": "Visualise & navigate your vault's structure", - "author": "SkepticMystic", - "authorUrl": "https://github.com/SkepticMystic/breadcrumbs", - "isDesktopOnly": false -} +{"id":"breadcrumbs","name":"Breadcrumbs","version":"4.2.35-beta","minAppVersion":"1.0.0","description":"Add structured hierarchies to your notes","author":"SkepticMystic","authorUrl":"https://github.com/SkepticMystic/breadcrumbs","fundingUrl":"https://github.com/SkepticMystic/breadcrumbs#donations","helpUrl":"https://publish.obsidian.md/breadcrumbs-docs","isDesktopOnly":false} \ No newline at end of file diff --git a/.obsidian.mobile/plugins/breadcrumbs/styles.css b/.obsidian.mobile/plugins/breadcrumbs/styles.css index 25ed8a16..b6957c4b 100644 --- a/.obsidian.mobile/plugins/breadcrumbs/styles.css +++ b/.obsidian.mobile/plugins/breadcrumbs/styles.css @@ -1,113 +1 @@ -.BC-trail { - border: 1px solid var(--background-modifier-border); - border-radius: 5px; - padding: 5px; - margin-bottom: 5px !important; -} - -/* completely hides the trail when "no path found message" is left empty and no path is found */ -.BC-trail:empty { - display: none; -} - -.BC-matrix-square li { - text-align: left; -} - -/* ensure empty headers not leaving an element */ -.BC-Matrix .BC-Matrix-square .BC-Matrix-header:empty { - display: none; -} - -.internal-link.BC-Link { - color: var(--text-accent); -} - -.internal-link.BC-Link:hover { - color: var(--text-accent-hover, var(--text-accent)); -} - -.vis-view-options > * { - padding: 5px; -} - -/* Source: https://svelte.dev/repl/3153faf7584d40bd8ddebecf39f24ac1?version=3.41.0 */ -[data-tooltip] { - position: relative; - /* z-index: 2; */ - /* display: block; */ -} - -[data-tooltip]:before, -[data-tooltip]:after { - visibility: hidden; - opacity: 0; - pointer-events: none; - transition: 0.2s ease-out; - transform: translate(-50%, 5px); -} - -[data-tooltip]:before { - position: absolute; - top: 80%; - /* bottom: 100%; */ - left: 50%; - margin-bottom: 5px; - padding: 7px; - width: fit-content; - height: fit-content; - min-width: 200px; - min-height: 200px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - background-color: var(--background-primary); - color: var(--text-normal); - content: attr(data-tooltip); - text-align: center; - font-size: var(--font-medium); - line-height: 1.2; - transition: 0.2s ease-out; - white-space: pre-line; - z-index: 100; -} - -/* [data-tooltip]:after { - position: absolute; - top: 80%; - left: 50%; - width: 0; - border-top: 5px solid #000; - border-top: 5px solid hsla(0, 0%, 20%, 0.9); - border-right: 5px solid transparent; - border-left: 5px solid transparent; - background-color: red; - content: " "; - font-size: 0; - line-height: 0; -} */ - -[data-tooltip]:hover:before, -[data-tooltip]:hover:after { - visibility: visible; - opacity: 1; - transform: translate(-50%, 0); -} -[data-tooltip="false"]:hover:before, -[data-tooltip="false"]:hover:after { - visibility: hidden; - opacity: 0; -} - -.thread-dir-templates .setting-item-control { - display: flex; - flex-direction: column; -} - -.juggl-hide { - display: none; -} - -[data-type="BC-matrix"] div.view-content { - overflow: hidden !important; -} +.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.\!collapse{visibility:collapse!important}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.bottom-2{bottom:.5rem}.left-2{left:.5rem}.right-2{right:.5rem}.top-2{top:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-top:0;margin-bottom:0}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-1{margin-bottom:.25rem}.mb-4{margin-bottom:1rem}.block{display:block}.flex{display:flex}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-32{height:8rem}.w-10{width:2.5rem}.w-48{width:12rem}.w-60{width:15rem}.w-8{width:2rem}.w-full{width:100%}.shrink{flex-shrink:1}.grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.scroll-mt-40{scroll-margin-top:10rem}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-7{gap:1.75rem}.border{border-width:1px}.p-1{padding:.25rem}.p-2{padding:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-semibold{font-weight:600}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.BC-matrix-view hr:last-child{display:none}.BC-page-views.BC-page-views-sticky{z-index:50;position:sticky;top:calc(var(--file-margins)*-1);background-color:var(--background-primary)}.text-faint{color:var(--text-faint)}.text-warning{color:var(--text-warning)}.text-error{color:var(--text-error)} \ No newline at end of file diff --git a/.obsidian.mobile/plugins/cmdr/data.json b/.obsidian.mobile/plugins/cmdr/data.json new file mode 100644 index 00000000..fa2adf74 --- /dev/null +++ b/.obsidian.mobile/plugins/cmdr/data.json @@ -0,0 +1,36 @@ +{ + "confirmDeletion": true, + "showAddCommand": true, + "debug": false, + "editorMenu": [], + "fileMenu": [], + "leftRibbon": [ + { + "id": "calendar:show-calendar-view", + "icon": "calendar", + "name": "Open Calendar", + "mode": "any" + } + ], + "rightRibbon": [], + "titleBar": [], + "statusBar": [], + "pageHeader": [], + "macros": [], + "explorer": [], + "hide": { + "statusbar": [], + "leftRibbon": [] + }, + "spacing": 8, + "advancedToolbar": { + "rowHeight": 35, + "rowCount": 2, + "spacing": 0, + "buttonWidth": 40, + "columnLayout": true, + "mappedIcons": [], + "tooltips": false, + "heightOffset": 0 + } +} \ No newline at end of file diff --git a/.obsidian.mobile/plugins/cmdr/main.js b/.obsidian.mobile/plugins/cmdr/main.js new file mode 100644 index 00000000..253f3240 --- /dev/null +++ b/.obsidian.mobile/plugins/cmdr/main.js @@ -0,0 +1,9 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin (https://github.com/phibr0/obsidian-commander) +*/ + +var Oe=Object.defineProperty,Hn=Object.defineProperties,Rn=Object.getOwnPropertyDescriptor,zn=Object.getOwnPropertyDescriptors,On=Object.getOwnPropertyNames,ze=Object.getOwnPropertySymbols;var vo=Object.prototype.hasOwnProperty,$o=Object.prototype.propertyIsEnumerable;var Yo=(e,t,o)=>t in e?Oe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,Fe=(e,t)=>{for(var o in t||(t={}))vo.call(t,o)&&Yo(e,o,t[o]);if(ze)for(var o of ze(t))$o.call(t,o)&&Yo(e,o,t[o]);return e},Go=(e,t)=>Hn(e,zn(t));var Ko=(e,t)=>{var o={};for(var n in e)vo.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(e!=null&&ze)for(var n of ze(e))t.indexOf(n)<0&&$o.call(e,n)&&(o[n]=e[n]);return o};var Fn=(e,t)=>{for(var o in t)Oe(e,o,{get:t[o],enumerable:!0})},Vn=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of On(t))!vo.call(e,a)&&a!==o&&Oe(e,a,{get:()=>t[a],enumerable:!(n=Rn(t,a))||n.enumerable});return e};var Wn=e=>Vn(Oe({},"__esModule",{value:!0}),e);var Fa={};Fn(Fa,{default:()=>lo});module.exports=Wn(Fa);var Ve=require("obsidian");var Co=require("obsidian");var Qo={};var et={"Open Commander Settings":"Otev\u0159\xEDt nastaven\xED Commandera","Open Macro Builder":"Otev\u0159\xEDt tv\u016Frce Maker","Change Icon":"Zm\u011Bnit ikonu",Rename:"P\u0159ejmenovat",Delete:"Smazat","Add command":"P\u0159idat p\u0159\xEDkaz","Add new":"P\u0159idat nov\xFD","This Command seems to have been removed. {{command_name}}":"Tento p\u0159\xEDkaz se zd\xE1 b\xFDt odstran\u011Bn. {{command_name}}","Choose a Command to add":"Vyberte p\u0159\xEDkaz k p\u0159id\xE1n\xED","to navigate":"pro navigaci","to choose an icon":"pro v\xFDb\u011Br ikony","to cancel":"pro zru\u0161en\xED","Use a custom name":"Pou\u017E\xEDt vlastn\xED jm\xE9no","Choose a custom Name for your new Command":"Vyberte vlastn\xED jm\xE9no pro v\xE1\u0161 nov\xFD p\u0159\xEDkaz","to save":"pro ulo\u017Een\xED","Choose a Icon for your new Command":"Vyberte ikonu pro v\xE1\u0161 nov\xFD p\u0159\xEDkaz","to choose a custom icon":"pro v\xFDb\u011Br vlastn\xED ikony","Remove Command":"Odstranit p\u0159\xEDkaz","Double click to rename":"Pro p\u0159ejmenov\xE1n\xED dvakr\xE1t klikn\u011Bte","This device":"Toto za\u0159\xEDzen\xED","Added by {{plugin_name}}.":"P\u0159id\xE1no pomoc\xED {{plugin_name}}.","Warning: This is a checked Command, meaning it might not run under every circumstance.":"Varov\xE1n\xED: Tento p\u0159\xEDkaz je kontrolov\xE1n a nemus\xED fungovat ve v\u0161ech p\u0159\xEDpadech.","Move down":"P\u0159esunout dol\u016F","Move up":"P\u0159esunout nahoru","Change Mode (Currently: {{current_mode}})":"Zm\u011Bnit re\u017Eim (Nyn\xED: {{current_mode}})","Are you sure you want to delete the Command?":"Opravdu chcete smazat tento p\u0159\xEDkaz?","Remove and don't ask again":"Odstranit a u\u017E se neptat",Remove:"Odstranit",Cancel:"Zru\u0161it","Always ask before removing?":"V\u017Edy se pt\xE1t p\u0159ed odstran\u011Bn\xEDm?","Always show a Popup to confirm deletion of a Command.":"V\u017Edy zobrazovat vyskakovac\xED okno pro potvrzen\xED odstran\u011Bn\xED p\u0159\xEDkazu.",'Show "Add Command" Button':'Zobrazit tla\u010D\xEDtko "P\u0159idat p\u0159\xEDkaz"','Show the "Add Command" Button in every Menu. Requires restart.':'Zobrazit tla\u010D\xEDtko "P\u0159idat p\u0159\xEDkaz" ve v\u0161ech nab\xEDdk\xE1ch. Vy\u017Eaduje restart.',"Please restart Obsidian for these changes to take effect.":"Pros\xEDm restartujte Obsidian, aby se zm\u011Bny projevily.","Enable debugging":"Povolit lad\u011Bn\xED","Enable console output.":"Povolit v\xFDstup do konzole.",General:"Obecn\xE9","Editor Menu":"Kontextov\xE1 nab\xEDdka v editoru","File Menu":"Nab\xEDdka souboru","Left Ribbon":"Lev\xFD Ribbon","Right Ribbon":"Prav\xFD Ribbon",Titlebar:"Li\u0161ta aplikace",Statusbar:"Stavov\xE1 li\u0161ta","Page Header":"Hlavi\u010Dka str\xE1nky","Support development":"Podpo\u0159te v\xFDvoj","No commands here!":"Nejsou zde \u017E\xE1dn\xE9 p\u0159\xEDkazy!","Would you like to add one now?":"Chcete nyn\xED jeden p\u0159idat?","Hide Commands":"Skr\xFDt p\u0159\xEDkazy","Choose new":"Vyberte nov\xFD","Hide Commands of other Plugins":"Skr\xFDt p\u0159\xEDkazy jin\xFDch roz\u0161\xED\u0159en\xED",Icon:"Ikona",Name:"N\xE1zev","Custom Name":"Vlastn\xED n\xE1zev","Add command to all devices":"P\u0159idat p\u0159\xEDkaz na v\u0161echna za\u0159\xEDzen\xED","Add command only to mobile devices":"P\u0159idat p\u0159\xEDkaz pouze na mobiln\xED za\u0159\xEDzen\xED","Add command only to desktop devices":"P\u0159idat p\u0159\xEDkaz pouze na stoln\xED za\u0159\xEDzen\xED","Add command only to this device":"P\u0159idat p\u0159\xEDkaz pouze na toto za\u0159\xEDzen\xED",Done:"Hotovo","By Johnny\u2728 and phibr0":"Vytvo\u0159il Johnny\u2728 a phibr0","Leave feedback":"Zanechat zp\u011Btnou vazbu",Donate:"P\u0159isp\u011Bt","Share feedback, issues, and ideas with our feedback form.":"Sd\xEDlejte zp\u011Btnou vazbu, probl\xE9my a n\xE1pady pomoc\xED na\u0161eho formul\xE1\u0159e.","Consider donating to support development.":"Zva\u017Ete p\u0159\xEDsp\u011Bvek na podporu v\xFDvoje.",Save:"Ulo\u017Eit","This Command is not available on this device.":"Tento p\u0159\xEDkaz nen\xED dostupn\xFD na tomto za\u0159\xEDzen\xED.",Show:"Zobrazit",Hide:"Skr\xFDt","Hide other Commands":"Skr\xFDt ostatn\xED p\u0159\xEDkazy","Double click to enter custom value":"Dvakr\xE1t klikn\u011Bte pro zad\xE1n\xED vlastn\xED hodnoty","Choose custom spacing for Command Buttons":"Vyberte vlastn\xED odsazen\xED pro tla\u010D\xEDtka p\u0159\xEDkaz\u016F","Change the spacing between commands. You can set different values on mobile and desktop.":"Zm\u011Bna odsazen\xED mezi p\u0159\xEDkazy. M\u016F\u017Eete nastavit r\u016Fzn\xE9 hodnoty na mobiln\xEDch a stoln\xEDch za\u0159\xEDzen\xEDch.",Warning:"Varov\xE1n\xED","As of Obsidian 0.16.0 you need to explicitly enable the View Header.":"Od verze Obsidian 0.16.0 je nutn\xE9 explicitn\u011B povolit z\xE1hlav\xED zobrazen\xED. Po povolen\xED je mo\u017En\xE9, \u017Ee budete muset restartovat Obsidian.","Open Appearance Settings":"Otev\u0159\xEDt nastaven\xED vzhledu",Explorer:"Pr\u016Fzkumn\xEDk"};var ot={};var tt={"Open Commander Settings":"Commander Einstellungen \xF6ffnen","Open Macro Builder":"Makro Baukasten \xF6ffnen","Change Icon":"Symbol ver\xE4ndern",Rename:"Umbenennen",Delete:"L\xF6schen","Add command":"Befehl hinzuf\xFCgen","Add new":"Neuen Befehl hinzuf\xFCgen","This Command seems to have been removed. {{command_name}}":"Dieser Befehl wurde entfernt. {{command_name}}","Choose a Command to add":"W\xE4hle einen Befehl zum hinzuf\xFCgen","to navigate":"zum navigieren","to choose an icon":"um ein symbol auszuw\xE4hlen","to cancel":"zum abbrechen","Use a custom name":"Nutze einen benutzerdefinierten Namen","Choose a custom Name for your new Command":"W\xE4hle einen benutzerdefinierten Namen f\xFCr deinen neuen Befehl","to save":"zum speichern","Choose a Icon for your new Command":"W\xE4hle ein Symbol f\xFCr deinen neuen Befehl","to choose a custom icon":"um ein benutzerdefiniertes Symbol auszuw\xE4hlen","Remove Command":"Befehl entfernen","Double click to rename":"Zum umbenennen doppelklicken","This device":"Dieses Ger\xE4t","Added by {{plugin_name}}.":"Hinzugef\xFCgt von {{plugin_name}}.","Warning: This is a checked Command, meaning it might not run under every circumstance.":"Warnung: Dieser Befehl wird nur unter bestimmten Vorraussetzungen ausgef\xFChrt.","Move down":"Nach unten","Move up":"Nach oben","Change Mode (Currently: {{current_mode}})":"Modus ver\xE4ndern (Momentan: {{current_mode}})","Are you sure you want to delete the Command?":"Bist du dir sicher, dass du diesen Befehl entfernen m\xF6chtest?","Remove and don't ask again":"Entfernen und Auswahl speichern",Remove:"Entfernen",Cancel:"Abbrechen","Always ask before removing?":"Immer fragen, bevor ein Befehl gel\xF6scht wird?","Always show a Popup to confirm deletion of a Command.":"Zeige immer ein Popup um L\xF6schen zu best\xE4tigen.",'Show "Add Command" Button':'Zeige "Befehl hinzuf\xFCgen" Knopf','Show the "Add Command" Button in every Menu. Requires restart.':'Zeige den "Befehl hinzuf\xFCgen" Knopf in jedem Men\xFC. Erfordert neustart.',"Please restart Obsidian for these changes to take effect.":"Bitte starte Obsidian neu, damit diese \xC4nderungen in Kraft treten.","Enable debugging":"Aktiviere debugging","Enable console output.":"Aktiviere Konsolen-Output (F\xFCr Entwickler)",General:"Allgemein","Editor Menu":"Editor-Men\xFC","File Menu":"Datei-Men\xFC","Left Ribbon":"Band","Right Ribbon":"Rechtes Band",Titlebar:"Titelleiste",Statusbar:"Statusleiste","Page Header":"Kopfzeile","Support development":"Entwicklung unterst\xFCtzen","No commands here!":"Keine Befehle da!","Would you like to add one now?":"M\xF6chtest du jetzt einen hinzuf\xFCgen?","Hide Commands":"Befehle verstecken","Choose new":"W\xE4hle neu","Hide Commands of other Plugins":"Hide Commands of other Plugins",Icon:"Symbol",Name:"Name","Custom Name":"Benutzerdefinierter Name","Add command to all devices":"F\xFCge Befehl allen Ger\xE4ten hinzu","Add command only to mobile devices":"F\xFCge Befehl nur Mobilen Ger\xE4ten hinzu","Add command only to desktop devices":"F\xFCge Befehl nur Desktop Ger\xE4ten hinzu","Add command only to this device":"F\xFCge Befehl nur diesem Ger\xE4t hinzu",Done:"Fertig","By Johnny\u2728 and phibr0":"Von Johnny\u2728 und phibr0","Leave feedback":"Feedback geben",Donate:"Spenden","Share feedback, issues, and ideas with our feedback form.":"Teile Feedback, Probleme und Ideen mit unserem Feedback Formular!","Consider donating to support development.":"Spende um die Entwicklung zu unterst\xFCtzen.",Save:"Speichern","This Command is not available on this device.":"Dieser Befehl ist auf diesem Ger\xE4t nicht verf\xFCgbar.",Show:"Anzeigen",Hide:"Verstecken","Hide other Commands":"Andere Befehle verstecken","Double click to enter custom value":"Doppelklicken um eigenen Wert einzutragen","Choose custom spacing for Command Buttons":"W\xE4hle den Abstand zwischen Befehlen","Change the spacing between commands. You can set different values on mobile and desktop.":"Ver\xE4ndert den Abstand zwischen Befehlen.",Warning:"Achtung","As of Obsidian 0.16.0 you need to explicitly enable the View Header.":'Ab Obsidian Version 0.16.0 m\xFCssen Sie den "View Header" explizit aktivieren. Anschlie\xDFend muss Obsidian neugestartet werden.',"Open Appearance Settings":"\xD6ffne Darstellungs-Einstellungen",Explorer:"Explorer"};var go={"Open Commander Settings":"Open Commander Settings","Open Macro Builder":"Open Macro Builder","Change Icon":"Change Icon",Rename:"Rename",Delete:"Delete","Add command":"Add command","Add new":"Add new command","This Command seems to have been removed. {{command_name}}":"This Command seems to have been removed. {{command_name}}","Choose a Command to add":"Choose a Command to add","to navigate":"to navigate","to choose an icon":"to choose an icon","to cancel":"to cancel","Use a custom name":"Use a custom name","Choose a custom Name for your new Command":"Choose a custom Name for your new Command","to save":"to save","Choose a Icon for your new Command":"Choose a Icon for your new Command","to choose a custom icon":"to choose a custom icon","Remove Command":"Remove Command","Double click to rename":"Double click to rename","This device":"This device","Added by {{plugin_name}}.":"Added by {{plugin_name}}.","Warning: This is a checked Command, meaning it might not run under every circumstance.":"Warning: This is a checked Command, meaning it might not run under every circumstance.","Move down":"Move down","Move up":"Move up","Change Mode (Currently: {{current_mode}})":"Change Mode (Currently: {{current_mode}})","Are you sure you want to delete the Command?":"Are you sure you want to delete the Command?","Remove and don't ask again":"Remove and don't ask again",Remove:"Remove",Cancel:"Cancel","Always ask before removing?":"Always ask before removing?","Always show a Popup to confirm deletion of a Command.":"Always show a Popup to confirm deletion of a Command.",'Show "Add Command" Button':'Show "Add Command" Button','Show the "Add Command" Button in every Menu. Requires restart.':'Show the "Add Command" Button in every Menu. Requires restart.',"Please restart Obsidian for these changes to take effect.":"Please restart Obsidian for these changes to take effect.","Enable debugging":"Enable debugging","Enable console output.":"Enable console output.",General:"General","Editor Menu":"Editor Menu","File Menu":"File Menu","Left Ribbon":"Ribbon","Right Ribbon":"Right Ribbon",Titlebar:"Titlebar",Statusbar:"Status Bar","Page Header":"Tab Bar","Support development":"Support development","No commands here!":"No commands here!","Would you like to add one now?":"Would you like to add one now?","Hide Commands":"Hide Commands","Choose new":"Choose new","Hide Commands of other Plugins":"Hide Commands of other Plugins",Icon:"Icon",Name:"Name","Custom Name":"Custom Name","Add command to all devices":"Add command to all devices","Add command only to mobile devices":"Add command only to mobile devices","Add command only to desktop devices":"Add command only to desktop devices","Add command only to this device":"Add command only to this device",Done:"Done","By Johnny\u2728 and phibr0":"By Johnny\u2728 and phibr0","Leave feedback":"Leave feedback",Donate:"Donate","Share feedback, issues, and ideas with our feedback form.":"Share feedback, issues, and ideas with our feedback form.","Consider donating to support development.":"Consider donating to support development.",Save:"Save","This Command is not available on this device.":"This Command is not available on this device.",Show:"Show",Hide:"Hide","Hide other Commands":"Hide other Commands","Double click to enter custom value":"Double click to enter custom value","Choose custom spacing for Command Buttons":"Choose custom spacing for Command Buttons","Change the spacing between commands. You can set different values on mobile and desktop.":"Change the spacing between commands.",Warning:"Warning","As of Obsidian 0.16.0 you need to explicitly enable the View Header.":"As of Obsidian 0.16.0 you need to explicitly enable the Tab Title Bar. Once enabled, you might need to restart Obsidian.","Open Appearance Settings":"Open Appearance Settings",Explorer:"Explorer"};var nt={};var at={};var it={"Open Commander Settings":"Ouvrir les param\xE8tres de Commander","Open Macro Builder":"Ouvrir le constructeur de Macro","Change Icon":"Changer l'ic\xF4ne",Rename:"Renommer",Delete:"Supprimer","Add command":"Ajouter une commande","Add new":"Ajouter une nouvelle commande","This Command seems to have been removed. {{command_name}}":"Cette commande semble avoir \xE9t\xE9 supprim\xE9e. {{command_name}}","Choose a Command to add":"Choisissez une commande \xE0 ajouter","to navigate":"pour naviguer","to choose an icon":"pour choisir une ic\xF4ne","to cancel":"pour annuler","Use a custom name":"Utiliser un nom personnalis\xE9","Choose a custom Name for your new Command":"Choisissez un nom personnalis\xE9 pour votre nouvelle commande","to save":"pour enregistrer","Choose a Icon for your new Command":"Choisissez une ic\xF4ne pour votre nouvelle commande","to choose a custom icon":"pour choisir une ic\xF4ne personnalis\xE9e","Remove Command":"Supprimer la commande","Double click to rename":"Double-cliquez pour renommer","This device":"Cet appareil","Added by {{plugin_name}}.":"Ajout\xE9 par {{plugin_name}}.","Warning: This is a checked Command, meaning it might not run under every circumstance.":"Attention : Cette commande est coch\xE9e, ce qui signifie qu'elle pourrait ne pas fonctionner dans toutes les situations.","Move down":"Descendre","Move up":"Monter","Change Mode (Currently: {{current_mode}})":"Changer de mode (Actuellement : {{current_mode}})","Are you sure you want to delete the Command?":"\xCAtes-vous s\xFBr de vouloir supprimer la commande ?","Remove and don't ask again":"Supprimer et ne plus demander",Remove:"Supprimer",Cancel:"Annuler","Always ask before removing?":"Toujours demander avant de supprimer ?","Always show a Popup to confirm deletion of a Command.":"Toujours afficher une fen\xEAtre contextuelle pour confirmer la suppression d'une commande.",'Show "Add Command" Button':'Afficher le bouton "Ajouter une commande"','Show the "Add Command" Button in every Menu. Requires restart.':'Afficher le bouton "Ajouter une commande" dans chaque menu. N\xE9cessite un red\xE9marrage.',"Please restart Obsidian for these changes to take effect.":"Veuillez red\xE9marrer Obsidian pour que ces modifications prennent effet.","Enable debugging":"Activer le d\xE9bogage","Enable console output.":"Activer la sortie console.",General:"G\xE9n\xE9ral","Editor Menu":"Menu \xE9diteur","File Menu":"Menu fichier","Left Ribbon":"Ruban gauche","Right Ribbon":"Ruban droit",Titlebar:"Barre de titre",Statusbar:"Barre d'\xE9tat","Page Header":"En-t\xEAte de page","Support development":"Soutenir le d\xE9veloppement","No commands here!":"Aucune commande ici !","Would you like to add one now?":"Voulez-vous en ajouter une maintenant ?","Hide Commands":"Masquer les commandes","Choose new":"Choisir nouveau","Hide Commands of other Plugins":"Masquer les commandes d'autres plugins",Icon:"Ic\xF4ne",Name:"Nom","Custom Name":"Nom personnalis\xE9","Add command to all devices":"Ajouter la commande \xE0 tous les appareils","Add command only to mobile devices":"Ajouter la commande uniquement sur les appareils mobiles","Add command only to desktop devices":"Ajouter la commande uniquement sur les ordinateurs de bureau","Add command only to this device":"Ajouter la commande uniquement sur cet appareil",Done:"Termin\xE9","By Johnny\u2728 and phibr0":"Par Johnny\u2728 et phibr0","Leave feedback":"Laisser un commentaire",Donate:"Faire un don","Share feedback, issues, and ideas with our feedback form.":"Partagez vos commentaires, probl\xE8mes et id\xE9es avec notre formulaire de retour d'information.","Consider donating to support development.":"Envisagez de faire un don pour soutenir le d\xE9veloppement.",Save:"Enregistrer","This Command is not available on this device.":"Cette commande n'est pas disponible sur cet appareil.",Show:"Afficher",Hide:"Masquer","Hide other Commands":"Masquer les autres commandes","Double click to enter custom value":"Double-cliquez pour entrer une valeur personnalis\xE9e","Choose custom spacing for Command Buttons":"Choisissez un espacement personnalis\xE9 pour les boutons de commande","Change the spacing between commands.":"Modifier l'espacement entre les commandes.",Warning:"Avertissement","As of Obsidian 0.16.0 you need to explicitly enable the Tab Title Bar. Once enabled, you might need to restart Obsidian.":"\xC0 partir d'Obsidian 0.16.0, vous devez activer explicitement la barre de titre des onglets. Une fois activ\xE9e, il se peut que vous deviez red\xE9marrer Obsidian.","Open Appearance Settings":"Ouvrir les param\xE8tres d'apparence",Explorer:"Explorateur"};var rt={};var st={};var ct={};var dt={};var mt={};var lt={"Open Commander Settings":"Open Commander Instellingen","Open Macro Builder":"Open Macro Bouwer","Change Icon":"Verander Icoon",Rename:"Hernoem",Delete:"Verwijder","Add command":"Voeg commando toe","Add new":"Voeg nieuw commando toe","This Command seems to have been removed. {{command_name}}":"Het lijkt er op dat dit commando is verwijderd. {{command_name}}","Choose a Command to add":"Kies een commando om toe te voegen","to navigate":"naar navigatie","to choose an icon":"naar kies een icoon","to cancel":"naar annuleren","Use a custom name":"Gebruik een aangepaste naam","Choose a custom Name for your new Command":"Kies een aangepaste naam voor je nieuwe commando","to save":"naar opslaan","Choose a Icon for your new Command":"Kies een icoon voor je nieuwe commando","to choose a custom icon":"to choose a custom icon","Remove Command":"Verwijder commando","Double click to rename":"Dubbel klik om te hernoemen","This device":"Dit apparaat","Added by {{plugin_name}}.":"Toegevoegd door {{plugin_name}}.","Warning: This is a checked Command, meaning it might not run under every circumstance.":"Waarschuwing: Dit is een aangevinkte opdracht, wat betekent dat deze mogelijk niet onder alle omstandigheden wordt uitgevoerd.","Move down":"Naar beneden","Move up":"Naar boven","Change Mode (Currently: {{current_mode}})":"Verander modus (Currently: {{current_mode}})","Are you sure you want to delete the Command?":"Weet je zeker dat je dit commando wilt verwijderen??","Remove and don't ask again":"Verwijder en vraag niet opnieuw",Remove:"Verwijder",Cancel:"Annuleer","Always ask before removing?":"Altijd vragen voor verwijderen?","Always show a Popup to confirm deletion of a Command.":"Laat altijd een venster zien om het verwijderen van een commando te bevestigen.",'Show "Add Command" Button':'Laat "Voeg Commando toe" knop zien','Show the "Add Command" Button in every Menu. Requires restart.':'Laat de "Voeg Commenado toe" knop zien in elk menu. Vereist herstart.',"Please restart Obsidian for these changes to take effect.":"Start Obsidian a.u.b. opnieuw op om deze wijzigingen toe te passen.","Enable debugging":"Activeer debugging","Enable console output.":"Activeer console output.",General:"Algemeen","Editor Menu":"Editor Menu","File Menu":"Bestand Menu","Left Ribbon":"Linkse Lint","Right Ribbon":"Rechtse Lint",Titlebar:"Titelbalk",Statusbar:"Statusbalk","Page Header":"Pagina Kop","Support development":"Steun ontwikkeling","No commands here!":"Geen commando's hier!","Would you like to add one now?":"Zou je er \xE9\xE9n willen toevoegen?","Hide Commands":"Verberg Commando's","Choose new":"Kies nieuw","Hide Commands of other Plugins":"Verberg Commando's van andere Plugins",Icon:"Icoon",Name:"Naam","Custom Name":"Aangepaste naam","Add command to all devices":"Voeg commando toe aan alle apparaten","Add command only to mobile devices":"Voeg commando toe aan alleen mobiele apparaten","Add command only to desktop devices":"Voeg commando toe aan alleen dekstop apparaten","Add command only to this device":"Voed commando toe aan alleen dit apparaat",Done:"Klaar","By Johnny\u2728 and phibr0":"Door Johnny\u2728 en phibr0","Leave feedback":"Laat feedback achter",Donate:"Doneer","Share feedback, issues, and ideas with our feedback form.":"Deel feedback, problemen en idee\xEBn met ons feedback formulier.","Consider donating to support development.":"Overweeg te doneren om ontwikkeling te steunen.",Save:"Opslaan","This Command is not available on this device.":"Dit Commando is niet beschikbaar op dit apparaat.",Show:"Laat zien",Hide:"Verberg","Hide other Commands":"Verberg andere Commando's","Double click to enter custom value":"Dubbel klik om een aangepaste waarde in te vullen","Choose custom spacing for Command Buttons":"Kies aangepaste regelafstand voor Commando Knoppen","Change the spacing between commands. You can set different values on mobile and desktop.":"Verander regelafstand tussen Commando's. Dit kan verschillen tussen mobiel en dekstop.",Warning:"Waarschuwing","As of Obsidian 0.16.0 you need to explicitly enable the View Header.":"Sinds Obsidian 0.16.0 moet je de kop expliciet inschakelen. Wanneer ingeschakeld moet je mogelijk Obsidian herstarten.","Open Appearance Settings":"Open Weergave Instellingen",Explorer:"Verkenner"};var ut={};var pt={};var ft={};var ht={};var vt={};var gt={"Open Commander Settings":'\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 "Commander"',"Open Macro Builder":"\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440 \u043C\u0430\u043A\u0440\u043E\u0441\u043E\u0432","Change Icon":"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A",Rename:"\u041F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u0442\u044C",Delete:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C","Add command":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443","Add new":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043D\u043E\u0432\u0443\u044E \u043A\u043E\u043C\u0430\u043D\u0434\u0443","This Command seems to have been removed. {{command_name}}":"\u042D\u0442\u0430 \u043A\u043E\u043C\u0430\u043D\u0434\u0430, \u043A\u0430\u0436\u0435\u0442\u0441\u044F, \u0431\u044B\u043B\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u0430. {{command_name}}","Choose a Command to add":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043A\u043E\u043C\u0430\u043D\u0434\u0443 \u0434\u043B\u044F \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F","to navigate":"\u0434\u043B\u044F \u043D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438","to choose an icon":"\u0432\u044B\u0431\u0440\u0430\u0442\u044C \u0437\u043D\u0430\u0447\u043E\u043A","to cancel":"\u043E\u0442\u043C\u0435\u043D\u0438\u0442\u044C","Use a custom name":"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0441\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0435 \u0438\u043C\u044F","Choose a custom Name for your new Command":"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0435 \u0438\u043C\u044F \u0434\u043B\u044F \u0432\u0430\u0448\u0435\u0439 \u043D\u043E\u0432\u043E\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B","to save":"\u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C","Choose a Icon for your new Command":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u043D\u0430\u0447\u043E\u043A \u0434\u043B\u044F \u0432\u0430\u0448\u0435\u0439 \u043D\u043E\u0432\u043E\u0439 \u043A\u043E\u043C\u0430\u043D\u0434\u044B","to choose a custom icon":"\u0432\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0437\u043D\u0430\u0447\u043E\u043A","Remove Command":"\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443","Double click to rename":"\u0414\u0432\u0430\u0436\u0434\u044B \u0449\u0435\u043B\u043A\u043D\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u0435\u0440\u0435\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u0442\u044C","This device":"\u042D\u0442\u043E \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E","Added by {{plugin_name}}.":"\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D \u043F\u043B\u0430\u0433\u0438\u043D\u043E\u043C {{plugin_name}}.","Warning: This is a checked Command, meaning it might not run under every circumstance.":"\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u044D\u0442\u043E \u043F\u0440\u043E\u0432\u0435\u0440\u0435\u043D\u043D\u0430\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u0430, \u0442\u043E \u0435\u0441\u0442\u044C \u043E\u043D\u0430 \u043C\u043E\u0436\u0435\u0442 \u043D\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u0442\u044C\u0441\u044F \u043F\u0440\u0438 \u043B\u044E\u0431\u044B\u0445 \u043E\u0431\u0441\u0442\u043E\u044F\u0442\u0435\u043B\u044C\u0441\u0442\u0432\u0430\u0445.","Move down":"\u0412\u043D\u0438\u0437","Move up":"\u0412\u0432\u0435\u0440\u0445","Change Mode (Currently: {{current_mode}})":"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0440\u0435\u0436\u0438\u043C (\u0421\u0435\u0439\u0447\u0430\u0441: {{current_mode}})","Are you sure you want to delete the Command?":"\u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B, \u0447\u0442\u043E \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443?","Remove and don't ask again":"\u0423\u0434\u0430\u043B\u0438\u0442\u0435 \u0438 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u0441\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435",Remove:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",Cancel:"\u041E\u0442\u043C\u0435\u043D\u0430","Always ask before removing?":"\u0412\u0441\u0435\u0433\u0434\u0430 \u0441\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044C \u043F\u0435\u0440\u0435\u0434 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435\u043C?","Always show a Popup to confirm deletion of a Command.":"\u0412\u0441\u0435\u0433\u0434\u0430 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0432\u0441\u043F\u043B\u044B\u0432\u0430\u044E\u0449\u0435\u0435 \u043E\u043A\u043D\u043E \u0434\u043B\u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u044B.",'Show "Add Command" Button':"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043A\u043D\u043E\u043F\u043A\u0443 \xAB\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443\xBB",'Show the "Add Command" Button in every Menu. Requires restart.':"\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043A\u043D\u043E\u043F\u043A\u0443 \xAB\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443\xBB \u0432 \u043A\u0430\u0436\u0434\u043E\u043C \u043C\u0435\u043D\u044E. \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F \u043F\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0430.","Please restart Obsidian for these changes to take effect.":"\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 Obsidian, \u0447\u0442\u043E\u0431\u044B \u044D\u0442\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0432\u0441\u0442\u0443\u043F\u0438\u043B\u0438 \u0432 \u0441\u0438\u043B\u0443.","Enable debugging":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043E\u0442\u043B\u0430\u0434\u043A\u0443","Enable console output.":"\u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0432\u044B\u0432\u043E\u0434 \u043A\u043E\u043D\u0441\u043E\u043B\u0438.",General:"\u041E\u0431\u0449\u0435\u0435","Editor Menu":"\u041C\u0435\u043D\u044E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430","File Menu":"\u041C\u0435\u043D\u044E \xAB\u0424\u0430\u0439\u043B\xBB","Left Ribbon":"\u041B\u0435\u0432\u0430\u044F \u041B\u0435\u043D\u0442\u0430","Right Ribbon":"\u041F\u0440\u0430\u0432\u0430\u044F \u041B\u0435\u043D\u0442\u0430",Titlebar:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A",Statusbar:"\u0421\u0442\u0430\u0442\u0443\u0441 \u0431\u0430\u0440","Page Header":"\u041F\u0430\u043D\u0435\u043B\u044C \u0432\u043A\u043B\u0430\u0434\u043E\u043A","Support development":"\u041F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0438","No commands here!":"\u0417\u0434\u0435\u0441\u044C \u043D\u0435\u0442 \u043A\u043E\u043C\u0430\u043D\u0434!","Would you like to add one now?":"\u0425\u043E\u0442\u0438\u0442\u0435 \u0434\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0435\u0439\u0447\u0430\u0441?","Hide Commands":"\u0421\u043A\u0440\u044B\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u044B","Choose new":"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043D\u043E\u0432\u0443\u044E","Hide Commands of other Plugins":"\u0421\u043A\u0440\u044B\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u044B \u0434\u0440\u0443\u0433\u0438\u0445 \u043F\u043B\u0430\u0433\u0438\u043D\u043E\u0432",Icon:"\u0418\u043A\u043E\u043D\u043A\u0430",Name:"\u0418\u043C\u044F","Custom Name":"\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0435 \u0438\u043C\u044F","Add command to all devices":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443 \u043D\u0430 \u0432\u0441\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0430","Add command only to mobile devices":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443 \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u043C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432","Add command only to desktop devices":'\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443 \u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F "Desktop" \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432',"Add command only to this device":"\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043C\u0430\u043D\u0434\u0443 \u0442\u043E\u043B\u044C\u043A\u043E \u043D\u0430 \u044D\u0442\u043E \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E",Done:"\u0413\u043E\u0442\u043E\u0432\u043E","By Johnny\u2728 and phibr0":'\u0421\u0434\u0435\u043B\u0430\u043B\u0438: "Johnny\u2728" \u0438 "phibr0"',"Leave feedback":"\u041E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043E\u0442\u0437\u044B\u0432",Donate:"\u041F\u043E\u0436\u0435\u0440\u0442\u0432\u043E\u0432\u0430\u0442\u044C","Share feedback, issues, and ideas with our feedback form.":"\u041F\u043E\u0434\u0435\u043B\u0438\u0442\u0435\u0441\u044C \u043E\u0442\u0437\u044B\u0432\u0430\u043C\u0438, \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430\u043C\u0438 \u0438 \u0438\u0434\u0435\u044F\u043C\u0438 \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043D\u0430\u0448\u0435\u0439 \u0444\u043E\u0440\u043C\u044B \u043E\u0431\u0440\u0430\u0442\u043D\u043E\u0439 \u0441\u0432\u044F\u0437\u0438.","Consider donating to support development.":"\u041F\u043E\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043E \u043F\u043E\u0436\u0435\u0440\u0442\u0432\u043E\u0432\u0430\u043D\u0438\u0438 \u0434\u043B\u044F \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044F.",Save:"\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C","This Command is not available on this device.":"This Command is not available on this device.",Show:"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C",Hide:"\u0421\u043F\u0440\u044F\u0442\u0430\u0442\u044C","Hide other Commands":"\u0421\u043F\u0440\u044F\u0442\u0430\u0442\u044C \u0434\u0440\u0443\u0433\u0438\u0435 \u043A\u043E\u043C\u0430\u043D\u0434\u044B","Double click to enter custom value":"\u0414\u0432\u0430\u0436\u0434\u044B \u0449\u0435\u043B\u043A\u043D\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0432\u0432\u0435\u0441\u0442\u0438 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435","Choose custom spacing for Command Buttons":"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0439 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B \u043C\u0435\u0436\u0434\u0443 \u043A\u043E\u043C\u0430\u043D\u0434\u043D\u044B\u043C\u0438 \u043A\u043D\u043E\u043F\u043A\u0430\u043C\u0438","Change the spacing between commands. You can set different values on mobile and desktop.":"\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u0435 \u0440\u0430\u0441\u0441\u0442\u043E\u044F\u043D\u0438\u0435 \u043C\u0435\u0436\u0434\u0443 \u043A\u043E\u043C\u0430\u043D\u0434\u0430\u043C\u0438.",Warning:"\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435","As of Obsidian 0.16.0 you need to explicitly enable the View Header.":"\u041D\u0430\u0447\u0438\u043D\u0430\u044F \u0441 Obsidian 0.16.0 \u0432\u0430\u043C \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u044F\u0432\u043D\u043E \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u0432\u043A\u043B\u0430\u0434\u043A\u0438. \u041F\u043E\u0441\u043B\u0435 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0432\u0430\u043C \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u0442\u0440\u0435\u0431\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C Obsidian.","Open Appearance Settings":"\u041E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0432\u043D\u0435\u0448\u043D\u0435\u0433\u043E \u0432\u0438\u0434\u0430",Explorer:"\u0424\u0430\u0439\u043B\u043E\u0432\u044B\u0439 \u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440"};var bt={};var Ct={"Open Commander Settings":"\u6253\u5F00 Commander \u8BBE\u7F6E","Open Macro Builder":"\u6253\u5F00\u5B8F\u6307\u4EE4\u751F\u6210\u5668","Change Icon":"\u66F4\u6362\u56FE\u6807",Rename:"\u91CD\u547D\u540D",Delete:"\u5220\u9664","Add command":"\u6DFB\u52A0\u547D\u4EE4","Add new":"\u6DFB\u52A0\u65B0\u547D\u4EE4","This Command seems to have been removed. {{command_name}}":"\u8BE5\u547D\u4EE4\u4F3C\u4E4E\u5DF2\u88AB\u79FB\u9664\u3002{{command_name}}","Choose a Command to add":"\u9009\u62E9\u4E00\u4E2A\u547D\u4EE4\u5E76\u6DFB\u52A0","to navigate":"\u5BFC\u822A","to choose an icon":"\u9009\u4E2D\u4E00\u4E2A\u56FE\u6807","to cancel":"\u53D6\u6D88","Use a custom name":"\u4F7F\u7528\u4E00\u4E2A\u81EA\u5B9A\u4E49\u540D\u79F0","Choose a custom Name for your new Command":"\u4E3A\u4F60\u7684\u65B0\u547D\u4EE4\u9009\u62E9\u4E00\u4E2A\u81EA\u5B9A\u4E49\u540D\u79F0","to save":"\u4FDD\u5B58","Choose a Icon for your new Command":"\u4E3A\u4F60\u7684\u65B0\u547D\u4EE4\u9009\u62E9\u4E00\u4E2A\u56FE\u6807","to choose a custom icon":"\u9009\u62E9\u4E00\u4E2A\u81EA\u5B9A\u4E49\u56FE\u6807","Remove Command":"\u79FB\u9664\u547D\u4EE4","Double click to rename":"\u53CC\u51FB\u4EE5\u91CD\u547D\u540D","This device":"\u8BE5\u8BBE\u5907","Added by {{plugin_name}}.":"\u7531{{plugin_name}}\u6DFB\u52A0\u3002","Warning: This is a checked Command, meaning it might not run under every circumstance.":"\u8B66\u544A\uFF1A\u8FD9\u662F\u4E00\u4E2A\u53D7\u68C0\u7684\u547D\u4EE4\uFF0C\u8FD9\u610F\u5473\u7740\u5B83\u672A\u5FC5\u80FD\u5728\u6240\u4EE5\u73AF\u5883\u4E0B\u8FD0\u884C\u3002","Move down":"\u5411\u4E0B\u79FB\u52A8","Move up":"\u5411\u4E0A\u79FB\u52A8","Change Mode (Currently: {{current_mode}})":"\u5207\u6362\u6A21\u5F0F\uFF08\u5F53\u524D\uFF1A{{current_mode}}\uFF09","Are you sure you want to delete the Command?":"\u662F\u5426\u786E\u8BA4\u79FB\u9664\u8BE5\u547D\u4EE4\uFF1F","Remove and don't ask again":"\u79FB\u9664\u4E14\u4E0D\u8981\u518D\u8BE2\u95EE",Remove:"\u79FB\u9664",Cancel:"\u53D6\u6D88","Always ask before removing?":"\u5728\u79FB\u9664\u524D\u603B\u662F\u8BE2\u95EE\uFF1F","Always show a Popup to confirm deletion of a Command.":"\u5728\u786E\u8BA4\u79FB\u9664\u547D\u4EE4\u524D\u603B\u662F\u5F39\u7A97\u3002",'Show "Add Command" Button':"\u663E\u793A\u201C\u6DFB\u52A0\u547D\u4EE4\u201D\u6309\u94AE",'Show the "Add Command" Button in every Menu. Requires restart.':"\u5728\u6BCF\u4E2A\u83DC\u5355\u90FD\u5C55\u793A\u201C\u6DFB\u52A0\u547D\u4EE4\u201D\u6309\u94AE\u3002\u9700\u8981\u91CD\u542F\u3002","Please restart Obsidian for these changes to take effect.":"\u8BF7\u91CD\u542F Obsidian \u4EE5\u4F7F\u8FD9\u4E9B\u66F4\u6539\u751F\u6548\u3002","Enable debugging":"\u542F\u7528\u9664\u9519","Enable console output.":"\u542F\u7528\u63A7\u5236\u53F0\u8F93\u51FA\u3002",General:"\u901A\u7528","Editor Menu":"\u7F16\u8F91\u5668\u83DC\u5355","File Menu":"\u6587\u4EF6\u83DC\u5355","Left Ribbon":"\u5DE6\u4FA7\u8FB9\u680F","Right Ribbon":"\u53F3\u4FA7\u8FB9\u680F",Titlebar:"\u6807\u9898\u680F",Statusbar:"\u72B6\u6001\u680F","Page Header":"\u9875\u9996","Support development":"\u652F\u6301\u5F00\u53D1","No commands here!":"\u8FD9\u91CC\u6CA1\u6709\u547D\u4EE4\uFF01","Would you like to add one now?":"\u4F60\u73B0\u5728\u60F3\u8981\u52A0\u4E00\u4E2A\u5417\uFF1F","Hide Commands":"\u9690\u85CF\u547D\u4EE4","Choose new":"\u9009\u62E9\u65B0\u7684","Hide Commands of other Plugins":"\u9690\u85CF\u5176\u4ED6\u63D2\u4EF6\u7684\u547D\u4EE4",Icon:"\u56FE\u6807",Name:"\u540D\u79F0","Custom Name":"\u81EA\u5B9A\u4E49\u540D\u79F0","Add command to all devices":"\u5411\u6240\u6709\u8BBE\u5907\u6DFB\u52A0\u547D\u4EE4","Add command only to mobile devices":"\u53EA\u5411\u79FB\u52A8\u8BBE\u5907\u6DFB\u52A0\u547D\u4EE4","Add command only to desktop devices":"\u53EA\u5411\u684C\u9762\u8BBE\u5907\u6DFB\u52A0\u547D\u4EE4","Add command only to this device":"\u53EA\u5411\u5F53\u524D\u8BBE\u5907\u6DFB\u52A0\u547D\u4EE4",Done:"\u5B8C\u6210","By Johnny\u2728 and phibr0":"\u7531 Johnny\u2728 \u548C phibr0 \u5F00\u53D1","Leave feedback":"\u7559\u4E0B\u53CD\u9988",Donate:"\u6350\u8D60","Share feedback, issues, and ideas with our feedback form.":"\u4EE5\u6211\u4EEC\u7684\u53CD\u9988\u8868\uFF0C\u5206\u4EAB\u53CD\u9988\u3001\u8BAE\u9898\u6216\u8005\u4F60\u7684\u60F3\u6CD5\u3002","Consider donating to support development.":"\u8003\u8651\u6350\u8D60\u4EE5\u652F\u6301\u5F00\u53D1\u3002",Save:"\u4FDD\u5B58","This Command is not available on this device.":"\u8FD9\u4E00\u547D\u4EE4\u5728\u5F53\u524D\u8BBE\u5907\u4E0D\u53EF\u7528\u3002",Show:"\u663E\u793A",Hide:"\u9690\u85CF","Hide other Commands":"\u9690\u85CF\u5176\u4F59\u547D\u4EE4","Double click to enter custom value":"\u53CC\u51FB\u4EE5\u6DFB\u52A0\u81EA\u5B9A\u4E49\u503C","Choose custom spacing for Command Buttons":"\u4E3A\u547D\u4EE4\u6309\u94AE\u9009\u62E9\u81EA\u5B9A\u4E49\u95F4\u8DDD","Change the spacing between commands. You can set different values on mobile and desktop.":"\u6539\u53D8\u547D\u4EE4\u4E4B\u95F4\u7684\u95F4\u8DDD\u3002\u4F60\u53EF\u4EE5\u4E3A\u79FB\u52A8\u548C\u684C\u9762\u8BBE\u5907\u8BBE\u7F6E\u4E0D\u540C\u7684\u503C\u3002"};var _t={};var ua={ar:Qo,cs:et,da:ot,de:tt,en:go,"en-gb":nt,es:at,fr:it,hi:rt,id:st,it:ct,ja:dt,ko:mt,nl:lt,nn:ut,pl:pt,pt:ft,"pt-br":ht,ro:vt,ru:gt,tr:bt,"zh-cn":Ct,"zh-tw":_t},bo=ua[Co.moment.locale()];function u(e){return bo||console.error("Error: dictionary locale not found",Co.moment.locale()),bo&&bo[e]||go[e]}var ne=class extends Ve.FuzzySuggestModal{constructor(o){super(app);this.plugin=o,this.commands=Object.values(app.commands.commands),this.setPlaceholder(u("Choose a Command to add")),this.setInstructions([{command:"\u2191\u2193",purpose:u("to navigate")},{command:"\u21B5",purpose:u("to choose an icon")},{command:"esc",purpose:u("to cancel")}])}async awaitSelection(){return this.open(),new Promise((o,n)=>{this.onChooseItem=a=>o(a),this.onClose=()=>window.setTimeout(()=>n("No Command selected"),0)})}renderSuggestion(o,n){if(n.addClass("mod-complex"),n.createDiv({cls:"suggestion-content"}).createDiv({cls:"suggestion-title"}).setText(o.item.name),o.item.icon){let i=n.createDiv({cls:"suggestion-aux"});(0,Ve.setIcon)(i.createSpan({cls:"suggestion-flair"}),o.item.icon)}}getItems(){return this.commands}getItemText(o){return o.name}onChooseItem(o,n){}};var yt={confirmDeletion:!0,showAddCommand:!0,debug:!1,editorMenu:[],fileMenu:[],leftRibbon:[],rightRibbon:[],titleBar:[],statusBar:[],pageHeader:[],macros:[],explorer:[],hide:{statusbar:[],leftRibbon:[]},spacing:8,advancedToolbar:{rowHeight:48,rowCount:1,spacing:0,buttonWidth:48,columnLayout:!1,mappedIcons:[],tooltips:!1,heightOffset:0}},wt=["activity","airplay","alarm-check","alarm-clock-off","alarm-clock","alarm-minus","alarm-plus","album","alert-circle","alert-octagon","alert-triangle","align-center-horizontal","align-center-vertical","align-center","align-end-horizontal","align-end-vertical","align-horizontal-distribute-center","align-horizontal-distribute-end","align-horizontal-distribute-start","align-horizontal-justify-center","align-horizontal-justify-end","align-horizontal-justify-start","align-horizontal-space-around","align-horizontal-space-between","align-justify","align-left","align-right","align-start-horizontal","align-start-vertical","align-vertical-distribute-center","align-vertical-distribute-end","align-vertical-distribute-start","align-vertical-justify-center","align-vertical-justify-end","align-vertical-justify-start","align-vertical-space-around","align-vertical-space-between","anchor","aperture","archive","arrow-big-down","arrow-big-left","arrow-big-right","arrow-big-up","arrow-down-circle","arrow-down-left","arrow-down-right","arrow-down","arrow-left-circle","arrow-left-right","arrow-left","arrow-right-circle","arrow-right","arrow-up-circle","arrow-up-left","arrow-up-right","arrow-up","asterisk","at-sign","award","axe","banknote","bar-chart-2","bar-chart","baseline","battery-charging","battery-full","battery-low","battery-medium","battery","beaker","bell-minus","bell-off","bell-plus","bell-ring","bell","bike","binary","bitcoin","bluetooth-connected","bluetooth-off","bluetooth-searching","bluetooth","bold","book-open","book","bookmark-minus","bookmark-plus","bookmark","bot","box-select","box","briefcase","brush","bug","building-2","building","bus","calculator","calendar","camera-off","camera","car","carrot","cast","check-circle-2","check-circle","check-square","check","chevron-down","chevron-first","chevron-last","chevron-left","chevron-right","chevron-up","chevrons-down-up","chevrons-down","chevrons-left","chevrons-right","chevrons-up-down","chevrons-up","chrome","circle-slashed","circle","clipboard-check","clipboard-copy","clipboard-list","clipboard-x","clipboard","clock-1","clock-10","clock-11","clock-12","clock-2","clock-3","clock-4","clock-5","clock-6","clock-7","clock-8","clock-9","lucide-clock","cloud-drizzle","cloud-fog","cloud-hail","cloud-lightning","cloud-moon","cloud-off","cloud-rain-wind","cloud-rain","cloud-snow","cloud-sun","lucide-cloud","cloudy","clover","code-2","code","codepen","codesandbox","coffee","coins","columns","command","compass","contact","contrast","cookie","copy","copyleft","copyright","corner-down-left","corner-down-right","corner-left-down","corner-left-up","corner-right-down","corner-right-up","corner-up-left","corner-up-right","cpu","credit-card","crop","lucide-cross","crosshair","crown","currency","database","delete","dice-1","dice-2","dice-3","dice-4","dice-5","dice-6","disc","divide-circle","divide-square","divide","dollar-sign","download-cloud","download","dribbble","droplet","droplets","drumstick","edit-2","edit-3","edit","egg","equal-not","equal","eraser","euro","expand","external-link","eye-off","eye","facebook","fast-forward","feather","figma","file-check-2","file-check","file-code","file-digit","file-input","file-minus-2","file-minus","file-output","file-plus-2","file-plus","file-search","file-text","file-x-2","file-x","file","files","film","filter","flag-off","flag-triangle-left","flag-triangle-right","flag","flame","flashlight-off","flashlight","flask-conical","flask-round","folder-minus","folder-open","folder-plus","lucide-folder","form-input","forward","frame","framer","frown","function-square","gamepad-2","gamepad","gauge","gavel","gem","ghost","gift","git-branch-plus","git-branch","git-commit","git-fork","git-merge","git-pull-request","github","gitlab","glasses","globe-2","globe","grab","graduation-cap","grid","grip-horizontal","grip-vertical","hammer","hand-metal","hand","hard-drive","hard-hat","hash","haze","headphones","heart","help-circle","hexagon","highlighter","history","home","image-minus","image-off","image-plus","image","import","inbox","indent","indian-rupee","infinity","lucide-info","inspect","instagram","italic","japanese-yen","key","keyboard","landmark","lucide-languages","laptop-2","laptop","lasso-select","lasso","layers","layout-dashboard","layout-grid","layout-list","layout-template","layout","library","life-buoy","lightbulb-off","lightbulb","link-2-off","link-2","lucide-link","linkedin","list-checks","list-minus","list-ordered","list-plus","list-x","list","loader-2","loader","locate-fixed","locate-off","locate","lock","log-in","log-out","mail","map-pin","map","maximize-2","maximize","megaphone","meh","menu","message-circle","message-square","mic-off","mic","minimize-2","minimize","minus-circle","minus-square","minus","monitor-off","monitor-speaker","monitor","moon","more-horizontal","more-vertical","mountain-snow","mountain","mouse-pointer-2","mouse-pointer-click","mouse-pointer","mouse","move-diagonal-2","move-diagonal","move-horizontal","move-vertical","move","music","navigation-2","navigation","network","octagon","option","outdent","package-check","package-minus","package-plus","package-search","package-x","package","palette","palmtree","paperclip","pause-circle","pause-octagon","pause","pen-tool","lucide-pencil","percent","person-standing","phone-call","phone-forwarded","phone-incoming","phone-missed","phone-off","phone-outgoing","phone","pie-chart","piggy-bank","lucide-pin","pipette","plane","play-circle","play","plug-zap","plus-circle","plus-square","plus","pocket","podcast","pointer","pound-sterling","power-off","power","printer","qr-code","quote","radio-receiver","radio","redo","refresh-ccw","refresh-cw","regex","repeat-1","repeat","reply-all","reply","rewind","rocket","rocking-chair","rotate-ccw","rotate-cw","rss","ruler","russian-ruble","save","scale","scan-line","scan","scissors","screen-share-off","screen-share","lucide-search","send","separator-horizontal","separator-vertical","server-crash","server-off","server","settings-2","settings","share-2","share","sheet","shield-alert","shield-check","shield-close","shield-off","shield","shirt","shopping-bag","shopping-cart","shovel","shrink","shuffle","sidebar-close","sidebar-open","sidebar","sigma","signal-high","signal-low","signal-medium","signal-zero","signal","skip-back","skip-forward","skull","slack","slash","sliders","smartphone-charging","smartphone","smile","snowflake","sort-asc","sort-desc","speaker","sprout","square","star-half","lucide-star","stop-circle","stretch-horizontal","stretch-vertical","strikethrough","subscript","sun","sunrise","sunset","superscript","swiss-franc","switch-camera","table","tablet","tag","target","tent","terminal-square","terminal","text-cursor-input","text-cursor","thermometer-snowflake","thermometer-sun","thermometer","thumbs-down","thumbs-up","ticket","timer-off","timer-reset","timer","toggle-left","toggle-right","tornado","trash-2","lucide-trash","trello","trending-down","trending-up","triangle","truck","tv-2","tv","twitch","twitter","type","umbrella","underline","undo","unlink-2","unlink","unlock","upload-cloud","upload","user-check","user-minus","user-plus","user-x","user","users","verified","vibrate","video-off","video","view","voicemail","volume-1","volume-2","volume-x","volume","wallet","wand","watch","waves","webcam","wifi-off","wifi","wind","wrap-text","wrench","x-circle","x-octagon","x-square","x","youtube","zap-off","zap","zoom-in","zoom-out","search-large"];var We=require("obsidian");var R=class extends We.FuzzySuggestModal{constructor(o){super(app);this.plugin=o,this.setPlaceholder(u("Choose a Icon for your new Command")),this.setInstructions([{command:"\u2191\u2193",purpose:u("to navigate")},{command:"\u21B5",purpose:u("to choose a custom icon")},{command:"esc",purpose:u("to cancel")}])}async awaitSelection(){return this.open(),new Promise((o,n)=>{this.onChooseItem=a=>o(a),this.onClose=()=>window.setTimeout(()=>n("No Icon selected"),0)})}renderSuggestion(o,n){n.addClass("mod-complex"),n.createDiv({cls:"suggestion-content"}).createDiv({cls:"suggestion-title"}).setText(o.item.replace(/-/g," ").replace(/(^\w{1})|(\s+\w{1})/g,c=>c.toUpperCase()));let i=n.createDiv({cls:"suggestion-aux"});(0,We.setIcon)(i.createSpan({cls:"suggestion-flair"}),o.item)}getItems(){return wt}getItemText(o){return o}onChooseItem(o,n){}};var eo=require("obsidian");var kt=require("obsidian");var U=class extends kt.SuggestModal{constructor(o){super(app);this.defaultName=o;this.setPlaceholder(u("Use a custom name")),this.resultContainerEl.style.display="none",this.setInstructions([{command:"",purpose:u("Choose a custom Name for your new Command")},{command:"\u21B5",purpose:u("to save")},{command:"esc",purpose:u("to cancel")}])}onOpen(){var a;super.onOpen(),this.inputEl.value=this.defaultName;let o=createDiv({cls:"cmdr-name-input-wrapper"});(a=this.inputEl.parentNode)==null||a.insertBefore(o,this.inputEl),o.appendChild(this.inputEl),o.parentElement.style.display="block";let n=createEl("button",{text:u("Save"),cls:"mod-cta"});n.onclick=i=>this.selectSuggestion(this.inputEl.value,i),o.appendChild(n)}async awaitSelection(){return this.open(),new Promise((o,n)=>{this.onChooseSuggestion=a=>o(a),this.onClose=()=>window.setTimeout(()=>n("No Name selected"),0)})}getSuggestions(o){return[o]}renderSuggestion(o,n){}onChooseSuggestion(o,n){}};var Je,_,Pt,pa,_e,Mt,It,Ue={},At=[],fa=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function ae(e,t){for(var o in t)e[o]=t[o];return e}function Tt(e){var t=e.parentNode;t&&t.removeChild(e)}function r(e,t,o){var n,a,i,c={};for(i in t)i=="key"?n=t[i]:i=="ref"?a=t[i]:c[i]=t[i];if(arguments.length>2&&(c.children=arguments.length>3?Je.call(arguments,2):o),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)c[i]===void 0&&(c[i]=e.defaultProps[i]);return je(e,c,n,a,null)}function je(e,t,o,n,a){var i={type:e,props:t,key:o,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:a==null?++Pt:a};return a==null&&_.vnode!=null&&_.vnode(i),i}function P(e){return e.children}function G(e,t){this.props=e,this.context=t}function ye(e,t){if(t==null)return e.__?ye(e.__,e.__.__k.indexOf(e)+1):null;for(var o;t0?je(f.type,f.props,f.key,f.ref?f.ref:null,f.__v):f)!=null){if(f.__=o,f.__b=o.__b+1,(C=A[s])===null||C&&f.key==C.key&&f.type===C.type)A[s]=void 0;else for(g=0;g=o.__.length&&o.__.push({__V:Ye}),o.__[e]}function D(e){return Ge=1,Jt(Xt,e)}function Jt(e,t,o){var n=Ke(ke++,2);if(n.t=e,!n.__c&&(n.__=[o?o(t):Xt(void 0,t),function(i){var c=n.__N?n.__N[0]:n.__[0],m=n.t(c,i);c!==m&&(n.__N=[m,n.__[1]],n.__c.setState({}))}],n.__c=z,!z.u)){z.u=!0;var a=z.shouldComponentUpdate;z.shouldComponentUpdate=function(i,c,m){if(!n.__c.__H)return!0;var l=n.__c.__H.__.filter(function(s){return s.__c});if(l.every(function(s){return!s.__N}))return!a||a.call(this,i,c,m);var h=!1;return l.forEach(function(s){if(s.__N){var g=s.__[0];s.__=s.__N,s.__N=void 0,g!==s.__[0]&&(h=!0)}}),!(!h&&n.__c.props===i)&&(!a||a.call(this,i,c,m))}}return n.__N||n.__}function O(e,t){var o=Ke(ke++,3);!_.__s&&Eo(o.__H,t)&&(o.__=e,o.i=t,z.__H.__h.push(o))}function Mo(e,t){var o=Ke(ke++,4);!_.__s&&Eo(o.__H,t)&&(o.__=e,o.i=t,z.__h.push(o))}function K(e){return Ge=5,Qe(function(){return{current:e}},[])}function Qe(e,t){var o=Ke(ke++,7);return Eo(o.__H,t)?(o.__V=e(),o.i=t,o.__h=e,o.__V):o.__}function ba(){for(var e;e=Zt.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach($e),e.__H.__h.forEach(ko),e.__H.__h=[]}catch(t){e.__H.__h=[],_.__e(t,e.__v)}}_.__b=function(e){z=null,Ft&&Ft(e)},_.__r=function(e){Vt&&Vt(e),ke=0;var t=(z=e.__c).__H;t&&(wo===z?(t.__h=[],z.__h=[],t.__.forEach(function(o){o.__N&&(o.__=o.__N),o.__V=Ye,o.__N=o.i=void 0})):(t.__h.forEach($e),t.__h.forEach(ko),t.__h=[])),wo=z},_.diffed=function(e){Wt&&Wt(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Zt.push(t)!==1&&Ot===_.requestAnimationFrame||((Ot=_.requestAnimationFrame)||Ca)(ba)),t.__H.__.forEach(function(o){o.i&&(o.__H=o.i),o.__V!==Ye&&(o.__=o.__V),o.i=void 0,o.__V=Ye})),wo=z=null},_.__c=function(e,t){t.some(function(o){try{o.__h.forEach($e),o.__h=o.__h.filter(function(n){return!n.__||ko(n)})}catch(n){t.some(function(a){a.__h&&(a.__h=[])}),t=[],_.__e(n,o.__v)}}),jt&&jt(e,t)},_.unmount=function(e){Ut&&Ut(e);var t,o=e.__c;o&&o.__H&&(o.__H.__.forEach(function(n){try{$e(n)}catch(a){t=a}}),o.__H=void 0,t&&_.__e(t,o.__v))};var qt=typeof requestAnimationFrame=="function";function Ca(e){var t,o=function(){clearTimeout(n),qt&&cancelAnimationFrame(t),setTimeout(e)},n=setTimeout(o,100);qt&&(t=requestAnimationFrame(o))}function $e(e){var t=z,o=e.__c;typeof o=="function"&&(e.__c=void 0,o()),z=t}function ko(e){var t=z;e.__c=e.__(),z=t}function Eo(e,t){return!e||e.length!==t.length||t.some(function(o,n){return o!==e[n]})}function Xt(e,t){return typeof t=="function"?t(e):t}var xo={};(function e(t,o,n,a){var i=!!(t.Worker&&t.Blob&&t.Promise&&t.OffscreenCanvas&&t.OffscreenCanvasRenderingContext2D&&t.HTMLCanvasElement&&t.HTMLCanvasElement.prototype.transferControlToOffscreen&&t.URL&&t.URL.createObjectURL);function c(){}function m(p){var d=o.exports.Promise,S=d!==void 0?d:t.Promise;return typeof S=="function"?new S(p):(p(c,c),null)}var l=function(){var p=Math.floor(16.666666666666668),d,S,M={},T=0;return typeof requestAnimationFrame=="function"&&typeof cancelAnimationFrame=="function"?(d=function(I){var E=Math.random();return M[E]=requestAnimationFrame(function x(B){T===B||T+p-1{(0,eo.setIcon)(i.current,e)},[e,t]),r("div",Fe({ref:i},o))}function X(e){let{isMobile:t,appId:o}=app;return e==="any"||e===o||e==="mobile"&&t||e==="desktop"&&!t}function Me(e){var o,n;let t="";for(let a of(o=e.hide.leftRibbon)!=null?o:[])t+=`div.side-dock-ribbon-action[aria-label="${a}"] {display: none !important; content-visibility: hidden;}`;for(let a of e.hide.statusbar)t+=`div.status-bar-item.plugin-${a} {display: none !important; content-visibility: hidden;}`;(n=document.head.querySelector("style#cmdr"))==null||n.remove(),t&&document.head.appendChild(createEl("style",{attr:{id:"cmdr"},text:t,type:"text/css"}))}async function So({target:e}){let t=activeDocument.createElement("canvas");activeDocument.body.appendChild(t),t.style.position="fixed",t.style.width="100vw",t.style.height="100vh",t.style.top="0px",t.style.left="0px",t.style["pointer-events"]="none",t.style["z-index"]="100";let o=Yt.create(t,{resize:!0,useWorker:!0}),n=e.getBoundingClientRect();await o({particleCount:eo.Platform.isDesktop?160:80,startVelocity:55,spread:75,angle:90,drift:-1,ticks:250,origin:{x:(n.x+n.width/2)/activeWindow.innerWidth,y:(n.y+n.height/2)/activeWindow.innerHeight}}),t.remove()}function oo(e){activeDocument.body.style.setProperty("--cmdr-spacing",`${e}px`)}function Ee(e){let t=Object.keys(app.commands.commands).filter(n=>n.startsWith("cmdr:macro-"));for(let n of t)app.commands.removeCommand(n);let o=e.settings.macros;for(let[n,a]of Object.entries(o))e.addCommand({id:`macro-${n}`,name:a.name,callback:()=>{e.executeMacro(parseInt(n))}})}function te(e){var n,a;let{classList:t,style:o}=document.body;o.setProperty("--at-button-height",((n=e.rowHeight)!=null?n:48)+"px"),o.setProperty("--at-button-width",((a=e.buttonWidth)!=null?a:48)+"px"),o.setProperty("--at-row-count",e.rowCount.toString()),o.setProperty("--at-spacing",e.spacing+"px"),o.setProperty("--at-offset",e.heightOffset+"px"),t.toggle("AT-multirow",e.rowCount>1),t.toggle("AT-row",!e.columnLayout),t.toggle("AT-column",e.columnLayout),t.toggle("AT-no-toolbar",e.rowCount===0)}function $t(){let{classList:e,style:t}=document.body;t.removeProperty("--at-button-height"),t.removeProperty("--at-button-width"),t.removeProperty("--at-row-count"),t.removeProperty("--at-spacing"),t.removeProperty("--at-offset"),e.remove("AT-multirow"),e.remove("AT-row"),e.remove("AT-column"),e.remove("AT-no-toolbar"),e.remove("advanced-toolbar")}function to(e){e.mappedIcons.forEach(t=>{let o=app.commands.commands[t.commandID];o?o.icon=t.iconID:e.mappedIcons.remove(t)})}var Sn=require("obsidian");var xe=require("obsidian");var Kt=require("obsidian");function Gt({modal:e}){return r(P,null,r("p",null,u("Are you sure you want to delete the Command?")),r("div",{className:"modal-button-container"},r("button",{className:"mod-warning",onClick:async()=>{e.plugin.settings.confirmDeletion=!1,e.plugin.saveSettings(),e.remove=!0,e.close()}},u("Remove and don't ask again")),r("button",{className:"mod-warning",onClick:()=>{e.remove=!0,e.close()}},u("Remove")),r("button",{onClick:()=>{e.remove=!1,e.close()}},u("Cancel"))))}var F=class extends Kt.Modal{constructor(o){super(app);this.plugin=o}async onOpen(){this.titleEl.innerText=u("Remove Command"),this.containerEl.style.zIndex="99",this.reactComponent=r(Gt,{modal:this}),W(this.reactComponent,this.contentEl)}async didChooseRemove(){return this.open(),new Promise(o=>{this.onClose=()=>{var n;return o((n=this.remove)!=null?n:!1)}})}onClose(){W(null,this.contentEl)}};var Z=class{constructor(t,o){this.plugin=t,this.pairs=o}};var ve=class extends Z{constructor(o,n){super(o,n);this.actions=new Map;this.init(),this.plugin.register(()=>this.actions.forEach((a,i)=>this.removeAction(i)))}getFileExplorers(){return app.workspace.getLeavesOfType("file-explorer")}init(){app.workspace.onLayoutReady(()=>{for(let o of this.pairs)X(o.mode)&&(app.workspace.onLayoutReady(()=>{this.getFileExplorers().forEach(a=>{this.addAction(o,a)})}),this.plugin.registerEvent(app.workspace.on("layout-change",()=>{this.getFileExplorers().forEach(a=>{this.addAction(o,a)})})))})}reorder(){this.actions.forEach((o,n)=>this.removeAction(n,!0)),this.init()}async addCommand(o){this.pairs.push(o),app.workspace.onLayoutReady(()=>{this.getFileExplorers().forEach(a=>{this.addAction(o,a)})}),this.plugin.registerEvent(app.workspace.on("layout-change",()=>{this.getFileExplorers().forEach(a=>{this.addAction(o,a)})})),await this.plugin.saveSettings()}async removeCommand(o){this.pairs.remove(o),this.removeAction(o),await this.plugin.saveSettings()}buttonExists(o,n){return[...o.view.containerEl.querySelectorAll("div.nav-buttons-container > .cmdr.clickable-icon")].some(a=>a.getAttribute("data-cmdr")===n.icon+n.name)}addAction(o,n){var l,h,s,g,C;if(this.buttonExists(n,o))return;let a=createDiv({cls:"cmdr clickable-icon",attr:{"aria-label-position":"top","aria-label":o.name,"data-cmdr":o.icon+o.name}});this.actions.set(o,a),a.style.color=o.color==="#000000"||o.color===void 0?"inherit":o.color;let i=!1,c=()=>{a.empty(),(0,xe.setIcon)(a,o.icon),a.onclick=()=>app.commands.executeCommandById(o.id)},m=()=>{a.empty(),(0,xe.setIcon)(a,"trash"),a.onclick=async()=>{(!this.plugin.settings.confirmDeletion||await new F(this.plugin).didChooseRemove())&&this.removeCommand(o)}};a.addEventListener("mouseleave",()=>{c(),i=!1}),a.addEventListener("mousemove",f=>{f.preventDefault(),f.stopImmediatePropagation(),f.shiftKey&&(i||m(),i=!0)}),a.addEventListener("contextmenu",f=>{f.stopImmediatePropagation(),new xe.Menu().addItem(b=>{b.setTitle(u("Add command")).setIcon("command").onClick(async()=>{let y=await q(this.plugin);this.addCommand(y)})}).addSeparator().addItem(b=>{b.setTitle(u("Change Icon")).setIcon("box").onClick(async()=>{let y=await new R(this.plugin).awaitSelection();y&&y!==o.icon&&(o.icon=y,await this.plugin.saveSettings(),this.reorder())})}).addItem(b=>{b.setTitle(u("Rename")).setIcon("text-cursor-input").onClick(async()=>{let y=await new U(o.name).awaitSelection();y&&y!==o.name&&(o.name=y,await this.plugin.saveSettings(),this.reorder())})}).addItem(b=>{b.dom.addClass("is-warning"),b.setTitle(u("Delete")).setIcon("lucide-trash").onClick(async()=>{(!this.plugin.settings.confirmDeletion||await new F(this.plugin).didChooseRemove())&&this.removeCommand(o)})}).showAtMouseEvent(f)}),c(),(C=(g=(s=(h=(l=n.view)==null?void 0:l.containerEl)==null?void 0:h.querySelector)==null?void 0:s.call(h,"div.nav-buttons-container"))==null?void 0:g.appendChild)==null||C.call(g,a)}removeAction(o,n=!1){let a=this.actions.get(o);if(!!a){if(n){a.remove(),this.actions.delete(o);return}a.addClass("cmdr-ribbon-removing"),a.addEventListener("transitionend",async()=>{a.remove(),this.actions.delete(o)})}}};var se=require("obsidian");var no=class extends Z{async addCommand(t){this.pairs.push(t),await this.plugin.saveSettings()}async removeCommand(t){this.pairs.remove(t),await this.plugin.saveSettings()}reorder(){}addRemovableCommand(t,o,n,a,i){return c=>{var f;c.dom.addClass("cmdr"),c.dom.style.color=o.color==="#000000"||o.color===void 0?"inherit":o.color,c.setSection("cmdr"),c.dom.style.display="flex";let m=createDiv({cls:"cmdr-menu-more-options"}),l=null;m.addEventListener("click",b=>{b.preventDefault(),b.stopImmediatePropagation(),l?(l.hide(),l=null):l=new se.Menu().addItem(y=>{y.setTitle(u("Change Icon")).setIcon("box").onClick(async()=>{let v=await new R(n).awaitSelection();v&&v!==o.icon&&(o.icon=v,await n.saveSettings())})}).addItem(y=>{y.setTitle(u("Rename")).setIcon("text-cursor-input").onClick(async()=>{let v=await new U(o.name).awaitSelection();v&&v!==o.name&&(o.name=v,await n.saveSettings())})}).addItem(y=>{y.dom.addClass("is-warning"),y.setTitle(u("Delete")).setIcon("lucide-trash").onClick(async()=>{(!n.settings.confirmDeletion||await new F(n).didChooseRemove())&&C()})}).showAtMouseEvent(b)}),(0,se.setIcon)(m,"more-vertical"),c.dom.append(m),c.setTitle((f=o.name)!=null?f:t.name).setIcon(o.icon).onClick(()=>app.commands.executeCommandById(o.id));let h=!1,s=()=>{m.style.display="none"},g=()=>{m.style.display="block"},C=async()=>{c.dom.addClass("cmdr-removing"),a.registerDomEvent(c.dom,"transitionend",()=>{c.dom.remove()}),i.remove(o),await n.saveSettings()};a.registerDomEvent(c.dom,"mousemove",b=>{b.preventDefault(),b.stopImmediatePropagation(),h||g(),h=!0}),a.registerDomEvent(c.dom,"mouseleave",()=>{s(),h=!1}),s()}}addCommandAddButton(t,o,n){t.settings.showAddCommand&&o.addItem(a=>{a.setTitle(u("Add command")).setIcon("plus-circle").setSection("cmdr").onClick(async()=>{try{let i=await q(t);n.push(i),await t.saveSettings()}catch(i){console.log(i)}})})}},Se=class extends no{applyEditorMenuCommands(t){return async(o,n,a)=>{this.addCommandAddButton(t,o,t.settings.editorMenu);for(let i of t.settings.editorMenu){let c=Q(i.id);!c||!X(i.mode)||c.checkCallback&&!c.checkCallback(!0)||c.editorCheckCallback&&!c.editorCheckCallback(!0,n,a)||o.addItem(this.addRemovableCommand.call(this,c,i,t,o,t.settings.editorMenu))}}}},Pe=class extends no{applyFileMenuCommands(t){return async(o,n,a,i)=>{this.addCommandAddButton(t,o,t.settings.fileMenu);for(let c of t.settings.fileMenu){let m=Q(c.id);if(!!m&&!(m.checkCallback&&!m.checkCallback(!0))){if(m.editorCallback){if(!((i==null?void 0:i.view)instanceof se.MarkdownView))continue}else if(m.editorCheckCallback)if((i==null?void 0:i.view)instanceof se.MarkdownView){if(!m.editorCheckCallback(!0,i.view.editor,i.view))continue}else continue;o.addItem(this.addRemovableCommand.call(this,m,c,t,o,t.settings.fileMenu))}}}}};var ce=require("obsidian");var ge=class extends Z{constructor(o,n){super(o,n);this.buttons=new WeakMap;this.init()}addPageHeaderButton(o,n){let{id:a,icon:i,name:c}=n,{view:m}=o;if(!(m instanceof ce.ItemView))return;let l=this.buttonsFor(o,!0);if(!l||l.has(a))return;let h=m.addAction(i,c,()=>{app.workspace.setActiveLeaf(o,{focus:!0}),app.commands.executeCommandById(a)});l.set(a,h),h.addClasses(["cmdr-page-header",a]),h.style.color=n.color==="#000000"||n.color===void 0?"inherit":n.color,h.addEventListener("contextmenu",s=>{s.stopImmediatePropagation(),new ce.Menu().addItem(g=>{g.setTitle(u("Add command")).setIcon("command").onClick(async()=>{let C=await q(this.plugin);this.addCommand(C)})}).addSeparator().addItem(g=>{g.setTitle(u("Change Icon")).setIcon("box").onClick(async()=>{let C=await new R(this.plugin).awaitSelection();C&&C!==n.icon&&(n.icon=C,await this.plugin.saveSettings(),this.reorder())})}).addItem(g=>{g.setTitle(u("Rename")).setIcon("text-cursor-input").onClick(async()=>{let C=await new U(n.name).awaitSelection();C&&C!==n.name&&(n.name=C,await this.plugin.saveSettings(),this.reorder())})}).addItem(g=>{g.dom.addClass("is-warning"),g.setTitle(u("Delete")).setIcon("lucide-trash").onClick(async()=>{(!this.plugin.settings.confirmDeletion||await new F(this.plugin).didChooseRemove())&&this.removeCommand(n)})}).showAtMouseEvent(s)})}init(){this.plugin.register(()=>{this.removeButtonsFromAllLeaves()}),this.plugin.registerEvent(app.workspace.on("layout-change",()=>{this.addButtonsToAllLeaves()})),app.workspace.onLayoutReady(()=>setTimeout(()=>this.addButtonsToAllLeaves(),100))}addAdderButton(o){var c;let{view:n}=o,a="cmdr-adder";if(!(n instanceof ce.ItemView)||(c=this.buttons.get(n))!=null&&c.has(a))return;let i=n.addAction("plus",u("Add new"),async()=>{this.addCommand(await q(this.plugin))});i.addClasses(["cmdr",a]),this.buttons.has(n)||this.buttons.set(n,new Map),this.buttons.get(n).set(a,i)}addButtonsToAllLeaves(o=!1){activeWindow.requestAnimationFrame(()=>app.workspace.iterateAllLeaves(n=>this.addButtonsToLeaf(n,o)))}removeButtonsFromAllLeaves(){activeWindow.requestAnimationFrame(()=>app.workspace.iterateAllLeaves(o=>this.removeButtonsFromLeaf(o)))}buttonsFor(o,n=!1){if(o.view instanceof ce.ItemView)return n&&!this.buttons.has(o.view)&&this.buttons.set(o.view,new Map),this.buttons.get(o.view)}addButtonsToLeaf(o,n=!1){var a;if(o.view instanceof ce.ItemView){if(n)this.removeButtonsFromLeaf(o);else if((a=this.buttonsFor(o))!=null&&a.size)return;for(let i=this.pairs.length-1;i>=0;i--){let c=this.pairs[i];X(c.mode)&&this.addPageHeaderButton(o,c)}this.plugin.settings.showAddCommand&&this.addAdderButton(o)}}removeButtonsFromLeaf(o){let n=this.buttonsFor(o);if(n){for(let a of n.values())a.detach();n==null||n.clear()}}reorder(){this.addButtonsToAllLeaves(!0)}async addCommand(o){this.pairs.push(o),this.addButtonsToAllLeaves(!0),await this.plugin.saveSettings()}async removeCommand(o){this.pairs.remove(o),this.addButtonsToAllLeaves(!0),await this.plugin.saveSettings()}};var de=require("obsidian");var be=class extends Z{constructor(o,n){super(o,n);this.actions=new Map;this.addBtn=createDiv({cls:"cmdr status-bar-item cmdr-adder",attr:{"aria-label-position":"top","aria-label":u("Add new")}});this.init(),this.plugin.register(()=>this.actions.forEach((a,i)=>this.removeAction(i)))}init(){app.workspace.onLayoutReady(()=>{this.container=app.statusBar.containerEl;for(let o of this.pairs)Q(o.id)||this.pairs.remove(o),X(o.mode)&&this.addAction(o);this.plugin.saveSettings(),this.plugin.registerDomEvent(this.container,"contextmenu",o=>{o.target===this.container&&new de.Menu().addItem(n=>{n.setTitle(u("Add command")).setIcon("command").onClick(async()=>{let a=await q(this.plugin);this.addCommand(a)})}).showAtMouseEvent(o)}),this.plugin.register(()=>this.addBtn.remove()),(0,de.setIcon)(this.addBtn,"plus"),this.addBtn.onclick=async()=>{let o=await q(this.plugin);this.addCommand(o),this.reorder()},this.plugin.settings.showAddCommand&&this.container.prepend(this.addBtn)})}reorder(){this.addBtn.remove(),this.actions.forEach((o,n)=>this.removeAction(n,!0)),this.init()}async addCommand(o){this.pairs.push(o),this.addAction(o),await this.plugin.saveSettings()}async removeCommand(o){this.pairs.remove(o),this.removeAction(o),await this.plugin.saveSettings()}addAction(o){let n=createDiv({cls:"cmdr status-bar-item clickable-icon",attr:{"aria-label-position":"top","aria-label":o.name}});this.actions.set(o,n),n.style.color=o.color==="#000000"||o.color===void 0?"inherit":o.color;let a=!1,i=()=>{n.empty(),(0,de.setIcon)(n,o.icon),n.onclick=()=>app.commands.executeCommandById(o.id)},c=()=>{n.empty(),(0,de.setIcon)(n,"trash"),n.onclick=async()=>{(!this.plugin.settings.confirmDeletion||await new F(this.plugin).didChooseRemove())&&this.removeCommand(o)}};n.addEventListener("mouseleave",()=>{i(),a=!1}),n.addEventListener("mousemove",m=>{m.preventDefault(),m.stopImmediatePropagation(),m.shiftKey&&(a||c(),a=!0)}),n.addEventListener("contextmenu",m=>{m.stopImmediatePropagation(),new de.Menu().addItem(l=>{l.setTitle(u("Add command")).setIcon("command").onClick(async()=>{let h=await q(this.plugin);this.addCommand(h)})}).addSeparator().addItem(l=>{l.setTitle(u("Change Icon")).setIcon("box").onClick(async()=>{let h=await new R(this.plugin).awaitSelection();h&&h!==o.icon&&(o.icon=h,await this.plugin.saveSettings(),this.reorder())})}).addItem(l=>{l.setTitle(u("Rename")).setIcon("text-cursor-input").onClick(async()=>{let h=await new U(o.name).awaitSelection();h&&h!==o.name&&(o.name=h,await this.plugin.saveSettings(),this.reorder())})}).addItem(l=>{l.dom.addClass("is-warning"),l.setTitle(u("Delete")).setIcon("lucide-trash").onClick(async()=>{(!this.plugin.settings.confirmDeletion||await new F(this.plugin).didChooseRemove())&&this.removeCommand(o)})}).showAtMouseEvent(m)}),i(),this.container.prepend(n)}removeAction(o,n=!1){let a=this.actions.get(o);if(!!a){if(n){a.remove(),this.actions.delete(o);return}a.addClass("cmdr-ribbon-removing"),a.addEventListener("transitionend",async()=>{a.remove(),this.actions.delete(o)})}}};var Qt=require("obsidian");var co=require("obsidian");var J=require("obsidian");var To=require("obsidian");var en=["https://github.com/jsmorabito","https://github.com/phibr0","https://www.youtube.com/watch?v=dQw4w9WgXcQ"];function Po(){let[e,t]=D(0);return r("div",{className:"cmdr-credits"},r("span",{onClick:()=>{t(o=>o+1),location.replace(en[e%en.length])}},u("By Johnny\u2728 and phibr0")))}function ya(e,t){for(var o in t)e[o]=t[o];return e}function Ao(e,t){for(var o in e)if(o!=="__source"&&!(o in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function on(e){this.props=e}function mn(e,t){function o(a){var i=this.props.ref,c=i==a.ref;return!c&&i&&(i.call?i(null):i.current=null),t?!t(this.props,a)||!c:Ao(this.props,a)}function n(a){return this.shouldComponentUpdate=o,r(e,a)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(on.prototype=new G).isPureReactComponent=!0,on.prototype.shouldComponentUpdate=function(e,t){return Ao(this.props,e)||Ao(this.state,t)};var tn=_.__b;_.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),tn&&tn(e)};var xs=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;var wa=_.__e;_.__e=function(e,t,o,n){if(e.then){for(var a,i=t;i=i.__;)if((a=i.__c)&&a.__c)return t.__e==null&&(t.__e=o.__e,t.__k=o.__k),a.__c(e,t)}wa(e,t,o,n)};var nn=_.unmount;function ln(e,t,o){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(n){typeof n.__c=="function"&&n.__c()}),e.__c.__H=null),(e=ya({},e)).__c!=null&&(e.__c.__P===o&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map(function(n){return ln(n,t,o)})),e}function un(e,t,o){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(n){return un(n,t,o)}),e.__c&&e.__c.__P===t&&(e.__e&&o.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=o)),e}function Io(){this.__u=0,this.t=null,this.__b=null}function pn(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function ao(){this.u=null,this.o=null}_.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),nn&&nn(e)},(Io.prototype=new G).__c=function(e,t){var o=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(o);var a=pn(n.__v),i=!1,c=function(){i||(i=!0,o.__R=null,a?a(m):m())};o.__R=c;var m=function(){if(!--n.__u){if(n.state.__a){var h=n.state.__a;n.__v.__k[0]=un(h,h.__c.__P,h.__c.__O)}var s;for(n.setState({__a:n.__b=null});s=n.t.pop();)s.forceUpdate()}},l=t.__h===!0;n.__u++||l||n.setState({__a:n.__b=n.__v.__k[0]}),e.then(c,c)},Io.prototype.componentWillUnmount=function(){this.t=[]},Io.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var o=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=ln(this.__b,o,n.__O=n.__P)}this.__b=null}var a=t.__a&&r(P,null,e.fallback);return a&&(a.__h=null),[r(P,null,t.__a?null:e.children),a]};var an=function(e,t,o){if(++o[1]===o[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(o=e.u;o;){for(;o.length>3;)o.pop()();if(o[1]{So(n),setTimeout(()=>location.replace("https://forms.gle/hPjn61G9bqqFb3256"),Math.random()*800+500)}},r(k,{icon:"message-square",size:20}),u("Leave feedback")),o=r("button",{className:"mod-cta",onClick:n=>{So(n),setTimeout(()=>location.replace("https://ko-fi.com/phibr0"),Math.random()*800+500)}},r(k,{icon:"coffee",size:20}),u("Support development"));return r("div",{className:"cmdr-about"},To.Platform.isMobile&&[r("hr",null),t,o],To.Platform.isDesktop&&[r("div",{className:"setting-item mod-toggle",style:{width:"100%",borderTop:"1px solid var(--background-modifier-border)",paddingTop:"18px"}},r("div",{className:"setting-item-info"},r("div",{className:"setting-item-name"},u("Leave feedback")),r("div",{className:"setting-item-description"},u("Share feedback, issues, and ideas with our feedback form."))),r("div",{className:"setting-item-control"},t)),r("div",{className:"setting-item mod-toggle",style:{width:"100%"}},r("div",{className:"setting-item-info"},r("div",{className:"setting-item-name"},u("Donate")),r("div",{className:"setting-item-description"},u("Consider donating to support development."))),r("div",{className:"setting-item-control"},o)),r("hr",null)],r(Ce,null),r("b",null,e.name),r(Po,null),r("a",{className:"cmdr-version",href:"https://github.com/phibr0/obsidian-commander/releases/tag/"+e.version},e.version))}var V=require("obsidian");function No(e,t){if(e.empty(),new V.Setting(e).setName("Toolbar Row Count").setDesc("Set how many Rows the Mobile Toolbar should have. Set this to 0 to remove the Toolbar.").addSlider(n=>n.setLimits(0,5,1).setValue(t.settings.advancedToolbar.rowCount).setDynamicTooltip().onChange(async a=>{t.settings.advancedToolbar.rowCount=a,await t.saveSettings(),te(t.settings.advancedToolbar)})),new V.Setting(e).setName("Column Layout").setDesc("Use a column based layout instead of the default row. This makes it easier to arrange the Commands.").addToggle(n=>n.setValue(t.settings.advancedToolbar.columnLayout).onChange(async a=>{t.settings.advancedToolbar.columnLayout=a,await t.saveSettings(),te(t.settings.advancedToolbar)})),new V.Setting(e).setName("Bottom Offset").setDesc("Offset the Toolbar from the Bottom of the Screen. This is useful if the toolbar is partially obscured by other UI Elements.").addSlider(n=>n.setLimits(0,32,1).setValue(t.settings.advancedToolbar.heightOffset).setDynamicTooltip().onChange(async a=>{t.settings.advancedToolbar.heightOffset=a,await t.saveSettings(),te(t.settings.advancedToolbar)})),V.Platform.isMobile){let n=document.createDocumentFragment();n.appendChild(createEl("h3",{text:"Custom Icons"})),e.appendChild(n),t.getCommandsWithoutIcons().forEach(a=>{new V.Setting(e).setName(a.name).setDesc(`ID: ${a.id}`).addButton(i=>{var m;let c=i.buttonEl.createDiv({cls:"AT-settings-icon"});if(a.icon)(0,V.setIcon)(c,a.icon);else{let l=(m=t.settings.advancedToolbar.mappedIcons.find(h=>h.commandID===a.id))==null?void 0:m.iconID;l?(0,V.setIcon)(c,l):i.setButtonText("No Icon")}i.onClick(async()=>{let l=await new R(t).awaitSelection(),h=t.settings.advancedToolbar.mappedIcons.find(s=>s.commandID===a.id);h?h.iconID=l:t.settings.advancedToolbar.mappedIcons.push({commandID:a.id,iconID:l}),await t.saveSettings(),to(t.settings.advancedToolbar),No(e,t)})}).addExtraButton(i=>{i.setIcon("reset").setTooltip("Reset to default - Requires a restart").onClick(async()=>{t.settings.advancedToolbar.mappedIcons=t.settings.advancedToolbar.mappedIcons.filter(c=>c.commandID!==a.id),delete a.icon,delete app.commands.commands[a.id].icon,await t.saveSettings(),No(e,t),new V.Notice("If the default Icon doesn't appear, you might have to restart Obsidian.")})})})}let o=e.appendChild(createEl("div",{cls:"cmdr-sep-con",attr:{style:"margin-top: 64px"}}));o.appendChild(createEl("div",{text:"Advanced Settings",attr:{style:"margin-bottom: 8px; font-weight: bold"}})),new V.Setting(o).setName("Button Height").setDesc("Change the Height of each Button inside the Mobile Toolbar (in px).").addText(n=>{var a,i;return n.setValue((i=(a=t.settings.advancedToolbar.rowHeight)==null?void 0:a.toString())!=null?i:"48").setPlaceholder("48").onChange(async c=>{let m=Number(c),l=isNaN(m);n.inputEl.toggleClass("is-invalid",l),l||(t.settings.advancedToolbar.rowHeight=m,await t.saveSettings(),te(t.settings.advancedToolbar))})}),new V.Setting(o).setName("Button Width").setDesc("Change the Width of each Button inside the Mobile Toolbar (in px).").addText(n=>{var a,i;return n.setValue((i=(a=t.settings.advancedToolbar.buttonWidth)==null?void 0:a.toString())!=null?i:"48").setPlaceholder("48").onChange(async c=>{let m=Number(c),l=isNaN(m);n.inputEl.toggleClass("is-invalid",l),l||(t.settings.advancedToolbar.buttonWidth=m,await t.saveSettings(),te(t.settings.advancedToolbar))})}),new V.Setting(o).setName("Toolbar Extra Spacing").setDesc("Some Themes need extra spacing in the toolbar. If your Toolbar doesn't wrap properly, try increasing this value.").addSlider(n=>n.setLimits(0,64,1).setValue(t.settings.advancedToolbar.spacing).setDynamicTooltip().onChange(async a=>{t.settings.advancedToolbar.spacing=a,await t.saveSettings(),te(t.settings.advancedToolbar)}))}function Do({plugin:e}){let t=K(null);return O(()=>(t.current&&No(t.current,e),()=>t.current&&t.current.empty()),[]),r(P,null,r("div",{className:"cmdr-sep-con callout","data-callout":"info"},r("span",{className:"cmdr-callout-warning"},r(k,{icon:"alert-circle"})," ","Info"),r("p",{className:"cmdr-warning-description"},"The Toolbar is only available in Obsidian Mobile. ",V.Platform.isMobile&&r(P,null,"To configure which Commands show up in the Toolbar, open the Mobile Settings.")),V.Platform.isMobile&&r("button",{onClick:()=>{app.setting.openTabById("mobile")},className:"mod-cta"},"Open Mobile Settings")),r("div",{ref:t,style:{paddingBottom:"128px"}}))}var le=require("obsidian");var Cn=require("obsidian");var bn=require("obsidian");var io=({initialColor:e,onChange:t})=>{let o=K(null);return O(()=>(o.current&&new bn.ColorComponent(o.current).setValue(e).onChange(t),()=>{var n,a;return(a=(n=o.current)==null?void 0:n.empty)==null?void 0:a.call(n)}),[t,e]),r("div",{ref:o,className:"cmdr-flex cmdr-items-center"})};function Bo({modal:e}){var t;return O(()=>{let o=()=>{this.forceUpdate()};return addEventListener("cmdr-icon-changed",o),()=>removeEventListener("cmdr-icon-changed",o)},[]),r("div",{className:"cmdr-mobile-modify-grid"},r("div",{className:"cmdr-mobile-modify-option",onClick:e.handleNewIcon},r("span",null,u("Icon")),r("span",{className:"cmdr-flex cmdr-gap-1"},r(k,{icon:e.pair.icon,size:20,className:"clickable-icon",style:{marginRight:"0px"}}),r(io,{initialColor:(t=e.pair.color)!=null?t:"#000",onChange:e.handleColorChange}))),r("div",{className:"cmdr-mobile-modify-option"},r("span",null,u("Name")),r("input",{onBlur:({currentTarget:o})=>e.handleRename(o.value),type:"text",placeholder:u("Custom Name"),value:e.pair.name})),r("div",{className:"cmdr-mobile-modify-option"},r("select",{className:"dropdown",value:e.pair.mode,onChange:({currentTarget:o})=>e.handleModeChange(o.value)},r("option",{value:"any"},u("Add command to all devices")),r("option",{value:"mobile"},u("Add command only to mobile devices")),r("option",{value:"desktop"},u("Add command only to desktop devices")),r("option",{value:app.appId},u("Add command only to this device")))),r("div",{className:"modal-button-container"},r("button",{className:"mod-cta",onClick:()=>e.close()},u("Done"))))}var me=class extends Cn.Modal{constructor(o,n,a,i,c){super(app);this.pair=o;this.handleRename=n;this.handleNewIcon=a;this.handleModeChange=i;this.handleColorChange=c}async onOpen(){this.titleEl.innerText=this.pair.name,this.reactComponent=r(Bo,{modal:this}),W(this.reactComponent,this.contentEl)}onClose(){W(null,this.contentEl)}};function Ie({value:e,handleChange:t,ariaLabel:o}){let[n,a]=D(!1),i=K(null),[c,m]=D(0);return O(()=>{var l,h;(l=i==null?void 0:i.current)==null||l.select(),(h=i==null?void 0:i.current)==null||h.focus()}),r("div",{class:"cmdr-editable"},n?r("input",{type:"text",value:e,style:{width:c+25+"px"},onKeyDown:l=>{l.key==="Enter"&&l.target.value.length>0&&(a(!1),t(l))},onBlur:()=>a(!1),ref:i}):r("span",{onDblClick:({target:l})=>{m(l==null?void 0:l.offsetWidth),a(!0)},"aria-label":o},e))}function Ho({pair:e,handleRemove:t,handleDown:o,handleUp:n,handleNewIcon:a,handleRename:i,handleModeChange:c,handleColorChange:m,sortable:l=!0}){var v;let h=Q(e.id);if(!h)return r(P,null,le.Platform.isDesktop&&r("div",{className:"setting-item mod-toggle"},r(k,{icon:"alert-triangle",size:20,className:"cmdr-icon clickable-icon mod-warning"}),r("div",{className:"setting-item-info"},r("div",{className:"setting-item-name"},e.name),r("div",{className:"setting-item-description"},u("This Command is not available on this device."))),r("div",{className:"setting-item-control"},r("button",{className:"mod-warning",style:"display: flex",onClick:t,"aria-label":u("Delete")},r(k,{icon:"lucide-trash"})))),le.Platform.isMobile&&r("div",{className:"mobile-option-setting-item",onClick:()=>{new le.Notice(u("This Command is not available on this device."))}},r("span",{className:"mobile-option-setting-item-remove-icon",onClick:t},r(k,{icon:"minus-with-circle",size:22,style:{color:"var(--text-error)"}})),r("span",{className:"mobile-option-setting-item-option-icon mod-warning"},r(k,{icon:"alert-triangle",size:22})),r("span",{className:"mobile-option-setting-item-name"},e.name)));let s=h.id.split(":").first(),g=app.plugins.manifests[s],C=!g,f=h.hasOwnProperty("checkCallback")||h.hasOwnProperty("editorCheckCallback"),b=Ha(e.mode),y=e.mode.match(/desktop|mobile|any/)?e.mode[0].toUpperCase()+e.mode.substring(1):u("This device");return r(P,null,le.Platform.isDesktop&&r("div",{className:"setting-item mod-toggle"},r(k,{icon:e.icon,size:20,"aria-label":u("Choose new"),onClick:a,className:"cmdr-icon clickable-icon"}),r("div",{className:"setting-item-info"},r("div",{className:"setting-item-name"},r(Ie,{ariaLabel:u("Double click to rename"),handleChange:({target:A})=>{i(A==null?void 0:A.value)},value:e.name}),e.name!==h.name&&r("span",{style:"margin-left: .8ex"},"(",h.name,")")),r("div",{className:"setting-item-description"},u("Added by {{plugin_name}}.".replace("{{plugin_name}}",C?"Obsidian":g.name))," ",f?u("Warning: This is a checked Command, meaning it might not run under every circumstance."):"")),r("div",{className:"setting-item-control"},r(io,{initialColor:(v=e.color)!=null?v:"#000",onChange:m}),l&&r(P,null,r(k,{icon:"arrow-down",className:"setting-editor-extra-setting-button clickable-icon",onClick:o,"aria-label":u("Move down")}),r(k,{icon:"arrow-up",className:"setting-editor-extra-setting-button clickable-icon",onClick:n,"aria-label":u("Move up")})),r(k,{icon:b,className:"setting-editor-extra-setting-button clickable-icon",onClick:()=>c(),"aria-label":u("Change Mode (Currently: {{current_mode}})").replace("{{current_mode}}",y)}),r("button",{className:"mod-warning",style:"display: flex",onClick:t,"aria-label":u("Delete")},r(k,{icon:"lucide-trash"})))),le.Platform.isMobile&&r("div",{className:"mobile-option-setting-item"},r("span",{className:"mobile-option-setting-item-remove-icon",onClick:t},r(k,{icon:"minus-with-circle",size:22,style:{color:"var(--text-error)"}})),r("span",{className:"mobile-option-setting-item-option-icon"},r(k,{icon:e.icon,size:22,onClick:()=>{new me(e,i,a,c,m).open()}})),r("span",{className:"mobile-option-setting-item-name",onClick:()=>{new me(e,i,a,c,m).open()}},e.name,e.name!==h.name&&r("span",{className:"cmdr-option-setting-name"},"(",h.name,")")),r("span",{className:"mobile-option-setting-item-option-icon"},l&&r(P,null,r(k,{icon:"arrow-down",className:"clickable-icon",onClick:o}),r(k,{icon:"arrow-up",className:"clickable-icon",onClick:n})),r(k,{icon:"three-horizontal-bars",className:"clickable-icon",onClick:()=>{new me(e,i,a,c,m).open()}}))))}function Ha(e){return e==="mobile"?"smartphone":e==="desktop"?"monitor":e==="any"?"cmdr-all-devices":"airplay"}function Ro(e,t,o){let n=t<0?e.length+t:t;if(n>=0&&n{if(a.mode.match(/desktop|mobile|any/)||a.mode===app.appId)return r(Ho,{sortable:n,key:a.id,pair:a,handleRemove:async()=>{(!t.settings.confirmDeletion||await new F(t).didChooseRemove())&&(await e.removeCommand(a),this.forceUpdate())},handleUp:()=>{Ro(e.pairs,i,i-1),e.reorder(),this.forceUpdate()},handleDown:()=>{Ro(e.pairs,i,i+1),e.reorder(),this.forceUpdate()},handleRename:async c=>{a.name=c,await t.saveSettings(),e.reorder(),this.forceUpdate()},handleNewIcon:async()=>{let c=await new R(t).awaitSelection();c&&c!==a.icon&&(a.icon=c,await t.saveSettings(),e.reorder(),this.forceUpdate()),dispatchEvent(new Event("cmdr-icon-changed"))},handleModeChange:async c=>{let m=["any","desktop","mobile",app.appId],l=m.indexOf(a.mode);l===3&&(l=-1),a.mode=c||m[l+1],await t.saveSettings(),e.reorder(),this.forceUpdate()},handleColorChange:async c=>{a.color=c,await t.saveSettings(),e.reorder()}})})),!e.pairs.some(a=>X(a.mode)||a.mode.match(/mobile|desktop/))&&r("div",{class:"cmdr-commands-empty"},r(Ce,null),r("h3",null,u("No commands here!")),r("span",null,u("Would you like to add one now?"))),_n.Platform.isMobile&&r("hr",null),r("div",{className:"cmdr-add-new-wrapper"},r("button",{className:"mod-cta",onClick:async()=>{let a=await q(t);await e.addCommand(a),e.reorder(),this.forceUpdate()}},u("Add command")))),o)}function ro({title:e,children:t}){let[o,n]=D(!1);return r("div",{className:"cmdr-accordion cmdr-sep-con","aria-expanded":o},r("div",{className:"cmdr-accordion-header cmdr-mb-1",onClick:()=>{n(!o)}},r(k,{className:"cmdr-accordion-chevron clickable-icon",icon:"chevron-down",size:24}),r("span",null,e)),r("div",{className:"cmdr-accordion-content",style:{maxHeight:[t].flat().length*120+"px"}},t))}function zo({name:e,description:t,children:o,className:n}){return r("div",{className:`setting-item ${n}`},r("div",{className:"setting-item-info"},r("div",{className:"setting-item-name"},e),r("div",{className:"setting-item-description"},t)),r("div",{className:"setting-item-control"},o))}function Oo(e){let[t,o]=D(e.value);return r(zo,{name:e.name,description:e.description,className:"mod-toggle"},r("div",{className:`checkbox-container ${t?"is-enabled":""}`,onClick:()=>{o(!t),e.changeHandler(t)}}))}function Fo({name:e,description:t,changeHandler:o,value:n,hideLabel:a,showLabel:i}){let[c,m]=D(n);return r(zo,{name:e,description:t,className:"mod-toggle"},r(k,{"aria-label":c?i:a,icon:c?"eye-off":"eye",size:20,className:"clickable-icon",onClick:()=>{m(!c),o(c)}}))}function so(e){var n,a,i;let[t,o]=D(e.value);return r(zo,{description:e.description,name:e.name,className:"cmdr-slider"},r("div",null,r(Ie,{ariaLabel:u("Double click to enter custom value"),value:t.toString(),handleChange:({target:c})=>{let m=Number(c.value);!isNaN(m)&&t!==m&&(o(m),e.changeHandler(m))}}),r("input",{class:"slider",type:"range",min:(n=e.min)!=null?n:"0",max:(a=e.max)!=null?a:"32",step:(i=e.step)!=null?i:"1",value:t,onPointerMove:({target:c})=>{t!==c.value&&(o(c.value),e.changeHandler(c.value))}})))}function yn({plugin:e}){let[t,o]=D([]),n=e.settings.hide.leftRibbon;return O(()=>{o(app.workspace.leftRibbon.items.map(a=>({name:a.title,icon:a.icon})))},[]),r(P,null,r("hr",null),r(ro,{title:u("Hide other Commands")},t.map(a=>r(Fo,{name:a.name,description:"",hideLabel:u("Hide"),showLabel:u("Show"),changeHandler:async i=>{i?n.contains(a.name)&&n.remove(a.name):n.push(a.name),Me(e.settings),await e.saveSettings()},value:n.contains(a.name)}))))}function wn({plugin:e}){let t=e.settings.hide.statusbar,[o,n]=D([]);return O(()=>{let i=[...app.statusBar.containerEl.getElementsByClassName("status-bar-item")].map(c=>[...c.classList].find(m=>m.startsWith("plugin-"))).filter(c=>c).map(c=>c.substring(7));n(i.map(c=>app.plugins.manifests[c]||{id:c,name:c.replace(/-/g," ").replace(/(^\w{1})|(\s+\w{1})/g,m=>m.toUpperCase()),description:"Core Plugin"}))},[]),r(P,null,r("hr",null),r(ro,{title:u("Hide other Commands")},o.map(a=>r(Fo,{name:a.name,description:a.description,value:t.contains(a.id),hideLabel:u("Hide"),showLabel:u("Show"),changeHandler:async i=>{i?t.contains(a.id)&&t.remove(a.id):t.push(a.id),Me(e.settings),await e.saveSettings()}}))))}var En=require("obsidian");var Mn=require("obsidian");function kn({plugin:e,macro:t,onSave:o,onCancel:n}){let[a,i]=D(t.name||"Macro Name"),[c,m]=D(t.icon||"star"),[l,h]=D(t.startup||!1),[s,g]=D(JSON.parse(JSON.stringify(t.macro))||[]),C=this.forceUpdate.bind(this),f=async()=>{let y=await new ne(e).awaitSelection();y&&g([...s,{action:0,commandId:y.id}])},b=async()=>{g([...s,{action:1,delay:250}])};return r("div",null,r("div",{class:"setting-item cmdr-mm-item"},r("div",null,r("span",null,"Name"),r("input",{type:"text",placeholder:"Macro Name",value:a,onChange:y=>i(y.currentTarget.value),width:"100%"})),r("div",null,r("span",null,"Icon"),r("button",{onClick:async()=>m(await new R(e).awaitSelection())},r(k,{icon:c})))),s.map((y,v)=>{switch(y.action){case 0:let A=Q(y.commandId);return r("div",{class:"setting-item cmdr-mm-item"},r("div",null,r("button",{onClick:async()=>{let w=await new ne(e).awaitSelection();g(s.map((H,ee)=>ee===v?Go(Fe({},H),{commandId:w.id}):H))}},(A==null?void 0:A.name)||"Cannot find Command")),r("div",null,r("div",{class:"cmdr-mm-action-options"},r(k,{class:"clickable-icon",icon:"arrow-down",onClick:()=>{if(v===s.length-1)return;let w=[...s],H=w[v];w[v]=w[v+1],w[v+1]=H,g(w)}}),r(k,{class:"clickable-icon",icon:"arrow-up",onClick:()=>{if(v===0)return;let w=[...s],H=w[v];w[v]=w[v-1],w[v-1]=H,g(w)}}),r(k,{class:"clickable-icon",icon:"cross",onClick:()=>{g(s.filter((w,H)=>H!==v))}}))));case 1:return r("div",{class:"setting-item cmdr-mm-item"},r("div",null,r(so,{name:"Delay",min:0,max:1e4,step:50,description:"Delay in milliseconds",value:y.delay,changeHandler:w=>y.delay=w})),r("div",null,r("div",{class:"cmdr-mm-action-options"},r(k,{class:"clickable-icon",icon:"arrow-down",onClick:()=>{if(v===s.length-1)return;let w=[...s],H=w[v];w[v]=w[v+1],w[v+1]=H,g(w)}}),r(k,{class:"clickable-icon",icon:"arrow-up",onClick:()=>{if(v===0)return;let w=[...s],H=w[v];w[v]=w[v-1],w[v-1]=H,g(w)}}),r(k,{class:"clickable-icon",icon:"cross",onClick:()=>{g(s.filter((w,H)=>H!==v))}}))));case 2:return r("div",null,"Editor: ",y.action);case 3:return r("div",null,"Loop: ",y.times)}}),r("div",{className:"setting-item cmdr-mm-actions cmdr-justify-between"},r("div",{className:"cmdr-flex cmdr-items-center cmdr-justify-self-start"},r("input",{type:"checkbox",id:"checkbox",checked:l,onChange:({target:y})=>{var v;h((v=y==null?void 0:y.checked)!=null?v:!1)}}),r("label",{htmlFor:"checkbox"},"Auto-Run on Startup")),r("div",null,r("button",{onClick:f},"Add Command"),r("button",{onClick:b},"Add Delay"))),r("div",{className:"cmdr-mm-control"},r("button",{class:s.length===0?"disabled":"mod-cta",disabled:s.length===0,onClick:()=>s.length&&o({macro:s,name:a,icon:c,startup:l})},"Save"),r("button",{onClick:n},"Cancel")))}var Ae=class extends Mn.Modal{constructor(o,n,a){super(app);this.macro=n,this.plugin=o,this.onSave=a}onOpen(){this.titleEl.setText("Macro Builder"),W(r(kn,{plugin:this.plugin,macro:this.macro,onSave:this.onSave,onCancel:this.close.bind(this)}),this.contentEl)}onClose(){W(null,this.contentEl)}};function Vo({plugin:e,macros:t}){let o=(a,i)=>{let c=l=>{t.splice(i!==void 0?i:t.length,i!==void 0?1:0,l),e.saveSettings(),this.forceUpdate(),Ee(e),m.close()},m=new Ae(e,a,c);m.open()},n=a=>{t.splice(a,1),e.saveSettings(),this.forceUpdate(),Ee(e)};return r(P,null,r("div",{className:"cmdr-sep-con"},t.map((a,i)=>r("div",{class:"setting-item mod-toggle"},r("div",{className:"setting-item-info"},r("div",{className:"setting-item-name"},a.name),r("div",{className:"setting-item-description"},a.macro.length," Actions")),r("div",{className:"setting-item-control"},r("button",{"aria-label":"Edit Macro",onClick:()=>o(a,i)},r(k,{icon:"lucide-pencil"})),r("button",{"aria-label":"Delete",class:"mod-warning",onClick:async()=>{(!e.settings.confirmDeletion||await new F(e).didChooseRemove())&&n(i)}},r(k,{icon:"trash"})))))),!t.length&&r("div",{class:"cmdr-commands-empty"},r(Ce,null),r("h3",null,"No Macros yet!"),r("span",null,u("Would you like to add one now?"))),En.Platform.isMobile&&r("hr",null),r("div",{className:"cmdr-add-new-wrapper"},r("button",{class:"mod-cta",onClick:()=>o({name:"",macro:[],icon:"star"})},"Add Macro")))}function Te({plugin:e,mobileMode:t}){let[o,n]=D(0),[a,i]=D(!0),c=({key:l,shiftKey:h})=>{h&&l==="Tab"?o>0?n((o-1)%m.length):n(m.length-1):l==="Tab"&&n((o+1)%m.length)};O(()=>(addEventListener("keydown",c),()=>removeEventListener("keydown",c)),[o]),J.Platform.isMobile&&O(()=>{let l=document.querySelector(".modal-setting-back-button"),h=l.cloneNode(!0);l.parentNode.replaceChild(h,l),i(!0)},[]),O(()=>{let l=document.querySelector(".modal-setting-back-button");!l||(a?(l.parentElement.lastChild.textContent="Commander",l.onclick=()=>app.setting.closeActiveTab()):(l.parentElement.lastChild.textContent=m[o].name,l.onclick=()=>i(!0)))},[a]);let m=Qe(()=>[{name:u("General"),tab:r(P,null,r(Oo,{name:u("Always ask before removing?"),description:u("Always show a Popup to confirm deletion of a Command."),value:e.settings.confirmDeletion,changeHandler:async l=>{e.settings.confirmDeletion=!l,await e.saveSettings()}}),r(Oo,{value:e.settings.showAddCommand,name:u('Show "Add Command" Button'),description:'Show the "Add Command" Button in every Menu.',changeHandler:async l=>{e.settings.showAddCommand=!l,e.manager.pageHeader.reorder(),await e.saveSettings()}}),r(so,{value:e.settings.spacing,name:u("Choose custom spacing for Command Buttons"),description:u("Change the spacing between commands. You can set different values on mobile and desktop."),changeHandler:async l=>{oo(l),e.settings.spacing=l,await e.saveSettings()}}))},{name:u("Left Ribbon"),tab:r(ie,{manager:e.manager.leftRibbon,plugin:e,sortable:!1},r(yn,{plugin:e}),r("div",{className:"cmdr-sep-con callout","data-callout":"warning"},r("span",{className:"cmdr-callout-warning"},r(k,{icon:"alert-triangle"})," ","Reordering and Sorting"),r("p",{className:"cmdr-warning-description"},"As of Obsidian 1.1.0 you can reorder the Buttons in the left ribbon by dragging. This will replace the old sorting feature.")))},{name:u("Page Header"),tab:r(ie,{manager:e.manager.pageHeader,plugin:e},r("hr",null),r("div",{className:"cmdr-sep-con callout","data-callout":"warning"},r("span",{className:"cmdr-callout-warning"},r(k,{icon:"alert-triangle"})," ",u("Warning")),r("p",{className:"cmdr-warning-description"},u("As of Obsidian 0.16.0 you need to explicitly enable the View Header.")),r("button",{onClick:()=>{app.setting.openTabById("appearance"),setTimeout(()=>{var l,h,s,g;app.setting.activeTab.containerEl.scroll({behavior:"smooth",top:250}),(g=(s=(h=(l=app.setting.activeTab.containerEl.querySelectorAll(".setting-item-heading")[1].nextSibling)==null?void 0:l.nextSibling)==null?void 0:h.nextSibling)==null?void 0:s.addClass)==null||g.call(s,"cmdr-cta")},50)},className:"mod-cta"},u("Open Appearance Settings"))))},{name:u("Statusbar"),tab:r(ie,{manager:e.manager.statusBar,plugin:e},r(wn,{plugin:e}))},{name:u("Editor Menu"),tab:r(ie,{manager:e.manager.editorMenu,plugin:e})},{name:u("File Menu"),tab:r(ie,{manager:e.manager.fileMenu,plugin:e})},{name:u("Explorer"),tab:r(ie,{manager:e.manager.explorerManager,plugin:e},r("hr",null),r("div",{className:"cmdr-sep-con callout","data-callout":"warning"},r("span",{className:"cmdr-callout-warning"},r(k,{icon:"alert-triangle"})," ",u("Warning")),r("p",{className:"cmdr-warning-description"},"When clicking on a Command in the Explorer, the Explorer view will become focused. This might interfere with Commands that are supposed to be executed on an active File/Explorer.")))},{name:J.Platform.isMobile?"Mobile Toolbar":"Toolbar",tab:r(Do,{plugin:e})},{name:"Macros",tab:r(Vo,{plugin:e,macros:e.settings.macros})}],[]);return r(P,null,J.Platform.isDesktop&&r("div",{className:"cmdr-setting-title"},r("h1",null,e.manifest.name)),(J.Platform.isDesktop||a)&&r(Oa,{tabs:m,activeTab:o,setActiveTab:n,setOpen:i}),r("div",{class:`cmdr-setting-content ${t?"cmdr-mobile":""}`},(J.Platform.isDesktop||!a)&&m[o].tab,(J.Platform.isMobile&&a||J.Platform.isDesktop&&o===0)&&r(Lo,{manifest:e.manifest})))}function Oa({tabs:e,activeTab:t,setActiveTab:o,setOpen:n}){let a=K(null),i=c=>{var m;c.preventDefault(),(m=a.current)==null||m.scrollBy({left:c.deltaY>0?16:-16})};return O(()=>{let c=a.current;if(!(!c||J.Platform.isMobile))return c.addEventListener("wheel",i),()=>c.removeEventListener("wheel",i)},[]),O(()=>{var c;return(c=document.querySelector(".cmdr-tab-active"))==null?void 0:c.scrollIntoView({behavior:"smooth",block:"nearest"})},[t]),r("nav",{class:`cmdr-setting-header ${J.Platform.isMobile?"cmdr-mobile":""}`,ref:a},r("div",{class:`cmdr-setting-tab-group ${J.Platform.isMobile?"vertical-tab-header-group-items":""}`},e.map((c,m)=>r("div",{className:`cmdr-tab ${t===m?"cmdr-tab-active":""} ${J.Platform.isMobile?"vertical-tab-nav-item":""}`,onClick:()=>{o(m),n(!1)}},c.name,J.Platform.isMobile&&r(k,{className:"vertical-tab-nav-item-chevron cmdr-block",icon:"chevron-right",size:24})))),J.Platform.isDesktop&&r("div",{className:"cmdr-fill"}))}var Le=class extends co.PluginSettingTab{constructor(o){super(app,o);this.plugin=o}display(){W(r(Te,{plugin:this.plugin,mobileMode:co.Platform.isMobile}),this.containerEl)}hide(){W(null,this.containerEl)}};var mo=require("obsidian");var Ne=class extends mo.Modal{constructor(o){super(app);this.plugin=o,this.containerEl.addClass("cmdr-setting-modal")}onOpen(){let o=mo.Platform.isMobile;W(r(Te,{plugin:this.plugin,mobileMode:o}),this.contentEl)}onClose(){W(null,this.contentEl)}};var xn=require("obsidian");function Wo(){(0,xn.addIcon)("cmdr-all-devices",'')}var De=class extends Z{constructor(o){super(o,o.settings.leftRibbon);this.plugin=o,this.plugin.settings.leftRibbon.forEach(n=>this.addCommand(n,!1)),app.workspace.onLayoutReady(()=>{})}async addCommand(o,n=!0){if(n&&(this.plugin.settings.leftRibbon.push(o),await this.plugin.saveSettings()),X(o.mode)){this.plugin.addRibbonIcon(o.icon,o.name,()=>app.commands.executeCommandById(o.id));let a=app.workspace.leftRibbon.items.find(i=>i.icon===o.icon&&i.name===i.name);a&&(a.buttonEl.style.color=o.color==="#000000"||o.color===void 0?"inherit":o.color),this.plugin.register(()=>this.removeCommand(o,!1))}}async removeCommand(o,n=!0){n&&(this.plugin.settings.leftRibbon.remove(o),await this.plugin.saveSettings());let a=app.workspace.leftRibbon.items.find(i=>i.icon===o.icon&&i.name===i.name);a&&a.buttonEl.remove(),app.workspace.leftRibbon.items.remove(a)}reorder(){this.plugin.settings.leftRibbon.forEach(o=>{this.removeCommand(o,!1),this.addCommand(o,!1)})}};var lo=class extends Sn.Plugin{async executeStartupMacros(){this.settings.macros.forEach((o,n)=>{o.startup&&this.executeMacro(n)})}async executeMacro(o){let n=this.settings.macros[o];if(!n)throw new Error("Macro not found");for(let a of n.macro)switch(a.action){case 0:{await app.commands.executeCommandById(a.commandId);continue}case 1:{await new Promise(i=>setTimeout(i,a.delay));continue}case 2:continue;case 3:{for(let i=0;inew Ne(this).open()}),this.registerEvent(app.workspace.on("editor-menu",this.manager.editorMenu.applyEditorMenuCommands(this))),this.registerEvent(app.workspace.on("file-menu",this.manager.fileMenu.applyFileMenuCommands(this))),app.workspace.onLayoutReady(()=>{Me(this.settings),Ee(this),oo(this.settings.spacing),te(this.settings.advancedToolbar),to(this.settings.advancedToolbar),this.executeStartupMacros()})}onunload(){var o;(o=document.head.querySelector("style#cmdr"))==null||o.remove(),$t()}async loadSettings(){let o=Object.assign({},yt,await this.loadData());this.settings=o}async saveSettings(){await this.saveData(this.settings)}listActiveToolbarCommands(){return this.app.vault.getConfig("mobileToolbarCommands")}getCommands(){let o=[];return this.listActiveToolbarCommands().forEach(n=>{let a=this.app.commands.commands[n];a&&o.push(a)}),o}getCommandsWithoutIcons(o=!0){let n=[];return this.getCommands().forEach(a=>{a&&!a.icon&&n.push(a)}),o&&this.getCommands().forEach(a=>{this.settings.advancedToolbar.mappedIcons.find(i=>i.commandID===a.id)&&n.push(a)}),n}}; + +/* by phibr0 */ diff --git a/.obsidian.mobile/plugins/cmdr/manifest.json b/.obsidian.mobile/plugins/cmdr/manifest.json new file mode 100644 index 00000000..eb8877ab --- /dev/null +++ b/.obsidian.mobile/plugins/cmdr/manifest.json @@ -0,0 +1,11 @@ +{ + "id": "cmdr", + "name": "Commander", + "version": "0.5.1", + "minAppVersion": "1.4.0", + "description": "Customize your workspace by adding commands everywhere, create Macros and supercharge your mobile toolbar.", + "author": "jsmorabito & phibr0", + "authorUrl": "https://github.com/phibr0", + "fundingUrl": "https://ko-fi.com/phibr0", + "isDesktopOnly": false +} diff --git a/.obsidian.mobile/plugins/cmdr/styles.css b/.obsidian.mobile/plugins/cmdr/styles.css new file mode 100644 index 00000000..b90225bf --- /dev/null +++ b/.obsidian.mobile/plugins/cmdr/styles.css @@ -0,0 +1 @@ +.cmdr{transition:transform .4s 0s}.cmdr.status-bar-item{margin:0}.cmdr-removing{transform:translate(100%);z-index:0}.cmdr-ribbon-removing{transform:scale(0)}.cmdr-setting-title{display:flex;align-items:baseline;justify-content:space-between}.cmdr-setting-title h1{font-weight:900;margin-top:6px;margin-bottom:12px}.cmdr-option-setting-name{margin-left:.8ex}.cmdr-base-component{padding:0 20px;margin-bottom:-18px}.cmdr-menu-more-options{color:var(--text-muted);position:absolute;right:6px;padding-top:2px;transform:scale(.9);transition:all .15s ease}.cmdr-menu-more-options:hover{color:var(--text-primary)}.cmdr-mobile .cmdr-credits{place-content:center}.cmdr-fill{border:2px solid #0000;width:100%}.cmdr-icon{height:20px;align-self:center}.cmdr-setting-modal>.modal{height:60vh;width:80vw}.cmdr-editable{display:inline-block}.cmdr-editable input{padding:0;border:none;height:unset;background-color:initial!important;border-bottom:1px solid var(--interactive-accent);border-radius:0}.cmdr-setting-content{height:calc(100% - 10rem)}.cmdr-setting-content .setting-item:first{border-top:none}.cmdr-commands-empty{display:flex;place-items:center;flex-flow:column;margin:2.5rem 0 1.25rem;place-content:center}.cmdr-commands-empty svg{width:100%}.cmdr-commands-empty h3{margin:8px 0;font-weight:900}.cmdr-sep-con:not(:empty){background-color:var(--background-primary);border:1px solid var(--background-modifier-border);padding:12px;border-radius:12px}.cmdr-sep-con:not(:empty) .setting-item:first-of-type{padding-top:0}.cmdr-sep-con:not(:empty) .setting-item:last-of-type{padding-bottom:0}.cmdr-sep-con:not(:empty) .cmdr-callout-warning{padding:var(--callout-title-padding);display:flex;gap:var(--size-4-1);font-size:var(--callout-title-size);color:rgb(var(--callout-color));line-height:var(--line-height-tight);font-weight:700}.cmdr-sep-con:not(:empty) p.cmdr-warning-description{margin:8px 0}.cmdr-accordion{margin-bottom:16px}.cmdr-accordion .cmdr-accordion-chevron{margin-left:0;margin-right:4px;height:24px}.cmdr-accordion .cmdr-accordion-chevron>svg{transition:all .25s ease}.cmdr-accordion .cmdr-accordion-content{max-height:1000px;transition:all .3s ease-in-out;overflow:hidden;margin-left:14px;padding-left:14px}.cmdr-accordion .cmdr-accordion-content .setting-item{padding-top:12px}.cmdr-accordion[aria-expanded=false] .cmdr-accordion-chevron>svg{transform:rotate(-90deg)}.cmdr-accordion[aria-expanded=false] .cmdr-accordion-content{max-height:0!important;transition:max-height .3s cubic-bezier(0,1,0,1)}.cmdr-accordion .cmdr-accordion-header{display:flex;cursor:var(--cursor)}.cmdr-accordion .cmdr-accordion-header span{font-weight:600;margin-top:0;align-self:end}.cmdr-add-new-wrapper{width:100%;margin-top:12px;margin-bottom:2rem;display:flex;justify-content:center;align-items:center}.cmdr-add-new-wrapper button{margin:0 24px}.cmdr-adder{opacity:0;transition:opacity .12s ease}.cmdr-adder:hover{opacity:1}.cmdr-adder.view-action{order:-1001}.cmdr-page-header{order:-1000}.cmdr-macro-builder .modal{height:80vh;width:95vw;padding:0}.cmdr-macro-builder .modal-close-button{z-index:99}.cmdr-macro-builder .modal-content{margin-top:0}.cmdr-macro-builder .cmdr-macro-icon{display:flex;justify-content:center}.cmdr-macro-builder .cmdr-macro-control{position:absolute;z-index:5;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:3em;top:0}.cmdr-macro-builder .cmdr-macro-control .cmdr-macro-button{background-color:var(--background-secondary-alt);aspect-ratio:1;display:flex;justify-content:center;align-items:center;border-radius:2px;outline:1px solid var(--background-modifier-border);padding:2px}.cmdr-setting-header{margin-bottom:24px;overflow-y:hidden;overflow-x:auto}.cmdr-setting-header .cmdr-setting-tab-group{display:flex;align-items:flex-end;border-bottom:2px solid var(--background-modifier-border)}.cmdr-setting-header.cmdr-mobile .cmdr-setting-tab-group{display:flex;flex-direction:column;align-items:flex-start;border:none}.cmdr-setting-header.cmdr-mobile .cmdr-setting-tab-group .cmdr-tab{border-left:none!important;border-right:none!important;border-top:none!important;transform:none;transition:color .2s ease;width:100%;display:flex;font-weight:500;justify-content:space-between}.cmdr-setting-header.cmdr-mobile .cmdr-setting-tab-group .cmdr-tab:first-child{margin-left:0}.cmdr-setting-header.cmdr-mobile .cmdr-setting-tab-group .cmdr-tab.cmdr-tab-active{transform:none}.cmdr-setting-header .cmdr-tab{padding:6px 8px;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap;border-left:2px solid #0000;border-right:2px solid #0000}.cmdr-setting-header .cmdr-tab:first-child{margin-left:6px}.cmdr-setting-header .cmdr-tab.cmdr-tab-active{transform:translateY(2px);border-radius:2px;border:2px solid var(--background-modifier-border);border-bottom-color:var(--background-primary)}.is-tablet .cmdr-tab{border:none!important;margin-bottom:2px;padding:10px;font-size:1.08em}.is-tablet .cmdr-tab,.is-tablet .cmdr-tab .cmdr-block{display:flex;align-items:center}.cmdr-mobile-modify-grid{padding:22px}.cmdr-mobile-modify-grid .cmdr-mobile-modify-option{display:flex;width:100%;justify-content:space-between;align-items:center;margin-bottom:16px}.cmdr-mobile-modify-grid .cmdr-mobile-modify-option>input{max-width:70%}.cmdr-mobile-modify-grid .cmdr-mobile-modify-option .dropdown{margin:auto}.cmdr-credits{display:flex}.cmdr-credits>span{color:var(--text-muted);font-size:14px}.cmdr-about{display:flex;flex-direction:column;align-items:center;padding-bottom:64px}.cmdr-about hr{width:100%;margin-top:0}.cmdr-about button{display:flex;align-items:center;height:2.6em;font-weight:700;gap:16px;border-radius:6px;margin-bottom:8px}.cmdr-about button:last-of-type{margin-bottom:32px}.cmdr-about .setting-item button{margin:0}.cmdr-about .cmdr-icon-wrapper{display:flex}.cmdr-about .cmdr-icon-wrapper>svg{width:90px;height:90px}.cmdr-about .cmdr-version{text-decoration:none;font-size:12px;color:var(--text-muted)}.cmdr-name-input-wrapper{display:flex;gap:8px;align-items:center}.cmdr-name-input-wrapper button{margin:8px}.cmdr-icon.clickable-icon.mod-warning{cursor:default}.cmdr-hider-title{display:flex;flex-direction:column;align-items:center}.cmdr-hider-title h3{margin-top:0;margin-bottom:8px;font-weight:900}.cmdr-hider-title p{margin-top:0;margin-bottom:26px;width:50%;text-align:center}.setting-item-control .cmdr-editable{width:2em;text-align:center}.setting-item-control .cmdr-editable input,.setting-item-control .cmdr-editable span{width:2em;color:var(--text-normal)}.cmdr-slider .setting-item-control>div{width:100%}.cmdr-slider input.slider{margin-left:4px}.view-action:not(:last-child){margin-right:var(--cmdr-spacing)}.status-bar-item:not(:last-child),.titlebar-button:not(:last-child){margin-right:calc(var(--cmdr-spacing) - 8px)}.side-dock-ribbon-action:not(:last-child){margin-bottom:calc(var(--cmdr-spacing) - 8px)}.cmdr-cta{position:relative}.cmdr-cta:after{content:"";position:absolute;top:-10%;width:104%;left:-2%;height:120%;outline:2px solid var(--color-accent);border-radius:1em;pointer-events:none}.cmdr-mm-item{display:flex;flex-direction:row!important;align-items:center!important;justify-content:space-between;padding:24px 0}.cmdr-mm-item>:first-child{flex-grow:1}.cmdr-mm-item>:last-child{display:flex}.cmdr-mm-item>*{display:flex;flex-direction:column}.cmdr-mm-item>*>span{margin-right:4px;margin-bottom:2px;font-size:12px;color:var(--text-muted);font-weight:700;margin-left:2px}.cmdr-mm-item .cmdr-slider{padding-bottom:0}.cmdr-mm-item .cmdr-slider .cmdr-editable{width:auto;font-size:smaller}.cmdr-mm-item .cmdr-slider .cmdr-editable span{color:var(--text-muted)}.cmdr-mm-actions{width:100%;display:flex;flex-direction:row!important;justify-content:end;gap:8px}.cmdr-mm-actions button{all:unset;cursor:pointer;color:var(--text-accent);padding:6px;border-radius:4px;transition:all .15s ease;text-transform:uppercase;font-weight:700;font-size:small}.cmdr-mm-actions button:hover{color:var(--text-accent-hover);background-color:var(--background-secondary)}.cmdr-mm-actions button:before{content:"+ "}.cmdr-mm-actions button:active{transform:scale(.98)}.cmdr-mm-control{margin-top:24px;width:100%;display:flex;justify-content:center;gap:8px}.cmdr-mm-action-text{opacity:0}.cmdr-mm-action-options{display:flex}.body{--at-button-height:48;--at-row-count:0}.AT-multirow.AT-row .mobile-toolbar-options-list{flex-flow:column wrap}.is-mobile .mobile-toolbar{position:sticky!important;z-index:5;margin-bottom:var(--at-offset)}.AT-always-shown .is-pinned .workspace-drawer-inner{margin-bottom:calc(var(--at-button-height)*var(--at-row-count) + var(--at-spacing))}.AT-multirow.AT-column .mobile-toolbar-options-list{flex-flow:row wrap;overflow-y:auto}.mobile-toolbar-option{height:var(--at-button-height);min-width:var(--at-button-width)}.AT-multirow .mobile-toolbar,.AT-multirow .mobile-toolbar-options-list{height:calc(var(--at-button-height)*var(--at-row-count) + var(--at-spacing))!important}.AT-no-toolbar .mobile-toolbar{display:none}.cmdr-mb-1{margin-bottom:.25rem}.cmdr-block{display:block}.cmdr-flex{display:flex}.cmdr-items-center{align-items:center}.cmdr-justify-between{justify-content:space-between}.cmdr-gap-1{gap:.25rem}.cmdr-justify-self-start{justify-self:start} \ No newline at end of file diff --git a/.obsidian.mobile/plugins/obsidian-day-planner/data.json b/.obsidian.mobile/plugins/obsidian-day-planner/data.json new file mode 100644 index 00000000..1442c7f6 --- /dev/null +++ b/.obsidian.mobile/plugins/obsidian-day-planner/data.json @@ -0,0 +1,39 @@ +{ + "snapStepMinutes": 10, + "progressIndicator": "bar", + "showTaskNotification": true, + "zoomLevel": 1, + "timelineIcon": "horizontal-split", + "endLabel": "All done", + "startHour": 8, + "timelineDateFormat": "YYYY-MM-DD", + "centerNeedle": true, + "plannerHeading": "Day planner", + "plannerHeadingLevel": 1, + "timelineColored": false, + "timelineStartColor": "#006466", + "timelineEndColor": "#4d194d", + "timestampFormat": "HH:mm", + "hourFormat": "H", + "dataviewSource": "", + "extendDurationUntilNext": false, + "defaultDurationMinutes": 30, + "showTimestampInTaskBlock": false, + "showUncheduledTasks": true, + "showUnscheduledNestedTasks": true, + "showNow": true, + "showNext": true, + "pluginVersion": "0.22.1", + "showCompletedTasks": true, + "showSubtasksInTaskBlocks": true, + "icals": [ + { + "name": "", + "url": "https://ade.univ-tours.fr/jsp/custom/modules/plannings/pn8k10Y8.shu", + "color": "#ffffff" + } + ], + "colorOverrides": [], + "releaseNotes": true, + "taskStatusOnCreation": " " +} \ No newline at end of file diff --git a/.obsidian.mobile/plugins/obsidian-day-planner/main.js b/.obsidian.mobile/plugins/obsidian-day-planner/main.js new file mode 100644 index 00000000..3b0f9c97 --- /dev/null +++ b/.obsidian.mobile/plugins/obsidian-day-planner/main.js @@ -0,0 +1,57008 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from2, except, desc) => { + if (from2 && typeof from2 === "object" || typeof from2 === "function") { + for (let key of __getOwnPropNames(from2)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from2[key], enumerable: !(desc = __getOwnPropDesc(from2, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// node_modules/obsidian-daily-notes-interface/dist/main.js +var require_main = __commonJS({ + "node_modules/obsidian-daily-notes-interface/dist/main.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var obsidian = require("obsidian"); + var DEFAULT_DAILY_NOTE_FORMAT3 = "YYYY-MM-DD"; + var DEFAULT_WEEKLY_NOTE_FORMAT = "gggg-[W]ww"; + var DEFAULT_MONTHLY_NOTE_FORMAT = "YYYY-MM"; + var DEFAULT_QUARTERLY_NOTE_FORMAT = "YYYY-[Q]Q"; + var DEFAULT_YEARLY_NOTE_FORMAT = "YYYY"; + function shouldUsePeriodicNotesSettings(periodicity) { + var _a, _b; + const periodicNotes = window.app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a[periodicity]) == null ? void 0 : _b.enabled); + } + function getDailyNoteSettings() { + var _a, _b, _c, _d; + try { + const { internalPlugins, plugins: plugins2 } = window.app; + if (shouldUsePeriodicNotesSettings("daily")) { + const { format: format2, folder: folder2, template: template2 } = ((_b = (_a = plugins2.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.daily) || {}; + return { + format: format2 || DEFAULT_DAILY_NOTE_FORMAT3, + folder: (folder2 == null ? void 0 : folder2.trim()) || "", + template: (template2 == null ? void 0 : template2.trim()) || "" + }; + } + const { folder, format, template } = ((_d = (_c = internalPlugins.getPluginById("daily-notes")) == null ? void 0 : _c.instance) == null ? void 0 : _d.options) || {}; + return { + format: format || DEFAULT_DAILY_NOTE_FORMAT3, + folder: (folder == null ? void 0 : folder.trim()) || "", + template: (template == null ? void 0 : template.trim()) || "" + }; + } catch (err) { + console.info("No custom daily note settings found!", err); + } + } + function getWeeklyNoteSettings() { + var _a, _b, _c, _d, _e, _f, _g; + try { + const pluginManager = window.app.plugins; + const calendarSettings = (_a = pluginManager.getPlugin("calendar")) == null ? void 0 : _a.options; + const periodicNotesSettings = (_c = (_b = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _b.settings) == null ? void 0 : _c.weekly; + if (shouldUsePeriodicNotesSettings("weekly")) { + return { + format: periodicNotesSettings.format || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: ((_d = periodicNotesSettings.folder) == null ? void 0 : _d.trim()) || "", + template: ((_e = periodicNotesSettings.template) == null ? void 0 : _e.trim()) || "" + }; + } + const settings2 = calendarSettings || {}; + return { + format: settings2.weeklyNoteFormat || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: ((_f = settings2.weeklyNoteFolder) == null ? void 0 : _f.trim()) || "", + template: ((_g = settings2.weeklyNoteTemplate) == null ? void 0 : _g.trim()) || "" + }; + } catch (err) { + console.info("No custom weekly note settings found!", err); + } + } + function getMonthlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings2 = shouldUsePeriodicNotesSettings("monthly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.monthly) || {}; + return { + format: settings2.format || DEFAULT_MONTHLY_NOTE_FORMAT, + folder: ((_c = settings2.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings2.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom monthly note settings found!", err); + } + } + function getQuarterlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings2 = shouldUsePeriodicNotesSettings("quarterly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.quarterly) || {}; + return { + format: settings2.format || DEFAULT_QUARTERLY_NOTE_FORMAT, + folder: ((_c = settings2.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings2.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom quarterly note settings found!", err); + } + } + function getYearlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings2 = shouldUsePeriodicNotesSettings("yearly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.yearly) || {}; + return { + format: settings2.format || DEFAULT_YEARLY_NOTE_FORMAT, + folder: ((_c = settings2.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings2.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom yearly note settings found!", err); + } + } + function join(...partSegments) { + let parts = []; + for (let i2 = 0, l2 = partSegments.length; i2 < l2; i2++) { + parts = parts.concat(partSegments[i2].split("/")); + } + const newParts = []; + for (let i2 = 0, l2 = parts.length; i2 < l2; i2++) { + const part = parts[i2]; + if (!part || part === ".") + continue; + else + newParts.push(part); + } + if (parts[0] === "") + newParts.unshift(""); + return newParts.join("/"); + } + function basename(fullPath) { + let base = fullPath.substring(fullPath.lastIndexOf("/") + 1); + if (base.lastIndexOf(".") != -1) + base = base.substring(0, base.lastIndexOf(".")); + return base; + } + async function ensureFolderExists(path) { + const dirs = path.replace(/\\/g, "/").split("/"); + dirs.pop(); + if (dirs.length) { + const dir = join(...dirs); + if (!window.app.vault.getAbstractFileByPath(dir)) { + await window.app.vault.createFolder(dir); + } + } + } + async function getNotePath(directory, filename) { + if (!filename.endsWith(".md")) { + filename += ".md"; + } + const path = obsidian.normalizePath(join(directory, filename)); + await ensureFolderExists(path); + return path; + } + async function getTemplateInfo(template) { + const { metadataCache, vault } = window.app; + const templatePath = obsidian.normalizePath(template); + if (templatePath === "/") { + return Promise.resolve(["", null]); + } + try { + const templateFile = metadataCache.getFirstLinkpathDest(templatePath, ""); + const contents2 = await vault.cachedRead(templateFile); + const IFoldInfo = window.app.foldManager.load(templateFile); + return [contents2, IFoldInfo]; + } catch (err) { + console.error(`Failed to read the daily note template '${templatePath}'`, err); + new obsidian.Notice("Failed to read the daily note template"); + return ["", null]; + } + } + function getDateUID(date2, granularity = "day") { + const ts = date2.clone().startOf(granularity).format(); + return `${granularity}-${ts}`; + } + function removeEscapedCharacters(format) { + return format.replace(/\[[^\]]*\]/g, ""); + } + function isFormatAmbiguous(format, granularity) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + return /w{1,2}/i.test(cleanFormat) && (/M{1,4}/.test(cleanFormat) || /D{1,4}/.test(cleanFormat)); + } + return false; + } + function getDateFromFile2(file, granularity) { + return getDateFromFilename(file.basename, granularity); + } + function getDateFromPath4(path, granularity) { + return getDateFromFilename(basename(path), granularity); + } + function getDateFromFilename(filename, granularity) { + const getSettings = { + day: getDailyNoteSettings, + week: getWeeklyNoteSettings, + month: getMonthlyNoteSettings, + quarter: getQuarterlyNoteSettings, + year: getYearlyNoteSettings + }; + const format = getSettings[granularity]().format.split("/").pop(); + const noteDate = window.moment(filename, format, true); + if (!noteDate.isValid()) { + return null; + } + if (isFormatAmbiguous(format, granularity)) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + if (/w{1,2}/i.test(cleanFormat)) { + return window.moment( + filename, + // If format contains week, remove day & month formatting + format.replace(/M{1,4}/g, "").replace(/D{1,4}/g, ""), + false + ); + } + } + } + return noteDate; + } + var DailyNotesFolderMissingError = class extends Error { + }; + async function createDailyNote3(date2) { + const app = window.app; + const { vault } = app; + const moment3 = window.moment; + const { template, format, folder } = getDailyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date2.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, moment3().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename).replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_2, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now2 = moment3(); + const currentDate = date2.clone().set({ + hour: now2.get("hour"), + minute: now2.get("minute"), + second: now2.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*yesterday\s*}}/gi, date2.clone().subtract(1, "day").format(format)).replace(/{{\s*tomorrow\s*}}/gi, date2.clone().add(1, "d").format(format))); + app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getDailyNote5(date2, dailyNotes) { + var _a; + return (_a = dailyNotes[getDateUID(date2, "day")]) != null ? _a : null; + } + function getAllDailyNotes5() { + const { vault } = window.app; + const { folder } = getDailyNoteSettings(); + const dailyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!dailyNotesFolder) { + throw new DailyNotesFolderMissingError("Failed to find daily notes folder"); + } + const dailyNotes = {}; + obsidian.Vault.recurseChildren(dailyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date2 = getDateFromFile2(note, "day"); + if (date2) { + const dateString = getDateUID(date2, "day"); + dailyNotes[dateString] = note; + } + } + }); + return dailyNotes; + } + var WeeklyNotesFolderMissingError = class extends Error { + }; + function getDaysOfWeek2() { + const { moment: moment3 } = window; + let weekStart = moment3.localeData()._week.dow; + const daysOfWeek = [ + "sunday", + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday" + ]; + while (weekStart) { + daysOfWeek.push(daysOfWeek.shift()); + weekStart--; + } + return daysOfWeek; + } + function getDayOfWeekNumericalValue(dayOfWeekName) { + return getDaysOfWeek2().indexOf(dayOfWeekName.toLowerCase()); + } + async function createWeeklyNote(date2) { + const { vault } = window.app; + const { template, format, folder } = getWeeklyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date2.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_2, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now2 = window.moment(); + const currentDate = date2.clone().set({ + hour: now2.get("hour"), + minute: now2.get("minute"), + second: now2.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*title\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi, (_2, dayOfWeek, momentFormat) => { + const day = getDayOfWeekNumericalValue(dayOfWeek); + return date2.weekday(day).format(momentFormat.trim()); + })); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getWeeklyNote(date2, weeklyNotes) { + var _a; + return (_a = weeklyNotes[getDateUID(date2, "week")]) != null ? _a : null; + } + function getAllWeeklyNotes() { + const weeklyNotes = {}; + if (!appHasWeeklyNotesPluginLoaded()) { + return weeklyNotes; + } + const { vault } = window.app; + const { folder } = getWeeklyNoteSettings(); + const weeklyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!weeklyNotesFolder) { + throw new WeeklyNotesFolderMissingError("Failed to find weekly notes folder"); + } + obsidian.Vault.recurseChildren(weeklyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date2 = getDateFromFile2(note, "week"); + if (date2) { + const dateString = getDateUID(date2, "week"); + weeklyNotes[dateString] = note; + } + } + }); + return weeklyNotes; + } + var MonthlyNotesFolderMissingError = class extends Error { + }; + async function createMonthlyNote(date2) { + const { vault } = window.app; + const { template, format, folder } = getMonthlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date2.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_2, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now2 = window.moment(); + const currentDate = date2.clone().set({ + hour: now2.get("hour"), + minute: now2.get("minute"), + second: now2.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getMonthlyNote(date2, monthlyNotes) { + var _a; + return (_a = monthlyNotes[getDateUID(date2, "month")]) != null ? _a : null; + } + function getAllMonthlyNotes() { + const monthlyNotes = {}; + if (!appHasMonthlyNotesPluginLoaded()) { + return monthlyNotes; + } + const { vault } = window.app; + const { folder } = getMonthlyNoteSettings(); + const monthlyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!monthlyNotesFolder) { + throw new MonthlyNotesFolderMissingError("Failed to find monthly notes folder"); + } + obsidian.Vault.recurseChildren(monthlyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date2 = getDateFromFile2(note, "month"); + if (date2) { + const dateString = getDateUID(date2, "month"); + monthlyNotes[dateString] = note; + } + } + }); + return monthlyNotes; + } + var QuarterlyNotesFolderMissingError = class extends Error { + }; + async function createQuarterlyNote(date2) { + const { vault } = window.app; + const { template, format, folder } = getQuarterlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date2.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_2, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now2 = window.moment(); + const currentDate = date2.clone().set({ + hour: now2.get("hour"), + minute: now2.get("minute"), + second: now2.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getQuarterlyNote(date2, quarterly) { + var _a; + return (_a = quarterly[getDateUID(date2, "quarter")]) != null ? _a : null; + } + function getAllQuarterlyNotes() { + const quarterly = {}; + if (!appHasQuarterlyNotesPluginLoaded()) { + return quarterly; + } + const { vault } = window.app; + const { folder } = getQuarterlyNoteSettings(); + const quarterlyFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!quarterlyFolder) { + throw new QuarterlyNotesFolderMissingError("Failed to find quarterly notes folder"); + } + obsidian.Vault.recurseChildren(quarterlyFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date2 = getDateFromFile2(note, "quarter"); + if (date2) { + const dateString = getDateUID(date2, "quarter"); + quarterly[dateString] = note; + } + } + }); + return quarterly; + } + var YearlyNotesFolderMissingError = class extends Error { + }; + async function createYearlyNote(date2) { + const { vault } = window.app; + const { template, format, folder } = getYearlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date2.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_2, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now2 = window.moment(); + const currentDate = date2.clone().set({ + hour: now2.get("hour"), + minute: now2.get("minute"), + second: now2.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getYearlyNote(date2, yearlyNotes) { + var _a; + return (_a = yearlyNotes[getDateUID(date2, "year")]) != null ? _a : null; + } + function getAllYearlyNotes() { + const yearlyNotes = {}; + if (!appHasYearlyNotesPluginLoaded()) { + return yearlyNotes; + } + const { vault } = window.app; + const { folder } = getYearlyNoteSettings(); + const yearlyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!yearlyNotesFolder) { + throw new YearlyNotesFolderMissingError("Failed to find yearly notes folder"); + } + obsidian.Vault.recurseChildren(yearlyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date2 = getDateFromFile2(note, "year"); + if (date2) { + const dateString = getDateUID(date2, "year"); + yearlyNotes[dateString] = note; + } + } + }); + return yearlyNotes; + } + function appHasDailyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const dailyNotesPlugin = app.internalPlugins.plugins["daily-notes"]; + if (dailyNotesPlugin && dailyNotesPlugin.enabled) { + return true; + } + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.daily) == null ? void 0 : _b.enabled); + } + function appHasWeeklyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + if (app.plugins.getPlugin("calendar")) { + return true; + } + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.weekly) == null ? void 0 : _b.enabled); + } + function appHasMonthlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.monthly) == null ? void 0 : _b.enabled); + } + function appHasQuarterlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.quarterly) == null ? void 0 : _b.enabled); + } + function appHasYearlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.yearly) == null ? void 0 : _b.enabled); + } + function getPeriodicNoteSettings(granularity) { + const getSettings = { + day: getDailyNoteSettings, + week: getWeeklyNoteSettings, + month: getMonthlyNoteSettings, + quarter: getQuarterlyNoteSettings, + year: getYearlyNoteSettings + }[granularity]; + return getSettings(); + } + function createPeriodicNote(granularity, date2) { + const createFn = { + day: createDailyNote3, + month: createMonthlyNote, + week: createWeeklyNote + }; + return createFn[granularity](date2); + } + exports.DEFAULT_DAILY_NOTE_FORMAT = DEFAULT_DAILY_NOTE_FORMAT3; + exports.DEFAULT_MONTHLY_NOTE_FORMAT = DEFAULT_MONTHLY_NOTE_FORMAT; + exports.DEFAULT_QUARTERLY_NOTE_FORMAT = DEFAULT_QUARTERLY_NOTE_FORMAT; + exports.DEFAULT_WEEKLY_NOTE_FORMAT = DEFAULT_WEEKLY_NOTE_FORMAT; + exports.DEFAULT_YEARLY_NOTE_FORMAT = DEFAULT_YEARLY_NOTE_FORMAT; + exports.appHasDailyNotesPluginLoaded = appHasDailyNotesPluginLoaded; + exports.appHasMonthlyNotesPluginLoaded = appHasMonthlyNotesPluginLoaded; + exports.appHasQuarterlyNotesPluginLoaded = appHasQuarterlyNotesPluginLoaded; + exports.appHasWeeklyNotesPluginLoaded = appHasWeeklyNotesPluginLoaded; + exports.appHasYearlyNotesPluginLoaded = appHasYearlyNotesPluginLoaded; + exports.createDailyNote = createDailyNote3; + exports.createMonthlyNote = createMonthlyNote; + exports.createPeriodicNote = createPeriodicNote; + exports.createQuarterlyNote = createQuarterlyNote; + exports.createWeeklyNote = createWeeklyNote; + exports.createYearlyNote = createYearlyNote; + exports.getAllDailyNotes = getAllDailyNotes5; + exports.getAllMonthlyNotes = getAllMonthlyNotes; + exports.getAllQuarterlyNotes = getAllQuarterlyNotes; + exports.getAllWeeklyNotes = getAllWeeklyNotes; + exports.getAllYearlyNotes = getAllYearlyNotes; + exports.getDailyNote = getDailyNote5; + exports.getDailyNoteSettings = getDailyNoteSettings; + exports.getDateFromFile = getDateFromFile2; + exports.getDateFromPath = getDateFromPath4; + exports.getDateUID = getDateUID; + exports.getMonthlyNote = getMonthlyNote; + exports.getMonthlyNoteSettings = getMonthlyNoteSettings; + exports.getPeriodicNoteSettings = getPeriodicNoteSettings; + exports.getQuarterlyNote = getQuarterlyNote; + exports.getQuarterlyNoteSettings = getQuarterlyNoteSettings; + exports.getTemplateInfo = getTemplateInfo; + exports.getWeeklyNote = getWeeklyNote; + exports.getWeeklyNoteSettings = getWeeklyNoteSettings; + exports.getYearlyNote = getYearlyNote; + exports.getYearlyNoteSettings = getYearlyNoteSettings; + } +}); + +// node_modules/obsidian-dataview/lib/index.js +var require_lib = __commonJS({ + "node_modules/obsidian-dataview/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + require("obsidian"); + var LuxonError = class extends Error { + }; + var InvalidDateTimeError = class extends LuxonError { + constructor(reason) { + super(`Invalid DateTime: ${reason.toMessage()}`); + } + }; + var InvalidIntervalError = class extends LuxonError { + constructor(reason) { + super(`Invalid Interval: ${reason.toMessage()}`); + } + }; + var InvalidDurationError = class extends LuxonError { + constructor(reason) { + super(`Invalid Duration: ${reason.toMessage()}`); + } + }; + var ConflictingSpecificationError = class extends LuxonError { + }; + var InvalidUnitError = class extends LuxonError { + constructor(unit) { + super(`Invalid unit ${unit}`); + } + }; + var InvalidArgumentError = class extends LuxonError { + }; + var ZoneIsAbstractError = class extends LuxonError { + constructor() { + super("Zone is an abstract class"); + } + }; + var n2 = "numeric"; + var s2 = "short"; + var l2 = "long"; + var DATE_SHORT = { + year: n2, + month: n2, + day: n2 + }; + var DATE_MED = { + year: n2, + month: s2, + day: n2 + }; + var DATE_MED_WITH_WEEKDAY = { + year: n2, + month: s2, + day: n2, + weekday: s2 + }; + var DATE_FULL = { + year: n2, + month: l2, + day: n2 + }; + var DATE_HUGE = { + year: n2, + month: l2, + day: n2, + weekday: l2 + }; + var TIME_SIMPLE = { + hour: n2, + minute: n2 + }; + var TIME_WITH_SECONDS = { + hour: n2, + minute: n2, + second: n2 + }; + var TIME_WITH_SHORT_OFFSET = { + hour: n2, + minute: n2, + second: n2, + timeZoneName: s2 + }; + var TIME_WITH_LONG_OFFSET = { + hour: n2, + minute: n2, + second: n2, + timeZoneName: l2 + }; + var TIME_24_SIMPLE = { + hour: n2, + minute: n2, + hourCycle: "h23" + }; + var TIME_24_WITH_SECONDS = { + hour: n2, + minute: n2, + second: n2, + hourCycle: "h23" + }; + var TIME_24_WITH_SHORT_OFFSET = { + hour: n2, + minute: n2, + second: n2, + hourCycle: "h23", + timeZoneName: s2 + }; + var TIME_24_WITH_LONG_OFFSET = { + hour: n2, + minute: n2, + second: n2, + hourCycle: "h23", + timeZoneName: l2 + }; + var DATETIME_SHORT = { + year: n2, + month: n2, + day: n2, + hour: n2, + minute: n2 + }; + var DATETIME_SHORT_WITH_SECONDS = { + year: n2, + month: n2, + day: n2, + hour: n2, + minute: n2, + second: n2 + }; + var DATETIME_MED = { + year: n2, + month: s2, + day: n2, + hour: n2, + minute: n2 + }; + var DATETIME_MED_WITH_SECONDS = { + year: n2, + month: s2, + day: n2, + hour: n2, + minute: n2, + second: n2 + }; + var DATETIME_MED_WITH_WEEKDAY = { + year: n2, + month: s2, + day: n2, + weekday: s2, + hour: n2, + minute: n2 + }; + var DATETIME_FULL = { + year: n2, + month: l2, + day: n2, + hour: n2, + minute: n2, + timeZoneName: s2 + }; + var DATETIME_FULL_WITH_SECONDS = { + year: n2, + month: l2, + day: n2, + hour: n2, + minute: n2, + second: n2, + timeZoneName: s2 + }; + var DATETIME_HUGE = { + year: n2, + month: l2, + day: n2, + weekday: l2, + hour: n2, + minute: n2, + timeZoneName: l2 + }; + var DATETIME_HUGE_WITH_SECONDS = { + year: n2, + month: l2, + day: n2, + weekday: l2, + hour: n2, + minute: n2, + second: n2, + timeZoneName: l2 + }; + var Zone = class { + /** + * The type of zone + * @abstract + * @type {string} + */ + get type() { + throw new ZoneIsAbstractError(); + } + /** + * The name of this zone. + * @abstract + * @type {string} + */ + get name() { + throw new ZoneIsAbstractError(); + } + get ianaName() { + return this.name; + } + /** + * Returns whether the offset is known to be fixed for the whole year. + * @abstract + * @type {boolean} + */ + get isUniversal() { + throw new ZoneIsAbstractError(); + } + /** + * Returns the offset's common name (such as EST) at the specified timestamp + * @abstract + * @param {number} ts - Epoch milliseconds for which to get the name + * @param {Object} opts - Options to affect the format + * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'. + * @param {string} opts.locale - What locale to return the offset name in. + * @return {string} + */ + offsetName(ts, opts) { + throw new ZoneIsAbstractError(); + } + /** + * Returns the offset's value as a string + * @abstract + * @param {number} ts - Epoch milliseconds for which to get the offset + * @param {string} format - What style of offset to return. + * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively + * @return {string} + */ + formatOffset(ts, format) { + throw new ZoneIsAbstractError(); + } + /** + * Return the offset in minutes for this zone at the specified timestamp. + * @abstract + * @param {number} ts - Epoch milliseconds for which to compute the offset + * @return {number} + */ + offset(ts) { + throw new ZoneIsAbstractError(); + } + /** + * Return whether this Zone is equal to another zone + * @abstract + * @param {Zone} otherZone - the zone to compare + * @return {boolean} + */ + equals(otherZone) { + throw new ZoneIsAbstractError(); + } + /** + * Return whether this Zone is valid. + * @abstract + * @type {boolean} + */ + get isValid() { + throw new ZoneIsAbstractError(); + } + }; + var singleton$1 = null; + var SystemZone = class _SystemZone extends Zone { + /** + * Get a singleton instance of the local zone + * @return {SystemZone} + */ + static get instance() { + if (singleton$1 === null) { + singleton$1 = new _SystemZone(); + } + return singleton$1; + } + /** @override **/ + get type() { + return "system"; + } + /** @override **/ + get name() { + return new Intl.DateTimeFormat().resolvedOptions().timeZone; + } + /** @override **/ + get isUniversal() { + return false; + } + /** @override **/ + offsetName(ts, { format, locale }) { + return parseZoneInfo(ts, format, locale); + } + /** @override **/ + formatOffset(ts, format) { + return formatOffset(this.offset(ts), format); + } + /** @override **/ + offset(ts) { + return -new Date(ts).getTimezoneOffset(); + } + /** @override **/ + equals(otherZone) { + return otherZone.type === "system"; + } + /** @override **/ + get isValid() { + return true; + } + }; + var dtfCache = {}; + function makeDTF(zone) { + if (!dtfCache[zone]) { + dtfCache[zone] = new Intl.DateTimeFormat("en-US", { + hour12: false, + timeZone: zone, + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + era: "short" + }); + } + return dtfCache[zone]; + } + var typeToPos = { + year: 0, + month: 1, + day: 2, + era: 3, + hour: 4, + minute: 5, + second: 6 + }; + function hackyOffset(dtf, date2) { + const formatted = dtf.format(date2).replace(/\u200E/g, ""), parsed = /(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(formatted), [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed; + return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond]; + } + function partsOffset(dtf, date2) { + const formatted = dtf.formatToParts(date2); + const filled = []; + for (let i2 = 0; i2 < formatted.length; i2++) { + const { type, value } = formatted[i2]; + const pos = typeToPos[type]; + if (type === "era") { + filled[pos] = value; + } else if (!isUndefined2(pos)) { + filled[pos] = parseInt(value, 10); + } + } + return filled; + } + var ianaZoneCache = {}; + var IANAZone = class _IANAZone extends Zone { + /** + * @param {string} name - Zone name + * @return {IANAZone} + */ + static create(name) { + if (!ianaZoneCache[name]) { + ianaZoneCache[name] = new _IANAZone(name); + } + return ianaZoneCache[name]; + } + /** + * Reset local caches. Should only be necessary in testing scenarios. + * @return {void} + */ + static resetCache() { + ianaZoneCache = {}; + dtfCache = {}; + } + /** + * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that. + * @param {string} s - The string to check validity on + * @example IANAZone.isValidSpecifier("America/New_York") //=> true + * @example IANAZone.isValidSpecifier("Sport~~blorp") //=> false + * @deprecated This method returns false for some valid IANA names. Use isValidZone instead. + * @return {boolean} + */ + static isValidSpecifier(s3) { + return this.isValidZone(s3); + } + /** + * Returns whether the provided string identifies a real zone + * @param {string} zone - The string to check + * @example IANAZone.isValidZone("America/New_York") //=> true + * @example IANAZone.isValidZone("Fantasia/Castle") //=> false + * @example IANAZone.isValidZone("Sport~~blorp") //=> false + * @return {boolean} + */ + static isValidZone(zone) { + if (!zone) { + return false; + } + try { + new Intl.DateTimeFormat("en-US", { timeZone: zone }).format(); + return true; + } catch (e2) { + return false; + } + } + constructor(name) { + super(); + this.zoneName = name; + this.valid = _IANAZone.isValidZone(name); + } + /** @override **/ + get type() { + return "iana"; + } + /** @override **/ + get name() { + return this.zoneName; + } + /** @override **/ + get isUniversal() { + return false; + } + /** @override **/ + offsetName(ts, { format, locale }) { + return parseZoneInfo(ts, format, locale, this.name); + } + /** @override **/ + formatOffset(ts, format) { + return formatOffset(this.offset(ts), format); + } + /** @override **/ + offset(ts) { + const date2 = new Date(ts); + if (isNaN(date2)) + return NaN; + const dtf = makeDTF(this.name); + let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts ? partsOffset(dtf, date2) : hackyOffset(dtf, date2); + if (adOrBc === "BC") { + year = -Math.abs(year) + 1; + } + const adjustedHour = hour === 24 ? 0 : hour; + const asUTC = objToLocalTS({ + year, + month, + day, + hour: adjustedHour, + minute, + second, + millisecond: 0 + }); + let asTS = +date2; + const over = asTS % 1e3; + asTS -= over >= 0 ? over : 1e3 + over; + return (asUTC - asTS) / (60 * 1e3); + } + /** @override **/ + equals(otherZone) { + return otherZone.type === "iana" && otherZone.name === this.name; + } + /** @override **/ + get isValid() { + return this.valid; + } + }; + var intlLFCache = {}; + function getCachedLF(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let dtf = intlLFCache[key]; + if (!dtf) { + dtf = new Intl.ListFormat(locString, opts); + intlLFCache[key] = dtf; + } + return dtf; + } + var intlDTCache = {}; + function getCachedDTF(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let dtf = intlDTCache[key]; + if (!dtf) { + dtf = new Intl.DateTimeFormat(locString, opts); + intlDTCache[key] = dtf; + } + return dtf; + } + var intlNumCache = {}; + function getCachedINF(locString, opts = {}) { + const key = JSON.stringify([locString, opts]); + let inf = intlNumCache[key]; + if (!inf) { + inf = new Intl.NumberFormat(locString, opts); + intlNumCache[key] = inf; + } + return inf; + } + var intlRelCache = {}; + function getCachedRTF(locString, opts = {}) { + const { base, ...cacheKeyOpts } = opts; + const key = JSON.stringify([locString, cacheKeyOpts]); + let inf = intlRelCache[key]; + if (!inf) { + inf = new Intl.RelativeTimeFormat(locString, opts); + intlRelCache[key] = inf; + } + return inf; + } + var sysLocaleCache = null; + function systemLocale() { + if (sysLocaleCache) { + return sysLocaleCache; + } else { + sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale; + return sysLocaleCache; + } + } + function parseLocaleString(localeStr) { + const xIndex = localeStr.indexOf("-x-"); + if (xIndex !== -1) { + localeStr = localeStr.substring(0, xIndex); + } + const uIndex = localeStr.indexOf("-u-"); + if (uIndex === -1) { + return [localeStr]; + } else { + let options; + let selectedStr; + try { + options = getCachedDTF(localeStr).resolvedOptions(); + selectedStr = localeStr; + } catch (e2) { + const smaller = localeStr.substring(0, uIndex); + options = getCachedDTF(smaller).resolvedOptions(); + selectedStr = smaller; + } + const { numberingSystem, calendar } = options; + return [selectedStr, numberingSystem, calendar]; + } + } + function intlConfigString(localeStr, numberingSystem, outputCalendar) { + if (outputCalendar || numberingSystem) { + if (!localeStr.includes("-u-")) { + localeStr += "-u"; + } + if (outputCalendar) { + localeStr += `-ca-${outputCalendar}`; + } + if (numberingSystem) { + localeStr += `-nu-${numberingSystem}`; + } + return localeStr; + } else { + return localeStr; + } + } + function mapMonths(f2) { + const ms = []; + for (let i2 = 1; i2 <= 12; i2++) { + const dt2 = DateTime.utc(2016, i2, 1); + ms.push(f2(dt2)); + } + return ms; + } + function mapWeekdays(f2) { + const ms = []; + for (let i2 = 1; i2 <= 7; i2++) { + const dt2 = DateTime.utc(2016, 11, 13 + i2); + ms.push(f2(dt2)); + } + return ms; + } + function listStuff(loc, length, defaultOK, englishFn, intlFn) { + const mode = loc.listingMode(defaultOK); + if (mode === "error") { + return null; + } else if (mode === "en") { + return englishFn(length); + } else { + return intlFn(length); + } + } + function supportsFastNumbers(loc) { + if (loc.numberingSystem && loc.numberingSystem !== "latn") { + return false; + } else { + return loc.numberingSystem === "latn" || !loc.locale || loc.locale.startsWith("en") || new Intl.DateTimeFormat(loc.intl).resolvedOptions().numberingSystem === "latn"; + } + } + var PolyNumberFormatter = class { + constructor(intl, forceSimple, opts) { + this.padTo = opts.padTo || 0; + this.floor = opts.floor || false; + const { padTo, floor: floor2, ...otherOpts } = opts; + if (!forceSimple || Object.keys(otherOpts).length > 0) { + const intlOpts = { useGrouping: false, ...opts }; + if (opts.padTo > 0) + intlOpts.minimumIntegerDigits = opts.padTo; + this.inf = getCachedINF(intl, intlOpts); + } + } + format(i2) { + if (this.inf) { + const fixed = this.floor ? Math.floor(i2) : i2; + return this.inf.format(fixed); + } else { + const fixed = this.floor ? Math.floor(i2) : roundTo(i2, 3); + return padStart(fixed, this.padTo); + } + } + }; + var PolyDateFormatter = class { + constructor(dt2, intl, opts) { + this.opts = opts; + let z2 = void 0; + if (dt2.zone.isUniversal) { + const gmtOffset = -1 * (dt2.offset / 60); + const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`; + if (dt2.offset !== 0 && IANAZone.create(offsetZ).valid) { + z2 = offsetZ; + this.dt = dt2; + } else { + z2 = "UTC"; + if (opts.timeZoneName) { + this.dt = dt2; + } else { + this.dt = dt2.offset === 0 ? dt2 : DateTime.fromMillis(dt2.ts + dt2.offset * 60 * 1e3); + } + } + } else if (dt2.zone.type === "system") { + this.dt = dt2; + } else { + this.dt = dt2; + z2 = dt2.zone.name; + } + const intlOpts = { ...this.opts }; + intlOpts.timeZone = intlOpts.timeZone || z2; + this.dtf = getCachedDTF(intl, intlOpts); + } + format() { + return this.dtf.format(this.dt.toJSDate()); + } + formatToParts() { + return this.dtf.formatToParts(this.dt.toJSDate()); + } + resolvedOptions() { + return this.dtf.resolvedOptions(); + } + }; + var PolyRelFormatter = class { + constructor(intl, isEnglish, opts) { + this.opts = { style: "long", ...opts }; + if (!isEnglish && hasRelative()) { + this.rtf = getCachedRTF(intl, opts); + } + } + format(count, unit) { + if (this.rtf) { + return this.rtf.format(count, unit); + } else { + return formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== "long"); + } + } + formatToParts(count, unit) { + if (this.rtf) { + return this.rtf.formatToParts(count, unit); + } else { + return []; + } + } + }; + var Locale = class _Locale { + static fromOpts(opts) { + return _Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar, opts.defaultToEN); + } + static create(locale, numberingSystem, outputCalendar, defaultToEN = false) { + const specifiedLocale = locale || Settings2.defaultLocale; + const localeR = specifiedLocale || (defaultToEN ? "en-US" : systemLocale()); + const numberingSystemR = numberingSystem || Settings2.defaultNumberingSystem; + const outputCalendarR = outputCalendar || Settings2.defaultOutputCalendar; + return new _Locale(localeR, numberingSystemR, outputCalendarR, specifiedLocale); + } + static resetCache() { + sysLocaleCache = null; + intlDTCache = {}; + intlNumCache = {}; + intlRelCache = {}; + } + static fromObject({ locale, numberingSystem, outputCalendar } = {}) { + return _Locale.create(locale, numberingSystem, outputCalendar); + } + constructor(locale, numbering, outputCalendar, specifiedLocale) { + const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale); + this.locale = parsedLocale; + this.numberingSystem = numbering || parsedNumberingSystem || null; + this.outputCalendar = outputCalendar || parsedOutputCalendar || null; + this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar); + this.weekdaysCache = { format: {}, standalone: {} }; + this.monthsCache = { format: {}, standalone: {} }; + this.meridiemCache = null; + this.eraCache = {}; + this.specifiedLocale = specifiedLocale; + this.fastNumbersCached = null; + } + get fastNumbers() { + if (this.fastNumbersCached == null) { + this.fastNumbersCached = supportsFastNumbers(this); + } + return this.fastNumbersCached; + } + listingMode() { + const isActuallyEn = this.isEnglish(); + const hasNoWeirdness = (this.numberingSystem === null || this.numberingSystem === "latn") && (this.outputCalendar === null || this.outputCalendar === "gregory"); + return isActuallyEn && hasNoWeirdness ? "en" : "intl"; + } + clone(alts) { + if (!alts || Object.getOwnPropertyNames(alts).length === 0) { + return this; + } else { + return _Locale.create( + alts.locale || this.specifiedLocale, + alts.numberingSystem || this.numberingSystem, + alts.outputCalendar || this.outputCalendar, + alts.defaultToEN || false + ); + } + } + redefaultToEN(alts = {}) { + return this.clone({ ...alts, defaultToEN: true }); + } + redefaultToSystem(alts = {}) { + return this.clone({ ...alts, defaultToEN: false }); + } + months(length, format = false, defaultOK = true) { + return listStuff(this, length, defaultOK, months, () => { + const intl = format ? { month: length, day: "numeric" } : { month: length }, formatStr = format ? "format" : "standalone"; + if (!this.monthsCache[formatStr][length]) { + this.monthsCache[formatStr][length] = mapMonths((dt2) => this.extract(dt2, intl, "month")); + } + return this.monthsCache[formatStr][length]; + }); + } + weekdays(length, format = false, defaultOK = true) { + return listStuff(this, length, defaultOK, weekdays, () => { + const intl = format ? { weekday: length, year: "numeric", month: "long", day: "numeric" } : { weekday: length }, formatStr = format ? "format" : "standalone"; + if (!this.weekdaysCache[formatStr][length]) { + this.weekdaysCache[formatStr][length] = mapWeekdays( + (dt2) => this.extract(dt2, intl, "weekday") + ); + } + return this.weekdaysCache[formatStr][length]; + }); + } + meridiems(defaultOK = true) { + return listStuff( + this, + void 0, + defaultOK, + () => meridiems, + () => { + if (!this.meridiemCache) { + const intl = { hour: "numeric", hourCycle: "h12" }; + this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map( + (dt2) => this.extract(dt2, intl, "dayperiod") + ); + } + return this.meridiemCache; + } + ); + } + eras(length, defaultOK = true) { + return listStuff(this, length, defaultOK, eras, () => { + const intl = { era: length }; + if (!this.eraCache[length]) { + this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map( + (dt2) => this.extract(dt2, intl, "era") + ); + } + return this.eraCache[length]; + }); + } + extract(dt2, intlOpts, field) { + const df = this.dtFormatter(dt2, intlOpts), results = df.formatToParts(), matching = results.find((m2) => m2.type.toLowerCase() === field); + return matching ? matching.value : null; + } + numberFormatter(opts = {}) { + return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts); + } + dtFormatter(dt2, intlOpts = {}) { + return new PolyDateFormatter(dt2, this.intl, intlOpts); + } + relFormatter(opts = {}) { + return new PolyRelFormatter(this.intl, this.isEnglish(), opts); + } + listFormatter(opts = {}) { + return getCachedLF(this.intl, opts); + } + isEnglish() { + return this.locale === "en" || this.locale.toLowerCase() === "en-us" || new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us"); + } + equals(other) { + return this.locale === other.locale && this.numberingSystem === other.numberingSystem && this.outputCalendar === other.outputCalendar; + } + }; + var singleton = null; + var FixedOffsetZone = class _FixedOffsetZone extends Zone { + /** + * Get a singleton instance of UTC + * @return {FixedOffsetZone} + */ + static get utcInstance() { + if (singleton === null) { + singleton = new _FixedOffsetZone(0); + } + return singleton; + } + /** + * Get an instance with a specified offset + * @param {number} offset - The offset in minutes + * @return {FixedOffsetZone} + */ + static instance(offset4) { + return offset4 === 0 ? _FixedOffsetZone.utcInstance : new _FixedOffsetZone(offset4); + } + /** + * Get an instance of FixedOffsetZone from a UTC offset string, like "UTC+6" + * @param {string} s - The offset string to parse + * @example FixedOffsetZone.parseSpecifier("UTC+6") + * @example FixedOffsetZone.parseSpecifier("UTC+06") + * @example FixedOffsetZone.parseSpecifier("UTC-6:00") + * @return {FixedOffsetZone} + */ + static parseSpecifier(s3) { + if (s3) { + const r2 = s3.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i); + if (r2) { + return new _FixedOffsetZone(signedOffset(r2[1], r2[2])); + } + } + return null; + } + constructor(offset4) { + super(); + this.fixed = offset4; + } + /** @override **/ + get type() { + return "fixed"; + } + /** @override **/ + get name() { + return this.fixed === 0 ? "UTC" : `UTC${formatOffset(this.fixed, "narrow")}`; + } + get ianaName() { + if (this.fixed === 0) { + return "Etc/UTC"; + } else { + return `Etc/GMT${formatOffset(-this.fixed, "narrow")}`; + } + } + /** @override **/ + offsetName() { + return this.name; + } + /** @override **/ + formatOffset(ts, format) { + return formatOffset(this.fixed, format); + } + /** @override **/ + get isUniversal() { + return true; + } + /** @override **/ + offset() { + return this.fixed; + } + /** @override **/ + equals(otherZone) { + return otherZone.type === "fixed" && otherZone.fixed === this.fixed; + } + /** @override **/ + get isValid() { + return true; + } + }; + var InvalidZone = class extends Zone { + constructor(zoneName) { + super(); + this.zoneName = zoneName; + } + /** @override **/ + get type() { + return "invalid"; + } + /** @override **/ + get name() { + return this.zoneName; + } + /** @override **/ + get isUniversal() { + return false; + } + /** @override **/ + offsetName() { + return null; + } + /** @override **/ + formatOffset() { + return ""; + } + /** @override **/ + offset() { + return NaN; + } + /** @override **/ + equals() { + return false; + } + /** @override **/ + get isValid() { + return false; + } + }; + function normalizeZone(input, defaultZone2) { + if (isUndefined2(input) || input === null) { + return defaultZone2; + } else if (input instanceof Zone) { + return input; + } else if (isString2(input)) { + const lowered = input.toLowerCase(); + if (lowered === "default") + return defaultZone2; + else if (lowered === "local" || lowered === "system") + return SystemZone.instance; + else if (lowered === "utc" || lowered === "gmt") + return FixedOffsetZone.utcInstance; + else + return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input); + } else if (isNumber2(input)) { + return FixedOffsetZone.instance(input); + } else if (typeof input === "object" && input.offset && typeof input.offset === "number") { + return input; + } else { + return new InvalidZone(input); + } + } + var now2 = () => Date.now(); + var defaultZone = "system"; + var defaultLocale = null; + var defaultNumberingSystem = null; + var defaultOutputCalendar = null; + var twoDigitCutoffYear = 60; + var throwOnInvalid; + var Settings2 = class { + /** + * Get the callback for returning the current timestamp. + * @type {function} + */ + static get now() { + return now2; + } + /** + * Set the callback for returning the current timestamp. + * The function should return a number, which will be interpreted as an Epoch millisecond count + * @type {function} + * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future + * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time + */ + static set now(n3) { + now2 = n3; + } + /** + * Set the default time zone to create DateTimes in. Does not affect existing instances. + * Use the value "system" to reset this value to the system's time zone. + * @type {string} + */ + static set defaultZone(zone) { + defaultZone = zone; + } + /** + * Get the default time zone object currently used to create DateTimes. Does not affect existing instances. + * The default value is the system's time zone (the one set on the machine that runs this code). + * @type {Zone} + */ + static get defaultZone() { + return normalizeZone(defaultZone, SystemZone.instance); + } + /** + * Get the default locale to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static get defaultLocale() { + return defaultLocale; + } + /** + * Set the default locale to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static set defaultLocale(locale) { + defaultLocale = locale; + } + /** + * Get the default numbering system to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static get defaultNumberingSystem() { + return defaultNumberingSystem; + } + /** + * Set the default numbering system to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static set defaultNumberingSystem(numberingSystem) { + defaultNumberingSystem = numberingSystem; + } + /** + * Get the default output calendar to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static get defaultOutputCalendar() { + return defaultOutputCalendar; + } + /** + * Set the default output calendar to create DateTimes with. Does not affect existing instances. + * @type {string} + */ + static set defaultOutputCalendar(outputCalendar) { + defaultOutputCalendar = outputCalendar; + } + /** + * Get the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century. + * @type {number} + */ + static get twoDigitCutoffYear() { + return twoDigitCutoffYear; + } + /** + * Set the cutoff year after which a string encoding a year as two digits is interpreted to occur in the current century. + * @type {number} + * @example Settings.twoDigitCutoffYear = 0 // cut-off year is 0, so all 'yy' are interpretted as current century + * @example Settings.twoDigitCutoffYear = 50 // '49' -> 1949; '50' -> 2050 + * @example Settings.twoDigitCutoffYear = 1950 // interpretted as 50 + * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpretted as 50 + */ + static set twoDigitCutoffYear(cutoffYear) { + twoDigitCutoffYear = cutoffYear % 100; + } + /** + * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals + * @type {boolean} + */ + static get throwOnInvalid() { + return throwOnInvalid; + } + /** + * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals + * @type {boolean} + */ + static set throwOnInvalid(t2) { + throwOnInvalid = t2; + } + /** + * Reset Luxon's global caches. Should only be necessary in testing scenarios. + * @return {void} + */ + static resetCaches() { + Locale.resetCache(); + IANAZone.resetCache(); + } + }; + function isUndefined2(o2) { + return typeof o2 === "undefined"; + } + function isNumber2(o2) { + return typeof o2 === "number"; + } + function isInteger(o2) { + return typeof o2 === "number" && o2 % 1 === 0; + } + function isString2(o2) { + return typeof o2 === "string"; + } + function isDate(o2) { + return Object.prototype.toString.call(o2) === "[object Date]"; + } + function hasRelative() { + try { + return typeof Intl !== "undefined" && !!Intl.RelativeTimeFormat; + } catch (e2) { + return false; + } + } + function maybeArray(thing) { + return Array.isArray(thing) ? thing : [thing]; + } + function bestBy(arr, by, compare) { + if (arr.length === 0) { + return void 0; + } + return arr.reduce((best, next) => { + const pair = [by(next), next]; + if (!best) { + return pair; + } else if (compare(best[0], pair[0]) === best[0]) { + return best; + } else { + return pair; + } + }, null)[1]; + } + function pick(obj, keys2) { + return keys2.reduce((a2, k2) => { + a2[k2] = obj[k2]; + return a2; + }, {}); + } + function hasOwnProperty2(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } + function integerBetween(thing, bottom, top) { + return isInteger(thing) && thing >= bottom && thing <= top; + } + function floorMod(x2, n3) { + return x2 - n3 * Math.floor(x2 / n3); + } + function padStart(input, n3 = 2) { + const isNeg = input < 0; + let padded; + if (isNeg) { + padded = "-" + ("" + -input).padStart(n3, "0"); + } else { + padded = ("" + input).padStart(n3, "0"); + } + return padded; + } + function parseInteger(string) { + if (isUndefined2(string) || string === null || string === "") { + return void 0; + } else { + return parseInt(string, 10); + } + } + function parseFloating(string) { + if (isUndefined2(string) || string === null || string === "") { + return void 0; + } else { + return parseFloat(string); + } + } + function parseMillis(fraction) { + if (isUndefined2(fraction) || fraction === null || fraction === "") { + return void 0; + } else { + const f2 = parseFloat("0." + fraction) * 1e3; + return Math.floor(f2); + } + } + function roundTo(number, digits, towardZero = false) { + const factor = 10 ** digits, rounder = towardZero ? Math.trunc : Math.round; + return rounder(number * factor) / factor; + } + function isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); + } + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + function daysInMonth(year, month) { + const modMonth = floorMod(month - 1, 12) + 1, modYear = year + (month - modMonth) / 12; + if (modMonth === 2) { + return isLeapYear(modYear) ? 29 : 28; + } else { + return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1]; + } + } + function objToLocalTS(obj) { + let d2 = Date.UTC( + obj.year, + obj.month - 1, + obj.day, + obj.hour, + obj.minute, + obj.second, + obj.millisecond + ); + if (obj.year < 100 && obj.year >= 0) { + d2 = new Date(d2); + d2.setUTCFullYear(d2.getUTCFullYear() - 1900); + } + return +d2; + } + function weeksInWeekYear(weekYear) { + const p1 = (weekYear + Math.floor(weekYear / 4) - Math.floor(weekYear / 100) + Math.floor(weekYear / 400)) % 7, last5 = weekYear - 1, p2 = (last5 + Math.floor(last5 / 4) - Math.floor(last5 / 100) + Math.floor(last5 / 400)) % 7; + return p1 === 4 || p2 === 3 ? 53 : 52; + } + function untruncateYear(year) { + if (year > 99) { + return year; + } else + return year > Settings2.twoDigitCutoffYear ? 1900 + year : 2e3 + year; + } + function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) { + const date2 = new Date(ts), intlOpts = { + hourCycle: "h23", + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit" + }; + if (timeZone) { + intlOpts.timeZone = timeZone; + } + const modified = { timeZoneName: offsetFormat, ...intlOpts }; + const parsed = new Intl.DateTimeFormat(locale, modified).formatToParts(date2).find((m2) => m2.type.toLowerCase() === "timezonename"); + return parsed ? parsed.value : null; + } + function signedOffset(offHourStr, offMinuteStr) { + let offHour = parseInt(offHourStr, 10); + if (Number.isNaN(offHour)) { + offHour = 0; + } + const offMin = parseInt(offMinuteStr, 10) || 0, offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin; + return offHour * 60 + offMinSigned; + } + function asNumber(value) { + const numericValue = Number(value); + if (typeof value === "boolean" || value === "" || Number.isNaN(numericValue)) + throw new InvalidArgumentError(`Invalid unit value ${value}`); + return numericValue; + } + function normalizeObject(obj, normalizer) { + const normalized = {}; + for (const u2 in obj) { + if (hasOwnProperty2(obj, u2)) { + const v2 = obj[u2]; + if (v2 === void 0 || v2 === null) + continue; + normalized[normalizer(u2)] = asNumber(v2); + } + } + return normalized; + } + function formatOffset(offset4, format) { + const hours2 = Math.trunc(Math.abs(offset4 / 60)), minutes2 = Math.trunc(Math.abs(offset4 % 60)), sign = offset4 >= 0 ? "+" : "-"; + switch (format) { + case "short": + return `${sign}${padStart(hours2, 2)}:${padStart(minutes2, 2)}`; + case "narrow": + return `${sign}${hours2}${minutes2 > 0 ? `:${minutes2}` : ""}`; + case "techie": + return `${sign}${padStart(hours2, 2)}${padStart(minutes2, 2)}`; + default: + throw new RangeError(`Value format ${format} is out of range for property format`); + } + } + function timeObject(obj) { + return pick(obj, ["hour", "minute", "second", "millisecond"]); + } + var monthsLong = [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ]; + var monthsShort = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ]; + var monthsNarrow = ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"]; + function months(length) { + switch (length) { + case "narrow": + return [...monthsNarrow]; + case "short": + return [...monthsShort]; + case "long": + return [...monthsLong]; + case "numeric": + return ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]; + case "2-digit": + return ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]; + default: + return null; + } + } + var weekdaysLong = [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ]; + var weekdaysShort = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; + var weekdaysNarrow = ["M", "T", "W", "T", "F", "S", "S"]; + function weekdays(length) { + switch (length) { + case "narrow": + return [...weekdaysNarrow]; + case "short": + return [...weekdaysShort]; + case "long": + return [...weekdaysLong]; + case "numeric": + return ["1", "2", "3", "4", "5", "6", "7"]; + default: + return null; + } + } + var meridiems = ["AM", "PM"]; + var erasLong = ["Before Christ", "Anno Domini"]; + var erasShort = ["BC", "AD"]; + var erasNarrow = ["B", "A"]; + function eras(length) { + switch (length) { + case "narrow": + return [...erasNarrow]; + case "short": + return [...erasShort]; + case "long": + return [...erasLong]; + default: + return null; + } + } + function meridiemForDateTime(dt2) { + return meridiems[dt2.hour < 12 ? 0 : 1]; + } + function weekdayForDateTime(dt2, length) { + return weekdays(length)[dt2.weekday - 1]; + } + function monthForDateTime(dt2, length) { + return months(length)[dt2.month - 1]; + } + function eraForDateTime(dt2, length) { + return eras(length)[dt2.year < 0 ? 0 : 1]; + } + function formatRelativeTime(unit, count, numeric = "always", narrow = false) { + const units = { + years: ["year", "yr."], + quarters: ["quarter", "qtr."], + months: ["month", "mo."], + weeks: ["week", "wk."], + days: ["day", "day", "days"], + hours: ["hour", "hr."], + minutes: ["minute", "min."], + seconds: ["second", "sec."] + }; + const lastable = ["hours", "minutes", "seconds"].indexOf(unit) === -1; + if (numeric === "auto" && lastable) { + const isDay = unit === "days"; + switch (count) { + case 1: + return isDay ? "tomorrow" : `next ${units[unit][0]}`; + case -1: + return isDay ? "yesterday" : `last ${units[unit][0]}`; + case 0: + return isDay ? "today" : `this ${units[unit][0]}`; + } + } + const isInPast = Object.is(count, -0) || count < 0, fmtValue = Math.abs(count), singular = fmtValue === 1, lilUnits = units[unit], fmtUnit = narrow ? singular ? lilUnits[1] : lilUnits[2] || lilUnits[1] : singular ? units[unit][0] : unit; + return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`; + } + function stringifyTokens(splits, tokenToString) { + let s3 = ""; + for (const token of splits) { + if (token.literal) { + s3 += token.val; + } else { + s3 += tokenToString(token.val); + } + } + return s3; + } + var macroTokenToFormatOpts = { + D: DATE_SHORT, + DD: DATE_MED, + DDD: DATE_FULL, + DDDD: DATE_HUGE, + t: TIME_SIMPLE, + tt: TIME_WITH_SECONDS, + ttt: TIME_WITH_SHORT_OFFSET, + tttt: TIME_WITH_LONG_OFFSET, + T: TIME_24_SIMPLE, + TT: TIME_24_WITH_SECONDS, + TTT: TIME_24_WITH_SHORT_OFFSET, + TTTT: TIME_24_WITH_LONG_OFFSET, + f: DATETIME_SHORT, + ff: DATETIME_MED, + fff: DATETIME_FULL, + ffff: DATETIME_HUGE, + F: DATETIME_SHORT_WITH_SECONDS, + FF: DATETIME_MED_WITH_SECONDS, + FFF: DATETIME_FULL_WITH_SECONDS, + FFFF: DATETIME_HUGE_WITH_SECONDS + }; + var Formatter = class _Formatter { + static create(locale, opts = {}) { + return new _Formatter(locale, opts); + } + static parseFormat(fmt) { + let current2 = null, currentFull = "", bracketed = false; + const splits = []; + for (let i2 = 0; i2 < fmt.length; i2++) { + const c2 = fmt.charAt(i2); + if (c2 === "'") { + if (currentFull.length > 0) { + splits.push({ literal: bracketed, val: currentFull }); + } + current2 = null; + currentFull = ""; + bracketed = !bracketed; + } else if (bracketed) { + currentFull += c2; + } else if (c2 === current2) { + currentFull += c2; + } else { + if (currentFull.length > 0) { + splits.push({ literal: false, val: currentFull }); + } + currentFull = c2; + current2 = c2; + } + } + if (currentFull.length > 0) { + splits.push({ literal: bracketed, val: currentFull }); + } + return splits; + } + static macroTokenToFormatOpts(token) { + return macroTokenToFormatOpts[token]; + } + constructor(locale, formatOpts) { + this.opts = formatOpts; + this.loc = locale; + this.systemLoc = null; + } + formatWithSystemDefault(dt2, opts) { + if (this.systemLoc === null) { + this.systemLoc = this.loc.redefaultToSystem(); + } + const df = this.systemLoc.dtFormatter(dt2, { ...this.opts, ...opts }); + return df.format(); + } + formatDateTime(dt2, opts = {}) { + const df = this.loc.dtFormatter(dt2, { ...this.opts, ...opts }); + return df.format(); + } + formatDateTimeParts(dt2, opts = {}) { + const df = this.loc.dtFormatter(dt2, { ...this.opts, ...opts }); + return df.formatToParts(); + } + formatInterval(interval, opts = {}) { + const df = this.loc.dtFormatter(interval.start, { ...this.opts, ...opts }); + return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate()); + } + resolvedOptions(dt2, opts = {}) { + const df = this.loc.dtFormatter(dt2, { ...this.opts, ...opts }); + return df.resolvedOptions(); + } + num(n3, p2 = 0) { + if (this.opts.forceSimple) { + return padStart(n3, p2); + } + const opts = { ...this.opts }; + if (p2 > 0) { + opts.padTo = p2; + } + return this.loc.numberFormatter(opts).format(n3); + } + formatDateTimeFromString(dt2, fmt) { + const knownEnglish = this.loc.listingMode() === "en", useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== "gregory", string = (opts, extract) => this.loc.extract(dt2, opts, extract), formatOffset2 = (opts) => { + if (dt2.isOffsetFixed && dt2.offset === 0 && opts.allowZ) { + return "Z"; + } + return dt2.isValid ? dt2.zone.formatOffset(dt2.ts, opts.format) : ""; + }, meridiem = () => knownEnglish ? meridiemForDateTime(dt2) : string({ hour: "numeric", hourCycle: "h12" }, "dayperiod"), month = (length, standalone) => knownEnglish ? monthForDateTime(dt2, length) : string(standalone ? { month: length } : { month: length, day: "numeric" }, "month"), weekday = (length, standalone) => knownEnglish ? weekdayForDateTime(dt2, length) : string( + standalone ? { weekday: length } : { weekday: length, month: "long", day: "numeric" }, + "weekday" + ), maybeMacro = (token) => { + const formatOpts = _Formatter.macroTokenToFormatOpts(token); + if (formatOpts) { + return this.formatWithSystemDefault(dt2, formatOpts); + } else { + return token; + } + }, era = (length) => knownEnglish ? eraForDateTime(dt2, length) : string({ era: length }, "era"), tokenToString = (token) => { + switch (token) { + case "S": + return this.num(dt2.millisecond); + case "u": + case "SSS": + return this.num(dt2.millisecond, 3); + case "s": + return this.num(dt2.second); + case "ss": + return this.num(dt2.second, 2); + case "uu": + return this.num(Math.floor(dt2.millisecond / 10), 2); + case "uuu": + return this.num(Math.floor(dt2.millisecond / 100)); + case "m": + return this.num(dt2.minute); + case "mm": + return this.num(dt2.minute, 2); + case "h": + return this.num(dt2.hour % 12 === 0 ? 12 : dt2.hour % 12); + case "hh": + return this.num(dt2.hour % 12 === 0 ? 12 : dt2.hour % 12, 2); + case "H": + return this.num(dt2.hour); + case "HH": + return this.num(dt2.hour, 2); + case "Z": + return formatOffset2({ format: "narrow", allowZ: this.opts.allowZ }); + case "ZZ": + return formatOffset2({ format: "short", allowZ: this.opts.allowZ }); + case "ZZZ": + return formatOffset2({ format: "techie", allowZ: this.opts.allowZ }); + case "ZZZZ": + return dt2.zone.offsetName(dt2.ts, { format: "short", locale: this.loc.locale }); + case "ZZZZZ": + return dt2.zone.offsetName(dt2.ts, { format: "long", locale: this.loc.locale }); + case "z": + return dt2.zoneName; + case "a": + return meridiem(); + case "d": + return useDateTimeFormatter ? string({ day: "numeric" }, "day") : this.num(dt2.day); + case "dd": + return useDateTimeFormatter ? string({ day: "2-digit" }, "day") : this.num(dt2.day, 2); + case "c": + return this.num(dt2.weekday); + case "ccc": + return weekday("short", true); + case "cccc": + return weekday("long", true); + case "ccccc": + return weekday("narrow", true); + case "E": + return this.num(dt2.weekday); + case "EEE": + return weekday("short", false); + case "EEEE": + return weekday("long", false); + case "EEEEE": + return weekday("narrow", false); + case "L": + return useDateTimeFormatter ? string({ month: "numeric", day: "numeric" }, "month") : this.num(dt2.month); + case "LL": + return useDateTimeFormatter ? string({ month: "2-digit", day: "numeric" }, "month") : this.num(dt2.month, 2); + case "LLL": + return month("short", true); + case "LLLL": + return month("long", true); + case "LLLLL": + return month("narrow", true); + case "M": + return useDateTimeFormatter ? string({ month: "numeric" }, "month") : this.num(dt2.month); + case "MM": + return useDateTimeFormatter ? string({ month: "2-digit" }, "month") : this.num(dt2.month, 2); + case "MMM": + return month("short", false); + case "MMMM": + return month("long", false); + case "MMMMM": + return month("narrow", false); + case "y": + return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt2.year); + case "yy": + return useDateTimeFormatter ? string({ year: "2-digit" }, "year") : this.num(dt2.year.toString().slice(-2), 2); + case "yyyy": + return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt2.year, 4); + case "yyyyyy": + return useDateTimeFormatter ? string({ year: "numeric" }, "year") : this.num(dt2.year, 6); + case "G": + return era("short"); + case "GG": + return era("long"); + case "GGGGG": + return era("narrow"); + case "kk": + return this.num(dt2.weekYear.toString().slice(-2), 2); + case "kkkk": + return this.num(dt2.weekYear, 4); + case "W": + return this.num(dt2.weekNumber); + case "WW": + return this.num(dt2.weekNumber, 2); + case "o": + return this.num(dt2.ordinal); + case "ooo": + return this.num(dt2.ordinal, 3); + case "q": + return this.num(dt2.quarter); + case "qq": + return this.num(dt2.quarter, 2); + case "X": + return this.num(Math.floor(dt2.ts / 1e3)); + case "x": + return this.num(dt2.ts); + default: + return maybeMacro(token); + } + }; + return stringifyTokens(_Formatter.parseFormat(fmt), tokenToString); + } + formatDurationFromString(dur, fmt) { + const tokenToField = (token) => { + switch (token[0]) { + case "S": + return "millisecond"; + case "s": + return "second"; + case "m": + return "minute"; + case "h": + return "hour"; + case "d": + return "day"; + case "w": + return "week"; + case "M": + return "month"; + case "y": + return "year"; + default: + return null; + } + }, tokenToString = (lildur) => (token) => { + const mapped = tokenToField(token); + if (mapped) { + return this.num(lildur.get(mapped), token.length); + } else { + return token; + } + }, tokens = _Formatter.parseFormat(fmt), realTokens = tokens.reduce( + (found, { literal, val }) => literal ? found : found.concat(val), + [] + ), collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t2) => t2)); + return stringifyTokens(tokens, tokenToString(collapsed)); + } + }; + var Invalid = class { + constructor(reason, explanation) { + this.reason = reason; + this.explanation = explanation; + } + toMessage() { + if (this.explanation) { + return `${this.reason}: ${this.explanation}`; + } else { + return this.reason; + } + } + }; + var ianaRegex = /[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/; + function combineRegexes(...regexes) { + const full = regexes.reduce((f2, r2) => f2 + r2.source, ""); + return RegExp(`^${full}$`); + } + function combineExtractors(...extractors) { + return (m2) => extractors.reduce( + ([mergedVals, mergedZone, cursor], ex) => { + const [val, zone, next] = ex(m2, cursor); + return [{ ...mergedVals, ...val }, zone || mergedZone, next]; + }, + [{}, null, 1] + ).slice(0, 2); + } + function parse(s3, ...patterns) { + if (s3 == null) { + return [null, null]; + } + for (const [regex, extractor] of patterns) { + const m2 = regex.exec(s3); + if (m2) { + return extractor(m2); + } + } + return [null, null]; + } + function simpleParse(...keys2) { + return (match2, cursor) => { + const ret = {}; + let i2; + for (i2 = 0; i2 < keys2.length; i2++) { + ret[keys2[i2]] = parseInteger(match2[cursor + i2]); + } + return [ret, null, cursor + i2]; + }; + } + var offsetRegex = /(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/; + var isoExtendedZone = `(?:${offsetRegex.source}?(?:\\[(${ianaRegex.source})\\])?)?`; + var isoTimeBaseRegex = /(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/; + var isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`); + var isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`); + var isoYmdRegex = /([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/; + var isoWeekRegex = /(\d{4})-?W(\d\d)(?:-?(\d))?/; + var isoOrdinalRegex = /(\d{4})-?(\d{3})/; + var extractISOWeekData = simpleParse("weekYear", "weekNumber", "weekDay"); + var extractISOOrdinalData = simpleParse("year", "ordinal"); + var sqlYmdRegex = /(\d{4})-(\d\d)-(\d\d)/; + var sqlTimeRegex = RegExp( + `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?` + ); + var sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`); + function int(match2, pos, fallback) { + const m2 = match2[pos]; + return isUndefined2(m2) ? fallback : parseInteger(m2); + } + function extractISOYmd(match2, cursor) { + const item = { + year: int(match2, cursor), + month: int(match2, cursor + 1, 1), + day: int(match2, cursor + 2, 1) + }; + return [item, null, cursor + 3]; + } + function extractISOTime(match2, cursor) { + const item = { + hours: int(match2, cursor, 0), + minutes: int(match2, cursor + 1, 0), + seconds: int(match2, cursor + 2, 0), + milliseconds: parseMillis(match2[cursor + 3]) + }; + return [item, null, cursor + 4]; + } + function extractISOOffset(match2, cursor) { + const local = !match2[cursor] && !match2[cursor + 1], fullOffset = signedOffset(match2[cursor + 1], match2[cursor + 2]), zone = local ? null : FixedOffsetZone.instance(fullOffset); + return [{}, zone, cursor + 3]; + } + function extractIANAZone(match2, cursor) { + const zone = match2[cursor] ? IANAZone.create(match2[cursor]) : null; + return [{}, zone, cursor + 1]; + } + var isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`); + var isoDuration = /^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/; + function extractISODuration(match2) { + const [s3, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] = match2; + const hasNegativePrefix = s3[0] === "-"; + const negativeSeconds = secondStr && secondStr[0] === "-"; + const maybeNegate = (num, force = false) => num !== void 0 && (force || num && hasNegativePrefix) ? -num : num; + return [ + { + years: maybeNegate(parseFloating(yearStr)), + months: maybeNegate(parseFloating(monthStr)), + weeks: maybeNegate(parseFloating(weekStr)), + days: maybeNegate(parseFloating(dayStr)), + hours: maybeNegate(parseFloating(hourStr)), + minutes: maybeNegate(parseFloating(minuteStr)), + seconds: maybeNegate(parseFloating(secondStr), secondStr === "-0"), + milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds) + } + ]; + } + var obsOffsets = { + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60 + }; + function fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + const result = { + year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr), + month: monthsShort.indexOf(monthStr) + 1, + day: parseInteger(dayStr), + hour: parseInteger(hourStr), + minute: parseInteger(minuteStr) + }; + if (secondStr) + result.second = parseInteger(secondStr); + if (weekdayStr) { + result.weekday = weekdayStr.length > 3 ? weekdaysLong.indexOf(weekdayStr) + 1 : weekdaysShort.indexOf(weekdayStr) + 1; + } + return result; + } + var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/; + function extractRFC2822(match2) { + const [ + , + weekdayStr, + dayStr, + monthStr, + yearStr, + hourStr, + minuteStr, + secondStr, + obsOffset, + milOffset, + offHourStr, + offMinuteStr + ] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + let offset4; + if (obsOffset) { + offset4 = obsOffsets[obsOffset]; + } else if (milOffset) { + offset4 = 0; + } else { + offset4 = signedOffset(offHourStr, offMinuteStr); + } + return [result, new FixedOffsetZone(offset4)]; + } + function preprocessRFC2822(s3) { + return s3.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").trim(); + } + var rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/; + var rfc850 = /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/; + var ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/; + function extractRFC1123Or850(match2) { + const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + return [result, FixedOffsetZone.utcInstance]; + } + function extractASCII(match2) { + const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match2, result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr); + return [result, FixedOffsetZone.utcInstance]; + } + var isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex); + var isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex); + var isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex); + var isoTimeCombinedRegex = combineRegexes(isoTimeRegex); + var extractISOYmdTimeAndOffset = combineExtractors( + extractISOYmd, + extractISOTime, + extractISOOffset, + extractIANAZone + ); + var extractISOWeekTimeAndOffset = combineExtractors( + extractISOWeekData, + extractISOTime, + extractISOOffset, + extractIANAZone + ); + var extractISOOrdinalDateAndTime = combineExtractors( + extractISOOrdinalData, + extractISOTime, + extractISOOffset, + extractIANAZone + ); + var extractISOTimeAndOffset = combineExtractors( + extractISOTime, + extractISOOffset, + extractIANAZone + ); + function parseISODate(s3) { + return parse( + s3, + [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], + [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset], + [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime], + [isoTimeCombinedRegex, extractISOTimeAndOffset] + ); + } + function parseRFC2822Date(s3) { + return parse(preprocessRFC2822(s3), [rfc2822, extractRFC2822]); + } + function parseHTTPDate(s3) { + return parse( + s3, + [rfc1123, extractRFC1123Or850], + [rfc850, extractRFC1123Or850], + [ascii, extractASCII] + ); + } + function parseISODuration(s3) { + return parse(s3, [isoDuration, extractISODuration]); + } + var extractISOTimeOnly = combineExtractors(extractISOTime); + function parseISOTimeOnly(s3) { + return parse(s3, [isoTimeOnly, extractISOTimeOnly]); + } + var sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex); + var sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex); + var extractISOTimeOffsetAndIANAZone = combineExtractors( + extractISOTime, + extractISOOffset, + extractIANAZone + ); + function parseSQL(s3) { + return parse( + s3, + [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset], + [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone] + ); + } + var INVALID$2 = "Invalid Duration"; + var lowOrderMatrix = { + weeks: { + days: 7, + hours: 7 * 24, + minutes: 7 * 24 * 60, + seconds: 7 * 24 * 60 * 60, + milliseconds: 7 * 24 * 60 * 60 * 1e3 + }, + days: { + hours: 24, + minutes: 24 * 60, + seconds: 24 * 60 * 60, + milliseconds: 24 * 60 * 60 * 1e3 + }, + hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1e3 }, + minutes: { seconds: 60, milliseconds: 60 * 1e3 }, + seconds: { milliseconds: 1e3 } + }; + var casualMatrix = { + years: { + quarters: 4, + months: 12, + weeks: 52, + days: 365, + hours: 365 * 24, + minutes: 365 * 24 * 60, + seconds: 365 * 24 * 60 * 60, + milliseconds: 365 * 24 * 60 * 60 * 1e3 + }, + quarters: { + months: 3, + weeks: 13, + days: 91, + hours: 91 * 24, + minutes: 91 * 24 * 60, + seconds: 91 * 24 * 60 * 60, + milliseconds: 91 * 24 * 60 * 60 * 1e3 + }, + months: { + weeks: 4, + days: 30, + hours: 30 * 24, + minutes: 30 * 24 * 60, + seconds: 30 * 24 * 60 * 60, + milliseconds: 30 * 24 * 60 * 60 * 1e3 + }, + ...lowOrderMatrix + }; + var daysInYearAccurate = 146097 / 400; + var daysInMonthAccurate = 146097 / 4800; + var accurateMatrix = { + years: { + quarters: 4, + months: 12, + weeks: daysInYearAccurate / 7, + days: daysInYearAccurate, + hours: daysInYearAccurate * 24, + minutes: daysInYearAccurate * 24 * 60, + seconds: daysInYearAccurate * 24 * 60 * 60, + milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1e3 + }, + quarters: { + months: 3, + weeks: daysInYearAccurate / 28, + days: daysInYearAccurate / 4, + hours: daysInYearAccurate * 24 / 4, + minutes: daysInYearAccurate * 24 * 60 / 4, + seconds: daysInYearAccurate * 24 * 60 * 60 / 4, + milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1e3 / 4 + }, + months: { + weeks: daysInMonthAccurate / 7, + days: daysInMonthAccurate, + hours: daysInMonthAccurate * 24, + minutes: daysInMonthAccurate * 24 * 60, + seconds: daysInMonthAccurate * 24 * 60 * 60, + milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1e3 + }, + ...lowOrderMatrix + }; + var orderedUnits$1 = [ + "years", + "quarters", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ]; + var reverseUnits = orderedUnits$1.slice(0).reverse(); + function clone$1(dur, alts, clear = false) { + const conf = { + values: clear ? alts.values : { ...dur.values, ...alts.values || {} }, + loc: dur.loc.clone(alts.loc), + conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy, + matrix: alts.matrix || dur.matrix + }; + return new Duration(conf); + } + function antiTrunc(n3) { + return n3 < 0 ? Math.floor(n3) : Math.ceil(n3); + } + function convert(matrix, fromMap, fromUnit, toMap, toUnit) { + const conv = matrix[toUnit][fromUnit], raw = fromMap[fromUnit] / conv, sameSign = Math.sign(raw) === Math.sign(toMap[toUnit]), added = !sameSign && toMap[toUnit] !== 0 && Math.abs(raw) <= 1 ? antiTrunc(raw) : Math.trunc(raw); + toMap[toUnit] += added; + fromMap[fromUnit] -= added * conv; + } + function normalizeValues(matrix, vals) { + reverseUnits.reduce((previous, current2) => { + if (!isUndefined2(vals[current2])) { + if (previous) { + convert(matrix, vals, previous, vals, current2); + } + return current2; + } else { + return previous; + } + }, null); + } + function removeZeroes(vals) { + const newVals = {}; + for (const [key, value] of Object.entries(vals)) { + if (value !== 0) { + newVals[key] = value; + } + } + return newVals; + } + var Duration = class _Duration { + /** + * @private + */ + constructor(config) { + const accurate = config.conversionAccuracy === "longterm" || false; + let matrix = accurate ? accurateMatrix : casualMatrix; + if (config.matrix) { + matrix = config.matrix; + } + this.values = config.values; + this.loc = config.loc || Locale.create(); + this.conversionAccuracy = accurate ? "longterm" : "casual"; + this.invalid = config.invalid || null; + this.matrix = matrix; + this.isLuxonDuration = true; + } + /** + * Create Duration from a number of milliseconds. + * @param {number} count of milliseconds + * @param {Object} opts - options for parsing + * @param {string} [opts.locale='en-US'] - the locale to use + * @param {string} opts.numberingSystem - the numbering system to use + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @return {Duration} + */ + static fromMillis(count, opts) { + return _Duration.fromObject({ milliseconds: count }, opts); + } + /** + * Create a Duration from a JavaScript object with keys like 'years' and 'hours'. + * If this object is empty then a zero milliseconds duration is returned. + * @param {Object} obj - the object to create the DateTime from + * @param {number} obj.years + * @param {number} obj.quarters + * @param {number} obj.months + * @param {number} obj.weeks + * @param {number} obj.days + * @param {number} obj.hours + * @param {number} obj.minutes + * @param {number} obj.seconds + * @param {number} obj.milliseconds + * @param {Object} [opts=[]] - options for creating this Duration + * @param {string} [opts.locale='en-US'] - the locale to use + * @param {string} opts.numberingSystem - the numbering system to use + * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use + * @param {string} [opts.matrix=Object] - the custom conversion system to use + * @return {Duration} + */ + static fromObject(obj, opts = {}) { + if (obj == null || typeof obj !== "object") { + throw new InvalidArgumentError( + `Duration.fromObject: argument expected to be an object, got ${obj === null ? "null" : typeof obj}` + ); + } + return new _Duration({ + values: normalizeObject(obj, _Duration.normalizeUnit), + loc: Locale.fromObject(opts), + conversionAccuracy: opts.conversionAccuracy, + matrix: opts.matrix + }); + } + /** + * Create a Duration from DurationLike. + * + * @param {Object | number | Duration} durationLike + * One of: + * - object with keys like 'years' and 'hours'. + * - number representing milliseconds + * - Duration instance + * @return {Duration} + */ + static fromDurationLike(durationLike) { + if (isNumber2(durationLike)) { + return _Duration.fromMillis(durationLike); + } else if (_Duration.isDuration(durationLike)) { + return durationLike; + } else if (typeof durationLike === "object") { + return _Duration.fromObject(durationLike); + } else { + throw new InvalidArgumentError( + `Unknown duration argument ${durationLike} of type ${typeof durationLike}` + ); + } + } + /** + * Create a Duration from an ISO 8601 duration string. + * @param {string} text - text to parse + * @param {Object} opts - options for parsing + * @param {string} [opts.locale='en-US'] - the locale to use + * @param {string} opts.numberingSystem - the numbering system to use + * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use + * @param {string} [opts.matrix=Object] - the preset conversion system to use + * @see https://en.wikipedia.org/wiki/ISO_8601#Durations + * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 } + * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 } + * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 } + * @return {Duration} + */ + static fromISO(text2, opts) { + const [parsed] = parseISODuration(text2); + if (parsed) { + return _Duration.fromObject(parsed, opts); + } else { + return _Duration.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); + } + } + /** + * Create a Duration from an ISO 8601 time string. + * @param {string} text - text to parse + * @param {Object} opts - options for parsing + * @param {string} [opts.locale='en-US'] - the locale to use + * @param {string} opts.numberingSystem - the numbering system to use + * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use + * @param {string} [opts.matrix=Object] - the conversion system to use + * @see https://en.wikipedia.org/wiki/ISO_8601#Times + * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 } + * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 } + * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 } + * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 } + * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 } + * @return {Duration} + */ + static fromISOTime(text2, opts) { + const [parsed] = parseISOTimeOnly(text2); + if (parsed) { + return _Duration.fromObject(parsed, opts); + } else { + return _Duration.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); + } + } + /** + * Create an invalid Duration. + * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent + * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information + * @return {Duration} + */ + static invalid(reason, explanation = null) { + if (!reason) { + throw new InvalidArgumentError("need to specify a reason the Duration is invalid"); + } + const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation); + if (Settings2.throwOnInvalid) { + throw new InvalidDurationError(invalid); + } else { + return new _Duration({ invalid }); + } + } + /** + * @private + */ + static normalizeUnit(unit) { + const normalized = { + year: "years", + years: "years", + quarter: "quarters", + quarters: "quarters", + month: "months", + months: "months", + week: "weeks", + weeks: "weeks", + day: "days", + days: "days", + hour: "hours", + hours: "hours", + minute: "minutes", + minutes: "minutes", + second: "seconds", + seconds: "seconds", + millisecond: "milliseconds", + milliseconds: "milliseconds" + }[unit ? unit.toLowerCase() : unit]; + if (!normalized) + throw new InvalidUnitError(unit); + return normalized; + } + /** + * Check if an object is a Duration. Works across context boundaries + * @param {object} o + * @return {boolean} + */ + static isDuration(o2) { + return o2 && o2.isLuxonDuration || false; + } + /** + * Get the locale of a Duration, such 'en-GB' + * @type {string} + */ + get locale() { + return this.isValid ? this.loc.locale : null; + } + /** + * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration + * + * @type {string} + */ + get numberingSystem() { + return this.isValid ? this.loc.numberingSystem : null; + } + /** + * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens: + * * `S` for milliseconds + * * `s` for seconds + * * `m` for minutes + * * `h` for hours + * * `d` for days + * * `w` for weeks + * * `M` for months + * * `y` for years + * Notes: + * * Add padding by repeating the token, e.g. "yy" pads the years to two digits, "hhhh" pads the hours out to four digits + * * Tokens can be escaped by wrapping with single quotes. + * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting. + * @param {string} fmt - the format string + * @param {Object} opts - options + * @param {boolean} [opts.floor=true] - floor numerical values + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("y d s") //=> "1 6 2" + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("yy dd sss") //=> "01 06 002" + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat("M S") //=> "12 518402000" + * @return {string} + */ + toFormat(fmt, opts = {}) { + const fmtOpts = { + ...opts, + floor: opts.round !== false && opts.floor !== false + }; + return this.isValid ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt) : INVALID$2; + } + /** + * Returns a string representation of a Duration with all units included. + * To modify its behavior use the `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat + * @param opts - On option object to override the formatting. Accepts the same keys as the options parameter of the native `Int.NumberFormat` constructor, as well as `listStyle`. + * @example + * ```js + * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 }) + * dur.toHuman() //=> '1 day, 5 hours, 6 minutes' + * dur.toHuman({ listStyle: "long" }) //=> '1 day, 5 hours, and 6 minutes' + * dur.toHuman({ unitDisplay: "short" }) //=> '1 day, 5 hr, 6 min' + * ``` + */ + toHuman(opts = {}) { + const l3 = orderedUnits$1.map((unit) => { + const val = this.values[unit]; + if (isUndefined2(val)) { + return null; + } + return this.loc.numberFormatter({ style: "unit", unitDisplay: "long", ...opts, unit: unit.slice(0, -1) }).format(val); + }).filter((n3) => n3); + return this.loc.listFormatter({ type: "conjunction", style: opts.listStyle || "narrow", ...opts }).format(l3); + } + /** + * Returns a JavaScript object with this Duration's values. + * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 } + * @return {Object} + */ + toObject() { + if (!this.isValid) + return {}; + return { ...this.values }; + } + /** + * Returns an ISO 8601-compliant string representation of this Duration. + * @see https://en.wikipedia.org/wiki/ISO_8601#Durations + * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S' + * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S' + * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M' + * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M' + * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S' + * @return {string} + */ + toISO() { + if (!this.isValid) + return null; + let s3 = "P"; + if (this.years !== 0) + s3 += this.years + "Y"; + if (this.months !== 0 || this.quarters !== 0) + s3 += this.months + this.quarters * 3 + "M"; + if (this.weeks !== 0) + s3 += this.weeks + "W"; + if (this.days !== 0) + s3 += this.days + "D"; + if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0) + s3 += "T"; + if (this.hours !== 0) + s3 += this.hours + "H"; + if (this.minutes !== 0) + s3 += this.minutes + "M"; + if (this.seconds !== 0 || this.milliseconds !== 0) + s3 += roundTo(this.seconds + this.milliseconds / 1e3, 3) + "S"; + if (s3 === "P") + s3 += "T0S"; + return s3; + } + /** + * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day. + * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours. + * @see https://en.wikipedia.org/wiki/ISO_8601#Times + * @param {Object} opts - options + * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0 + * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0 + * @param {boolean} [opts.includePrefix=false] - include the `T` prefix + * @param {string} [opts.format='extended'] - choose between the basic and extended format + * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000' + * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00' + * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00' + * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000' + * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000' + * @return {string} + */ + toISOTime(opts = {}) { + if (!this.isValid) + return null; + const millis = this.toMillis(); + if (millis < 0 || millis >= 864e5) + return null; + opts = { + suppressMilliseconds: false, + suppressSeconds: false, + includePrefix: false, + format: "extended", + ...opts + }; + const value = this.shiftTo("hours", "minutes", "seconds", "milliseconds"); + let fmt = opts.format === "basic" ? "hhmm" : "hh:mm"; + if (!opts.suppressSeconds || value.seconds !== 0 || value.milliseconds !== 0) { + fmt += opts.format === "basic" ? "ss" : ":ss"; + if (!opts.suppressMilliseconds || value.milliseconds !== 0) { + fmt += ".SSS"; + } + } + let str = value.toFormat(fmt); + if (opts.includePrefix) { + str = "T" + str; + } + return str; + } + /** + * Returns an ISO 8601 representation of this Duration appropriate for use in JSON. + * @return {string} + */ + toJSON() { + return this.toISO(); + } + /** + * Returns an ISO 8601 representation of this Duration appropriate for use in debugging. + * @return {string} + */ + toString() { + return this.toISO(); + } + /** + * Returns an milliseconds value of this Duration. + * @return {number} + */ + toMillis() { + return this.as("milliseconds"); + } + /** + * Returns an milliseconds value of this Duration. Alias of {@link toMillis} + * @return {number} + */ + valueOf() { + return this.toMillis(); + } + /** + * Make this Duration longer by the specified amount. Return a newly-constructed Duration. + * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + * @return {Duration} + */ + plus(duration) { + if (!this.isValid) + return this; + const dur = _Duration.fromDurationLike(duration), result = {}; + for (const k2 of orderedUnits$1) { + if (hasOwnProperty2(dur.values, k2) || hasOwnProperty2(this.values, k2)) { + result[k2] = dur.get(k2) + this.get(k2); + } + } + return clone$1(this, { values: result }, true); + } + /** + * Make this Duration shorter by the specified amount. Return a newly-constructed Duration. + * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + * @return {Duration} + */ + minus(duration) { + if (!this.isValid) + return this; + const dur = _Duration.fromDurationLike(duration); + return this.plus(dur.negate()); + } + /** + * Scale this Duration by the specified amount. Return a newly-constructed Duration. + * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number. + * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 } + * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === "hours" ? x * 2 : x) //=> { hours: 2, minutes: 30 } + * @return {Duration} + */ + mapUnits(fn) { + if (!this.isValid) + return this; + const result = {}; + for (const k2 of Object.keys(this.values)) { + result[k2] = asNumber(fn(this.values[k2], k2)); + } + return clone$1(this, { values: result }, true); + } + /** + * Get the value of unit. + * @param {string} unit - a unit such as 'minute' or 'day' + * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2 + * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0 + * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3 + * @return {number} + */ + get(unit) { + return this[_Duration.normalizeUnit(unit)]; + } + /** + * "Set" the values of specified units. Return a newly-constructed Duration. + * @param {Object} values - a mapping of units to numbers + * @example dur.set({ years: 2017 }) + * @example dur.set({ hours: 8, minutes: 30 }) + * @return {Duration} + */ + set(values) { + if (!this.isValid) + return this; + const mixed = { ...this.values, ...normalizeObject(values, _Duration.normalizeUnit) }; + return clone$1(this, { values: mixed }); + } + /** + * "Set" the locale and/or numberingSystem. Returns a newly-constructed Duration. + * @example dur.reconfigure({ locale: 'en-GB' }) + * @return {Duration} + */ + reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) { + const loc = this.loc.clone({ locale, numberingSystem }); + const opts = { loc, matrix, conversionAccuracy }; + return clone$1(this, opts); + } + /** + * Return the length of the duration in the specified unit. + * @param {string} unit - a unit such as 'minutes' or 'days' + * @example Duration.fromObject({years: 1}).as('days') //=> 365 + * @example Duration.fromObject({years: 1}).as('months') //=> 12 + * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5 + * @return {number} + */ + as(unit) { + return this.isValid ? this.shiftTo(unit).get(unit) : NaN; + } + /** + * Reduce this Duration to its canonical representation in its current units. + * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 } + * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 } + * @return {Duration} + */ + normalize() { + if (!this.isValid) + return this; + const vals = this.toObject(); + normalizeValues(this.matrix, vals); + return clone$1(this, { values: vals }, true); + } + /** + * Rescale units to its largest representation + * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 } + * @return {Duration} + */ + rescale() { + if (!this.isValid) + return this; + const vals = removeZeroes(this.normalize().shiftToAll().toObject()); + return clone$1(this, { values: vals }, true); + } + /** + * Convert this Duration into its representation in a different set of units. + * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 } + * @return {Duration} + */ + shiftTo(...units) { + if (!this.isValid) + return this; + if (units.length === 0) { + return this; + } + units = units.map((u2) => _Duration.normalizeUnit(u2)); + const built = {}, accumulated = {}, vals = this.toObject(); + let lastUnit; + for (const k2 of orderedUnits$1) { + if (units.indexOf(k2) >= 0) { + lastUnit = k2; + let own = 0; + for (const ak in accumulated) { + own += this.matrix[ak][k2] * accumulated[ak]; + accumulated[ak] = 0; + } + if (isNumber2(vals[k2])) { + own += vals[k2]; + } + const i2 = Math.trunc(own); + built[k2] = i2; + accumulated[k2] = (own * 1e3 - i2 * 1e3) / 1e3; + for (const down in vals) { + if (orderedUnits$1.indexOf(down) > orderedUnits$1.indexOf(k2)) { + convert(this.matrix, vals, down, built, k2); + } + } + } else if (isNumber2(vals[k2])) { + accumulated[k2] = vals[k2]; + } + } + for (const key in accumulated) { + if (accumulated[key] !== 0) { + built[lastUnit] += key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key]; + } + } + return clone$1(this, { values: built }, true).normalize(); + } + /** + * Shift this Duration to all available units. + * Same as shiftTo("years", "months", "weeks", "days", "hours", "minutes", "seconds", "milliseconds") + * @return {Duration} + */ + shiftToAll() { + if (!this.isValid) + return this; + return this.shiftTo( + "years", + "months", + "weeks", + "days", + "hours", + "minutes", + "seconds", + "milliseconds" + ); + } + /** + * Return the negative of this Duration. + * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 } + * @return {Duration} + */ + negate() { + if (!this.isValid) + return this; + const negated = {}; + for (const k2 of Object.keys(this.values)) { + negated[k2] = this.values[k2] === 0 ? 0 : -this.values[k2]; + } + return clone$1(this, { values: negated }, true); + } + /** + * Get the years. + * @type {number} + */ + get years() { + return this.isValid ? this.values.years || 0 : NaN; + } + /** + * Get the quarters. + * @type {number} + */ + get quarters() { + return this.isValid ? this.values.quarters || 0 : NaN; + } + /** + * Get the months. + * @type {number} + */ + get months() { + return this.isValid ? this.values.months || 0 : NaN; + } + /** + * Get the weeks + * @type {number} + */ + get weeks() { + return this.isValid ? this.values.weeks || 0 : NaN; + } + /** + * Get the days. + * @type {number} + */ + get days() { + return this.isValid ? this.values.days || 0 : NaN; + } + /** + * Get the hours. + * @type {number} + */ + get hours() { + return this.isValid ? this.values.hours || 0 : NaN; + } + /** + * Get the minutes. + * @type {number} + */ + get minutes() { + return this.isValid ? this.values.minutes || 0 : NaN; + } + /** + * Get the seconds. + * @return {number} + */ + get seconds() { + return this.isValid ? this.values.seconds || 0 : NaN; + } + /** + * Get the milliseconds. + * @return {number} + */ + get milliseconds() { + return this.isValid ? this.values.milliseconds || 0 : NaN; + } + /** + * Returns whether the Duration is invalid. Invalid durations are returned by diff operations + * on invalid DateTimes or Intervals. + * @return {boolean} + */ + get isValid() { + return this.invalid === null; + } + /** + * Returns an error code if this Duration became invalid, or null if the Duration is valid + * @return {string} + */ + get invalidReason() { + return this.invalid ? this.invalid.reason : null; + } + /** + * Returns an explanation of why this Duration became invalid, or null if the Duration is valid + * @type {string} + */ + get invalidExplanation() { + return this.invalid ? this.invalid.explanation : null; + } + /** + * Equality check + * Two Durations are equal iff they have the same units and the same values for each unit. + * @param {Duration} other + * @return {boolean} + */ + equals(other) { + if (!this.isValid || !other.isValid) { + return false; + } + if (!this.loc.equals(other.loc)) { + return false; + } + function eq(v1, v2) { + if (v1 === void 0 || v1 === 0) + return v2 === void 0 || v2 === 0; + return v1 === v2; + } + for (const u2 of orderedUnits$1) { + if (!eq(this.values[u2], other.values[u2])) { + return false; + } + } + return true; + } + }; + var INVALID$1 = "Invalid Interval"; + function validateStartEnd(start, end) { + if (!start || !start.isValid) { + return Interval.invalid("missing or invalid start"); + } else if (!end || !end.isValid) { + return Interval.invalid("missing or invalid end"); + } else if (end < start) { + return Interval.invalid( + "end before start", + `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}` + ); + } else { + return null; + } + } + var Interval = class _Interval { + /** + * @private + */ + constructor(config) { + this.s = config.start; + this.e = config.end; + this.invalid = config.invalid || null; + this.isLuxonInterval = true; + } + /** + * Create an invalid Interval. + * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent + * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information + * @return {Interval} + */ + static invalid(reason, explanation = null) { + if (!reason) { + throw new InvalidArgumentError("need to specify a reason the Interval is invalid"); + } + const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation); + if (Settings2.throwOnInvalid) { + throw new InvalidIntervalError(invalid); + } else { + return new _Interval({ invalid }); + } + } + /** + * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end. + * @param {DateTime|Date|Object} start + * @param {DateTime|Date|Object} end + * @return {Interval} + */ + static fromDateTimes(start, end) { + const builtStart = friendlyDateTime(start), builtEnd = friendlyDateTime(end); + const validateError = validateStartEnd(builtStart, builtEnd); + if (validateError == null) { + return new _Interval({ + start: builtStart, + end: builtEnd + }); + } else { + return validateError; + } + } + /** + * Create an Interval from a start DateTime and a Duration to extend to. + * @param {DateTime|Date|Object} start + * @param {Duration|Object|number} duration - the length of the Interval. + * @return {Interval} + */ + static after(start, duration) { + const dur = Duration.fromDurationLike(duration), dt2 = friendlyDateTime(start); + return _Interval.fromDateTimes(dt2, dt2.plus(dur)); + } + /** + * Create an Interval from an end DateTime and a Duration to extend backwards to. + * @param {DateTime|Date|Object} end + * @param {Duration|Object|number} duration - the length of the Interval. + * @return {Interval} + */ + static before(end, duration) { + const dur = Duration.fromDurationLike(duration), dt2 = friendlyDateTime(end); + return _Interval.fromDateTimes(dt2.minus(dur), dt2); + } + /** + * Create an Interval from an ISO 8601 string. + * Accepts `/`, `/`, and `/` formats. + * @param {string} text - the ISO string to parse + * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO} + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @return {Interval} + */ + static fromISO(text2, opts) { + const [s3, e2] = (text2 || "").split("/", 2); + if (s3 && e2) { + let start, startIsValid; + try { + start = DateTime.fromISO(s3, opts); + startIsValid = start.isValid; + } catch (e3) { + startIsValid = false; + } + let end, endIsValid; + try { + end = DateTime.fromISO(e2, opts); + endIsValid = end.isValid; + } catch (e3) { + endIsValid = false; + } + if (startIsValid && endIsValid) { + return _Interval.fromDateTimes(start, end); + } + if (startIsValid) { + const dur = Duration.fromISO(e2, opts); + if (dur.isValid) { + return _Interval.after(start, dur); + } + } else if (endIsValid) { + const dur = Duration.fromISO(s3, opts); + if (dur.isValid) { + return _Interval.before(end, dur); + } + } + } + return _Interval.invalid("unparsable", `the input "${text2}" can't be parsed as ISO 8601`); + } + /** + * Check if an object is an Interval. Works across context boundaries + * @param {object} o + * @return {boolean} + */ + static isInterval(o2) { + return o2 && o2.isLuxonInterval || false; + } + /** + * Returns the start of the Interval + * @type {DateTime} + */ + get start() { + return this.isValid ? this.s : null; + } + /** + * Returns the end of the Interval + * @type {DateTime} + */ + get end() { + return this.isValid ? this.e : null; + } + /** + * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'. + * @type {boolean} + */ + get isValid() { + return this.invalidReason === null; + } + /** + * Returns an error code if this Interval is invalid, or null if the Interval is valid + * @type {string} + */ + get invalidReason() { + return this.invalid ? this.invalid.reason : null; + } + /** + * Returns an explanation of why this Interval became invalid, or null if the Interval is valid + * @type {string} + */ + get invalidExplanation() { + return this.invalid ? this.invalid.explanation : null; + } + /** + * Returns the length of the Interval in the specified unit. + * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in. + * @return {number} + */ + length(unit = "milliseconds") { + return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN; + } + /** + * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part. + * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day' + * asks 'what dates are included in this interval?', not 'how many days long is this interval?' + * @param {string} [unit='milliseconds'] - the unit of time to count. + * @return {number} + */ + count(unit = "milliseconds") { + if (!this.isValid) + return NaN; + const start = this.start.startOf(unit), end = this.end.startOf(unit); + return Math.floor(end.diff(start, unit).get(unit)) + 1; + } + /** + * Returns whether this Interval's start and end are both in the same unit of time + * @param {string} unit - the unit of time to check sameness on + * @return {boolean} + */ + hasSame(unit) { + return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false; + } + /** + * Return whether this Interval has the same start and end DateTimes. + * @return {boolean} + */ + isEmpty() { + return this.s.valueOf() === this.e.valueOf(); + } + /** + * Return whether this Interval's start is after the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + isAfter(dateTime) { + if (!this.isValid) + return false; + return this.s > dateTime; + } + /** + * Return whether this Interval's end is before the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + isBefore(dateTime) { + if (!this.isValid) + return false; + return this.e <= dateTime; + } + /** + * Return whether this Interval contains the specified DateTime. + * @param {DateTime} dateTime + * @return {boolean} + */ + contains(dateTime) { + if (!this.isValid) + return false; + return this.s <= dateTime && this.e > dateTime; + } + /** + * "Sets" the start and/or end dates. Returns a newly-constructed Interval. + * @param {Object} values - the values to set + * @param {DateTime} values.start - the starting DateTime + * @param {DateTime} values.end - the ending DateTime + * @return {Interval} + */ + set({ start, end } = {}) { + if (!this.isValid) + return this; + return _Interval.fromDateTimes(start || this.s, end || this.e); + } + /** + * Split this Interval at each of the specified DateTimes + * @param {...DateTime} dateTimes - the unit of time to count. + * @return {Array} + */ + splitAt(...dateTimes) { + if (!this.isValid) + return []; + const sorted = dateTimes.map(friendlyDateTime).filter((d2) => this.contains(d2)).sort(), results = []; + let { s: s3 } = this, i2 = 0; + while (s3 < this.e) { + const added = sorted[i2] || this.e, next = +added > +this.e ? this.e : added; + results.push(_Interval.fromDateTimes(s3, next)); + s3 = next; + i2 += 1; + } + return results; + } + /** + * Split this Interval into smaller Intervals, each of the specified length. + * Left over time is grouped into a smaller interval + * @param {Duration|Object|number} duration - The length of each resulting interval. + * @return {Array} + */ + splitBy(duration) { + const dur = Duration.fromDurationLike(duration); + if (!this.isValid || !dur.isValid || dur.as("milliseconds") === 0) { + return []; + } + let { s: s3 } = this, idx = 1, next; + const results = []; + while (s3 < this.e) { + const added = this.start.plus(dur.mapUnits((x2) => x2 * idx)); + next = +added > +this.e ? this.e : added; + results.push(_Interval.fromDateTimes(s3, next)); + s3 = next; + idx += 1; + } + return results; + } + /** + * Split this Interval into the specified number of smaller intervals. + * @param {number} numberOfParts - The number of Intervals to divide the Interval into. + * @return {Array} + */ + divideEqually(numberOfParts) { + if (!this.isValid) + return []; + return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts); + } + /** + * Return whether this Interval overlaps with the specified Interval + * @param {Interval} other + * @return {boolean} + */ + overlaps(other) { + return this.e > other.s && this.s < other.e; + } + /** + * Return whether this Interval's end is adjacent to the specified Interval's start. + * @param {Interval} other + * @return {boolean} + */ + abutsStart(other) { + if (!this.isValid) + return false; + return +this.e === +other.s; + } + /** + * Return whether this Interval's start is adjacent to the specified Interval's end. + * @param {Interval} other + * @return {boolean} + */ + abutsEnd(other) { + if (!this.isValid) + return false; + return +other.e === +this.s; + } + /** + * Return whether this Interval engulfs the start and end of the specified Interval. + * @param {Interval} other + * @return {boolean} + */ + engulfs(other) { + if (!this.isValid) + return false; + return this.s <= other.s && this.e >= other.e; + } + /** + * Return whether this Interval has the same start and end as the specified Interval. + * @param {Interval} other + * @return {boolean} + */ + equals(other) { + if (!this.isValid || !other.isValid) { + return false; + } + return this.s.equals(other.s) && this.e.equals(other.e); + } + /** + * Return an Interval representing the intersection of this Interval and the specified Interval. + * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals. + * Returns null if the intersection is empty, meaning, the intervals don't intersect. + * @param {Interval} other + * @return {Interval} + */ + intersection(other) { + if (!this.isValid) + return this; + const s3 = this.s > other.s ? this.s : other.s, e2 = this.e < other.e ? this.e : other.e; + if (s3 >= e2) { + return null; + } else { + return _Interval.fromDateTimes(s3, e2); + } + } + /** + * Return an Interval representing the union of this Interval and the specified Interval. + * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals. + * @param {Interval} other + * @return {Interval} + */ + union(other) { + if (!this.isValid) + return this; + const s3 = this.s < other.s ? this.s : other.s, e2 = this.e > other.e ? this.e : other.e; + return _Interval.fromDateTimes(s3, e2); + } + /** + * Merge an array of Intervals into a equivalent minimal set of Intervals. + * Combines overlapping and adjacent Intervals. + * @param {Array} intervals + * @return {Array} + */ + static merge(intervals) { + const [found, final] = intervals.sort((a2, b2) => a2.s - b2.s).reduce( + ([sofar, current2], item) => { + if (!current2) { + return [sofar, item]; + } else if (current2.overlaps(item) || current2.abutsStart(item)) { + return [sofar, current2.union(item)]; + } else { + return [sofar.concat([current2]), item]; + } + }, + [[], null] + ); + if (final) { + found.push(final); + } + return found; + } + /** + * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals. + * @param {Array} intervals + * @return {Array} + */ + static xor(intervals) { + let start = null, currentCount = 0; + const results = [], ends = intervals.map((i2) => [ + { time: i2.s, type: "s" }, + { time: i2.e, type: "e" } + ]), flattened = Array.prototype.concat(...ends), arr = flattened.sort((a2, b2) => a2.time - b2.time); + for (const i2 of arr) { + currentCount += i2.type === "s" ? 1 : -1; + if (currentCount === 1) { + start = i2.time; + } else { + if (start && +start !== +i2.time) { + results.push(_Interval.fromDateTimes(start, i2.time)); + } + start = null; + } + } + return _Interval.merge(results); + } + /** + * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals. + * @param {...Interval} intervals + * @return {Array} + */ + difference(...intervals) { + return _Interval.xor([this].concat(intervals)).map((i2) => this.intersection(i2)).filter((i2) => i2 && !i2.isEmpty()); + } + /** + * Returns a string representation of this Interval appropriate for debugging. + * @return {string} + */ + toString() { + if (!this.isValid) + return INVALID$1; + return `[${this.s.toISO()} \u2013 ${this.e.toISO()})`; + } + /** + * Returns a localized string representing this Interval. Accepts the same options as the + * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as + * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method + * is browser-specific, but in general it will return an appropriate representation of the + * Interval in the assigned locale. Defaults to the system's locale if no locale has been + * specified. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or + * Intl.DateTimeFormat constructor options. + * @param {Object} opts - Options to override the configuration of the start DateTime. + * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022 + * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022 + * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022 + * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM + * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p + * @return {string} + */ + toLocaleString(formatOpts = DATE_SHORT, opts = {}) { + return this.isValid ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this) : INVALID$1; + } + /** + * Returns an ISO 8601-compliant string representation of this Interval. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @param {Object} opts - The same options as {@link DateTime#toISO} + * @return {string} + */ + toISO(opts) { + if (!this.isValid) + return INVALID$1; + return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`; + } + /** + * Returns an ISO 8601-compliant string representation of date of this Interval. + * The time components are ignored. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @return {string} + */ + toISODate() { + if (!this.isValid) + return INVALID$1; + return `${this.s.toISODate()}/${this.e.toISODate()}`; + } + /** + * Returns an ISO 8601-compliant string representation of time of this Interval. + * The date components are ignored. + * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals + * @param {Object} opts - The same options as {@link DateTime#toISO} + * @return {string} + */ + toISOTime(opts) { + if (!this.isValid) + return INVALID$1; + return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`; + } + /** + * Returns a string representation of this Interval formatted according to the specified format + * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible + * formatting tool. + * @param {string} dateFormat - The format string. This string formats the start and end time. + * See {@link DateTime#toFormat} for details. + * @param {Object} opts - Options. + * @param {string} [opts.separator = ' – '] - A separator to place between the start and end + * representations. + * @return {string} + */ + toFormat(dateFormat, { separator = " \u2013 " } = {}) { + if (!this.isValid) + return INVALID$1; + return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`; + } + /** + * Return a Duration representing the time spanned by this interval. + * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration. + * @param {Object} opts - options that affect the creation of the Duration + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 } + * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 } + * @return {Duration} + */ + toDuration(unit, opts) { + if (!this.isValid) { + return Duration.invalid(this.invalidReason); + } + return this.e.diff(this.s, unit, opts); + } + /** + * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes + * @param {function} mapFn + * @return {Interval} + * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC()) + * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 })) + */ + mapEndpoints(mapFn) { + return _Interval.fromDateTimes(mapFn(this.s), mapFn(this.e)); + } + }; + var Info2 = class { + /** + * Return whether the specified zone contains a DST. + * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone. + * @return {boolean} + */ + static hasDST(zone = Settings2.defaultZone) { + const proto = DateTime.now().setZone(zone).set({ month: 12 }); + return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset; + } + /** + * Return whether the specified zone is a valid IANA specifier. + * @param {string} zone - Zone to check + * @return {boolean} + */ + static isValidIANAZone(zone) { + return IANAZone.isValidZone(zone); + } + /** + * Converts the input into a {@link Zone} instance. + * + * * If `input` is already a Zone instance, it is returned unchanged. + * * If `input` is a string containing a valid time zone name, a Zone instance + * with that name is returned. + * * If `input` is a string that doesn't refer to a known time zone, a Zone + * instance with {@link Zone#isValid} == false is returned. + * * If `input is a number, a Zone instance with the specified fixed offset + * in minutes is returned. + * * If `input` is `null` or `undefined`, the default zone is returned. + * @param {string|Zone|number} [input] - the value to be converted + * @return {Zone} + */ + static normalizeZone(input) { + return normalizeZone(input, Settings2.defaultZone); + } + /** + * Return an array of standalone month names. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param {string} [length='long'] - the length of the month representation, such as "numeric", "2-digit", "narrow", "short", "long" + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @param {string} [opts.locObj=null] - an existing locale object to use + * @param {string} [opts.outputCalendar='gregory'] - the calendar + * @example Info.months()[0] //=> 'January' + * @example Info.months('short')[0] //=> 'Jan' + * @example Info.months('numeric')[0] //=> '1' + * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.' + * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١' + * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I' + * @return {Array} + */ + static months(length = "long", { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) { + return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length); + } + /** + * Return an array of format month names. + * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that + * changes the string. + * See {@link Info#months} + * @param {string} [length='long'] - the length of the month representation, such as "numeric", "2-digit", "narrow", "short", "long" + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @param {string} [opts.locObj=null] - an existing locale object to use + * @param {string} [opts.outputCalendar='gregory'] - the calendar + * @return {Array} + */ + static monthsFormat(length = "long", { locale = null, numberingSystem = null, locObj = null, outputCalendar = "gregory" } = {}) { + return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true); + } + /** + * Return an array of standalone week names. + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param {string} [length='long'] - the length of the weekday representation, such as "narrow", "short", "long". + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @param {string} [opts.locObj=null] - an existing locale object to use + * @example Info.weekdays()[0] //=> 'Monday' + * @example Info.weekdays('short')[0] //=> 'Mon' + * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.' + * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين' + * @return {Array} + */ + static weekdays(length = "long", { locale = null, numberingSystem = null, locObj = null } = {}) { + return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length); + } + /** + * Return an array of format week names. + * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that + * changes the string. + * See {@link Info#weekdays} + * @param {string} [length='long'] - the length of the month representation, such as "narrow", "short", "long". + * @param {Object} opts - options + * @param {string} [opts.locale=null] - the locale code + * @param {string} [opts.numberingSystem=null] - the numbering system + * @param {string} [opts.locObj=null] - an existing locale object to use + * @return {Array} + */ + static weekdaysFormat(length = "long", { locale = null, numberingSystem = null, locObj = null } = {}) { + return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true); + } + /** + * Return an array of meridiems. + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @example Info.meridiems() //=> [ 'AM', 'PM' ] + * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ] + * @return {Array} + */ + static meridiems({ locale = null } = {}) { + return Locale.create(locale).meridiems(); + } + /** + * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian. + * @param {string} [length='short'] - the length of the era representation, such as "short" or "long". + * @param {Object} opts - options + * @param {string} [opts.locale] - the locale code + * @example Info.eras() //=> [ 'BC', 'AD' ] + * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ] + * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ] + * @return {Array} + */ + static eras(length = "short", { locale = null } = {}) { + return Locale.create(locale, null, "gregory").eras(length); + } + /** + * Return the set of available features in this environment. + * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case. + * Keys: + * * `relative`: whether this environment supports relative time formatting + * @example Info.features() //=> { relative: false } + * @return {Object} + */ + static features() { + return { relative: hasRelative() }; + } + }; + function dayDiff(earlier, later) { + const utcDayStart = (dt2) => dt2.toUTC(0, { keepLocalTime: true }).startOf("day").valueOf(), ms = utcDayStart(later) - utcDayStart(earlier); + return Math.floor(Duration.fromMillis(ms).as("days")); + } + function highOrderDiffs(cursor, later, units) { + const differs = [ + ["years", (a2, b2) => b2.year - a2.year], + ["quarters", (a2, b2) => b2.quarter - a2.quarter + (b2.year - a2.year) * 4], + ["months", (a2, b2) => b2.month - a2.month + (b2.year - a2.year) * 12], + [ + "weeks", + (a2, b2) => { + const days = dayDiff(a2, b2); + return (days - days % 7) / 7; + } + ], + ["days", dayDiff] + ]; + const results = {}; + const earlier = cursor; + let lowestOrder, highWater; + for (const [unit, differ] of differs) { + if (units.indexOf(unit) >= 0) { + lowestOrder = unit; + results[unit] = differ(cursor, later); + highWater = earlier.plus(results); + if (highWater > later) { + results[unit]--; + cursor = earlier.plus(results); + } else { + cursor = highWater; + } + } + } + return [cursor, results, highWater, lowestOrder]; + } + function diff(earlier, later, units, opts) { + let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units); + const remainingMillis = later - cursor; + const lowerOrderUnits = units.filter( + (u2) => ["hours", "minutes", "seconds", "milliseconds"].indexOf(u2) >= 0 + ); + if (lowerOrderUnits.length === 0) { + if (highWater < later) { + highWater = cursor.plus({ [lowestOrder]: 1 }); + } + if (highWater !== cursor) { + results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor); + } + } + const duration = Duration.fromObject(results, opts); + if (lowerOrderUnits.length > 0) { + return Duration.fromMillis(remainingMillis, opts).shiftTo(...lowerOrderUnits).plus(duration); + } else { + return duration; + } + } + var numberingSystems = { + arab: "[\u0660-\u0669]", + arabext: "[\u06F0-\u06F9]", + bali: "[\u1B50-\u1B59]", + beng: "[\u09E6-\u09EF]", + deva: "[\u0966-\u096F]", + fullwide: "[\uFF10-\uFF19]", + gujr: "[\u0AE6-\u0AEF]", + hanidec: "[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]", + khmr: "[\u17E0-\u17E9]", + knda: "[\u0CE6-\u0CEF]", + laoo: "[\u0ED0-\u0ED9]", + limb: "[\u1946-\u194F]", + mlym: "[\u0D66-\u0D6F]", + mong: "[\u1810-\u1819]", + mymr: "[\u1040-\u1049]", + orya: "[\u0B66-\u0B6F]", + tamldec: "[\u0BE6-\u0BEF]", + telu: "[\u0C66-\u0C6F]", + thai: "[\u0E50-\u0E59]", + tibt: "[\u0F20-\u0F29]", + latn: "\\d" + }; + var numberingSystemsUTF16 = { + arab: [1632, 1641], + arabext: [1776, 1785], + bali: [6992, 7001], + beng: [2534, 2543], + deva: [2406, 2415], + fullwide: [65296, 65303], + gujr: [2790, 2799], + khmr: [6112, 6121], + knda: [3302, 3311], + laoo: [3792, 3801], + limb: [6470, 6479], + mlym: [3430, 3439], + mong: [6160, 6169], + mymr: [4160, 4169], + orya: [2918, 2927], + tamldec: [3046, 3055], + telu: [3174, 3183], + thai: [3664, 3673], + tibt: [3872, 3881] + }; + var hanidecChars = numberingSystems.hanidec.replace(/[\[|\]]/g, "").split(""); + function parseDigits(str) { + let value = parseInt(str, 10); + if (isNaN(value)) { + value = ""; + for (let i2 = 0; i2 < str.length; i2++) { + const code = str.charCodeAt(i2); + if (str[i2].search(numberingSystems.hanidec) !== -1) { + value += hanidecChars.indexOf(str[i2]); + } else { + for (const key in numberingSystemsUTF16) { + const [min2, max2] = numberingSystemsUTF16[key]; + if (code >= min2 && code <= max2) { + value += code - min2; + } + } + } + } + return parseInt(value, 10); + } else { + return value; + } + } + function digitRegex({ numberingSystem }, append2 = "") { + return new RegExp(`${numberingSystems[numberingSystem || "latn"]}${append2}`); + } + var MISSING_FTP = "missing Intl.DateTimeFormat.formatToParts support"; + function intUnit(regex, post = (i2) => i2) { + return { regex, deser: ([s3]) => post(parseDigits(s3)) }; + } + var NBSP = String.fromCharCode(160); + var spaceOrNBSP = `[ ${NBSP}]`; + var spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, "g"); + function fixListRegex(s3) { + return s3.replace(/\./g, "\\.?").replace(spaceOrNBSPRegExp, spaceOrNBSP); + } + function stripInsensitivities(s3) { + return s3.replace(/\./g, "").replace(spaceOrNBSPRegExp, " ").toLowerCase(); + } + function oneOf(strings, startIndex) { + if (strings === null) { + return null; + } else { + return { + regex: RegExp(strings.map(fixListRegex).join("|")), + deser: ([s3]) => strings.findIndex((i2) => stripInsensitivities(s3) === stripInsensitivities(i2)) + startIndex + }; + } + } + function offset3(regex, groups) { + return { regex, deser: ([, h2, m2]) => signedOffset(h2, m2), groups }; + } + function simple(regex) { + return { regex, deser: ([s3]) => s3 }; + } + function escapeToken(value) { + return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); + } + function unitForToken(token, loc) { + const one = digitRegex(loc), two = digitRegex(loc, "{2}"), three = digitRegex(loc, "{3}"), four = digitRegex(loc, "{4}"), six = digitRegex(loc, "{6}"), oneOrTwo = digitRegex(loc, "{1,2}"), oneToThree = digitRegex(loc, "{1,3}"), oneToSix = digitRegex(loc, "{1,6}"), oneToNine = digitRegex(loc, "{1,9}"), twoToFour = digitRegex(loc, "{2,4}"), fourToSix = digitRegex(loc, "{4,6}"), literal = (t2) => ({ regex: RegExp(escapeToken(t2.val)), deser: ([s3]) => s3, literal: true }), unitate = (t2) => { + if (token.literal) { + return literal(t2); + } + switch (t2.val) { + case "G": + return oneOf(loc.eras("short", false), 0); + case "GG": + return oneOf(loc.eras("long", false), 0); + case "y": + return intUnit(oneToSix); + case "yy": + return intUnit(twoToFour, untruncateYear); + case "yyyy": + return intUnit(four); + case "yyyyy": + return intUnit(fourToSix); + case "yyyyyy": + return intUnit(six); + case "M": + return intUnit(oneOrTwo); + case "MM": + return intUnit(two); + case "MMM": + return oneOf(loc.months("short", true, false), 1); + case "MMMM": + return oneOf(loc.months("long", true, false), 1); + case "L": + return intUnit(oneOrTwo); + case "LL": + return intUnit(two); + case "LLL": + return oneOf(loc.months("short", false, false), 1); + case "LLLL": + return oneOf(loc.months("long", false, false), 1); + case "d": + return intUnit(oneOrTwo); + case "dd": + return intUnit(two); + case "o": + return intUnit(oneToThree); + case "ooo": + return intUnit(three); + case "HH": + return intUnit(two); + case "H": + return intUnit(oneOrTwo); + case "hh": + return intUnit(two); + case "h": + return intUnit(oneOrTwo); + case "mm": + return intUnit(two); + case "m": + return intUnit(oneOrTwo); + case "q": + return intUnit(oneOrTwo); + case "qq": + return intUnit(two); + case "s": + return intUnit(oneOrTwo); + case "ss": + return intUnit(two); + case "S": + return intUnit(oneToThree); + case "SSS": + return intUnit(three); + case "u": + return simple(oneToNine); + case "uu": + return simple(oneOrTwo); + case "uuu": + return intUnit(one); + case "a": + return oneOf(loc.meridiems(), 0); + case "kkkk": + return intUnit(four); + case "kk": + return intUnit(twoToFour, untruncateYear); + case "W": + return intUnit(oneOrTwo); + case "WW": + return intUnit(two); + case "E": + case "c": + return intUnit(one); + case "EEE": + return oneOf(loc.weekdays("short", false, false), 1); + case "EEEE": + return oneOf(loc.weekdays("long", false, false), 1); + case "ccc": + return oneOf(loc.weekdays("short", true, false), 1); + case "cccc": + return oneOf(loc.weekdays("long", true, false), 1); + case "Z": + case "ZZ": + return offset3(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2); + case "ZZZ": + return offset3(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2); + case "z": + return simple(/[a-z_+-/]{1,256}?/i); + default: + return literal(t2); + } + }; + const unit = unitate(token) || { + invalidReason: MISSING_FTP + }; + unit.token = token; + return unit; + } + var partTypeStyleToTokenVal = { + year: { + "2-digit": "yy", + numeric: "yyyyy" + }, + month: { + numeric: "M", + "2-digit": "MM", + short: "MMM", + long: "MMMM" + }, + day: { + numeric: "d", + "2-digit": "dd" + }, + weekday: { + short: "EEE", + long: "EEEE" + }, + dayperiod: "a", + dayPeriod: "a", + hour: { + numeric: "h", + "2-digit": "hh" + }, + minute: { + numeric: "m", + "2-digit": "mm" + }, + second: { + numeric: "s", + "2-digit": "ss" + }, + timeZoneName: { + long: "ZZZZZ", + short: "ZZZ" + } + }; + function tokenForPart(part, formatOpts) { + const { type, value } = part; + if (type === "literal") { + return { + literal: true, + val: value + }; + } + const style = formatOpts[type]; + let val = partTypeStyleToTokenVal[type]; + if (typeof val === "object") { + val = val[style]; + } + if (val) { + return { + literal: false, + val + }; + } + return void 0; + } + function buildRegex(units) { + const re = units.map((u2) => u2.regex).reduce((f2, r2) => `${f2}(${r2.source})`, ""); + return [`^${re}$`, units]; + } + function match(input, regex, handlers) { + const matches = input.match(regex); + if (matches) { + const all = {}; + let matchIndex = 1; + for (const i2 in handlers) { + if (hasOwnProperty2(handlers, i2)) { + const h2 = handlers[i2], groups = h2.groups ? h2.groups + 1 : 1; + if (!h2.literal && h2.token) { + all[h2.token.val[0]] = h2.deser(matches.slice(matchIndex, matchIndex + groups)); + } + matchIndex += groups; + } + } + return [matches, all]; + } else { + return [matches, {}]; + } + } + function dateTimeFromMatches(matches) { + const toField = (token) => { + switch (token) { + case "S": + return "millisecond"; + case "s": + return "second"; + case "m": + return "minute"; + case "h": + case "H": + return "hour"; + case "d": + return "day"; + case "o": + return "ordinal"; + case "L": + case "M": + return "month"; + case "y": + return "year"; + case "E": + case "c": + return "weekday"; + case "W": + return "weekNumber"; + case "k": + return "weekYear"; + case "q": + return "quarter"; + default: + return null; + } + }; + let zone = null; + let specificOffset; + if (!isUndefined2(matches.z)) { + zone = IANAZone.create(matches.z); + } + if (!isUndefined2(matches.Z)) { + if (!zone) { + zone = new FixedOffsetZone(matches.Z); + } + specificOffset = matches.Z; + } + if (!isUndefined2(matches.q)) { + matches.M = (matches.q - 1) * 3 + 1; + } + if (!isUndefined2(matches.h)) { + if (matches.h < 12 && matches.a === 1) { + matches.h += 12; + } else if (matches.h === 12 && matches.a === 0) { + matches.h = 0; + } + } + if (matches.G === 0 && matches.y) { + matches.y = -matches.y; + } + if (!isUndefined2(matches.u)) { + matches.S = parseMillis(matches.u); + } + const vals = Object.keys(matches).reduce((r2, k2) => { + const f2 = toField(k2); + if (f2) { + r2[f2] = matches[k2]; + } + return r2; + }, {}); + return [vals, zone, specificOffset]; + } + var dummyDateTimeCache = null; + function getDummyDateTime() { + if (!dummyDateTimeCache) { + dummyDateTimeCache = DateTime.fromMillis(1555555555555); + } + return dummyDateTimeCache; + } + function maybeExpandMacroToken(token, locale) { + if (token.literal) { + return token; + } + const formatOpts = Formatter.macroTokenToFormatOpts(token.val); + const tokens = formatOptsToTokens(formatOpts, locale); + if (tokens == null || tokens.includes(void 0)) { + return token; + } + return tokens; + } + function expandMacroTokens(tokens, locale) { + return Array.prototype.concat(...tokens.map((t2) => maybeExpandMacroToken(t2, locale))); + } + function explainFromTokens(locale, input, format) { + const tokens = expandMacroTokens(Formatter.parseFormat(format), locale), units = tokens.map((t2) => unitForToken(t2, locale)), disqualifyingUnit = units.find((t2) => t2.invalidReason); + if (disqualifyingUnit) { + return { input, tokens, invalidReason: disqualifyingUnit.invalidReason }; + } else { + const [regexString, handlers] = buildRegex(units), regex = RegExp(regexString, "i"), [rawMatches, matches] = match(input, regex, handlers), [result, zone, specificOffset] = matches ? dateTimeFromMatches(matches) : [null, null, void 0]; + if (hasOwnProperty2(matches, "a") && hasOwnProperty2(matches, "H")) { + throw new ConflictingSpecificationError( + "Can't include meridiem when specifying 24-hour format" + ); + } + return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset }; + } + } + function parseFromTokens(locale, input, format) { + const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format); + return [result, zone, specificOffset, invalidReason]; + } + function formatOptsToTokens(formatOpts, locale) { + if (!formatOpts) { + return null; + } + const formatter = Formatter.create(locale, formatOpts); + const parts = formatter.formatDateTimeParts(getDummyDateTime()); + return parts.map((p2) => tokenForPart(p2, formatOpts)); + } + var nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; + var leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]; + function unitOutOfRange(unit, value) { + return new Invalid( + "unit out of range", + `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid` + ); + } + function dayOfWeek(year, month, day) { + const d2 = new Date(Date.UTC(year, month - 1, day)); + if (year < 100 && year >= 0) { + d2.setUTCFullYear(d2.getUTCFullYear() - 1900); + } + const js = d2.getUTCDay(); + return js === 0 ? 7 : js; + } + function computeOrdinal(year, month, day) { + return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1]; + } + function uncomputeOrdinal(year, ordinal) { + const table = isLeapYear(year) ? leapLadder : nonLeapLadder, month0 = table.findIndex((i2) => i2 < ordinal), day = ordinal - table[month0]; + return { month: month0 + 1, day }; + } + function gregorianToWeek(gregObj) { + const { year, month, day } = gregObj, ordinal = computeOrdinal(year, month, day), weekday = dayOfWeek(year, month, day); + let weekNumber = Math.floor((ordinal - weekday + 10) / 7), weekYear; + if (weekNumber < 1) { + weekYear = year - 1; + weekNumber = weeksInWeekYear(weekYear); + } else if (weekNumber > weeksInWeekYear(year)) { + weekYear = year + 1; + weekNumber = 1; + } else { + weekYear = year; + } + return { weekYear, weekNumber, weekday, ...timeObject(gregObj) }; + } + function weekToGregorian(weekData) { + const { weekYear, weekNumber, weekday } = weekData, weekdayOfJan4 = dayOfWeek(weekYear, 1, 4), yearInDays = daysInYear(weekYear); + let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3, year; + if (ordinal < 1) { + year = weekYear - 1; + ordinal += daysInYear(year); + } else if (ordinal > yearInDays) { + year = weekYear + 1; + ordinal -= daysInYear(weekYear); + } else { + year = weekYear; + } + const { month, day } = uncomputeOrdinal(year, ordinal); + return { year, month, day, ...timeObject(weekData) }; + } + function gregorianToOrdinal(gregData) { + const { year, month, day } = gregData; + const ordinal = computeOrdinal(year, month, day); + return { year, ordinal, ...timeObject(gregData) }; + } + function ordinalToGregorian(ordinalData) { + const { year, ordinal } = ordinalData; + const { month, day } = uncomputeOrdinal(year, ordinal); + return { year, month, day, ...timeObject(ordinalData) }; + } + function hasInvalidWeekData(obj) { + const validYear = isInteger(obj.weekYear), validWeek = integerBetween(obj.weekNumber, 1, weeksInWeekYear(obj.weekYear)), validWeekday = integerBetween(obj.weekday, 1, 7); + if (!validYear) { + return unitOutOfRange("weekYear", obj.weekYear); + } else if (!validWeek) { + return unitOutOfRange("week", obj.week); + } else if (!validWeekday) { + return unitOutOfRange("weekday", obj.weekday); + } else + return false; + } + function hasInvalidOrdinalData(obj) { + const validYear = isInteger(obj.year), validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year)); + if (!validYear) { + return unitOutOfRange("year", obj.year); + } else if (!validOrdinal) { + return unitOutOfRange("ordinal", obj.ordinal); + } else + return false; + } + function hasInvalidGregorianData(obj) { + const validYear = isInteger(obj.year), validMonth = integerBetween(obj.month, 1, 12), validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month)); + if (!validYear) { + return unitOutOfRange("year", obj.year); + } else if (!validMonth) { + return unitOutOfRange("month", obj.month); + } else if (!validDay) { + return unitOutOfRange("day", obj.day); + } else + return false; + } + function hasInvalidTimeData(obj) { + const { hour, minute, second, millisecond } = obj; + const validHour = integerBetween(hour, 0, 23) || hour === 24 && minute === 0 && second === 0 && millisecond === 0, validMinute = integerBetween(minute, 0, 59), validSecond = integerBetween(second, 0, 59), validMillisecond = integerBetween(millisecond, 0, 999); + if (!validHour) { + return unitOutOfRange("hour", hour); + } else if (!validMinute) { + return unitOutOfRange("minute", minute); + } else if (!validSecond) { + return unitOutOfRange("second", second); + } else if (!validMillisecond) { + return unitOutOfRange("millisecond", millisecond); + } else + return false; + } + var INVALID = "Invalid DateTime"; + var MAX_DATE = 864e13; + function unsupportedZone(zone) { + return new Invalid("unsupported zone", `the zone "${zone.name}" is not supported`); + } + function possiblyCachedWeekData(dt2) { + if (dt2.weekData === null) { + dt2.weekData = gregorianToWeek(dt2.c); + } + return dt2.weekData; + } + function clone(inst, alts) { + const current2 = { + ts: inst.ts, + zone: inst.zone, + c: inst.c, + o: inst.o, + loc: inst.loc, + invalid: inst.invalid + }; + return new DateTime({ ...current2, ...alts, old: current2 }); + } + function fixOffset(localTS, o2, tz2) { + let utcGuess = localTS - o2 * 60 * 1e3; + const o22 = tz2.offset(utcGuess); + if (o2 === o22) { + return [utcGuess, o2]; + } + utcGuess -= (o22 - o2) * 60 * 1e3; + const o3 = tz2.offset(utcGuess); + if (o22 === o3) { + return [utcGuess, o22]; + } + return [localTS - Math.min(o22, o3) * 60 * 1e3, Math.max(o22, o3)]; + } + function tsToObj(ts, offset4) { + ts += offset4 * 60 * 1e3; + const d2 = new Date(ts); + return { + year: d2.getUTCFullYear(), + month: d2.getUTCMonth() + 1, + day: d2.getUTCDate(), + hour: d2.getUTCHours(), + minute: d2.getUTCMinutes(), + second: d2.getUTCSeconds(), + millisecond: d2.getUTCMilliseconds() + }; + } + function objToTS(obj, offset4, zone) { + return fixOffset(objToLocalTS(obj), offset4, zone); + } + function adjustTime(inst, dur) { + const oPre = inst.o, year = inst.c.year + Math.trunc(dur.years), month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3, c2 = { + ...inst.c, + year, + month, + day: Math.min(inst.c.day, daysInMonth(year, month)) + Math.trunc(dur.days) + Math.trunc(dur.weeks) * 7 + }, millisToAdd = Duration.fromObject({ + years: dur.years - Math.trunc(dur.years), + quarters: dur.quarters - Math.trunc(dur.quarters), + months: dur.months - Math.trunc(dur.months), + weeks: dur.weeks - Math.trunc(dur.weeks), + days: dur.days - Math.trunc(dur.days), + hours: dur.hours, + minutes: dur.minutes, + seconds: dur.seconds, + milliseconds: dur.milliseconds + }).as("milliseconds"), localTS = objToLocalTS(c2); + let [ts, o2] = fixOffset(localTS, oPre, inst.zone); + if (millisToAdd !== 0) { + ts += millisToAdd; + o2 = inst.zone.offset(ts); + } + return { ts, o: o2 }; + } + function parseDataToDateTime(parsed, parsedZone, opts, format, text2, specificOffset) { + const { setZone, zone } = opts; + if (parsed && Object.keys(parsed).length !== 0) { + const interpretationZone = parsedZone || zone, inst = DateTime.fromObject(parsed, { + ...opts, + zone: interpretationZone, + specificOffset + }); + return setZone ? inst : inst.setZone(zone); + } else { + return DateTime.invalid( + new Invalid("unparsable", `the input "${text2}" can't be parsed as ${format}`) + ); + } + } + function toTechFormat(dt2, format, allowZ = true) { + return dt2.isValid ? Formatter.create(Locale.create("en-US"), { + allowZ, + forceSimple: true + }).formatDateTimeFromString(dt2, format) : null; + } + function toISODate(o2, extended) { + const longFormat = o2.c.year > 9999 || o2.c.year < 0; + let c2 = ""; + if (longFormat && o2.c.year >= 0) + c2 += "+"; + c2 += padStart(o2.c.year, longFormat ? 6 : 4); + if (extended) { + c2 += "-"; + c2 += padStart(o2.c.month); + c2 += "-"; + c2 += padStart(o2.c.day); + } else { + c2 += padStart(o2.c.month); + c2 += padStart(o2.c.day); + } + return c2; + } + function toISOTime(o2, extended, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone) { + let c2 = padStart(o2.c.hour); + if (extended) { + c2 += ":"; + c2 += padStart(o2.c.minute); + if (o2.c.second !== 0 || !suppressSeconds) { + c2 += ":"; + } + } else { + c2 += padStart(o2.c.minute); + } + if (o2.c.second !== 0 || !suppressSeconds) { + c2 += padStart(o2.c.second); + if (o2.c.millisecond !== 0 || !suppressMilliseconds) { + c2 += "."; + c2 += padStart(o2.c.millisecond, 3); + } + } + if (includeOffset) { + if (o2.isOffsetFixed && o2.offset === 0 && !extendedZone) { + c2 += "Z"; + } else if (o2.o < 0) { + c2 += "-"; + c2 += padStart(Math.trunc(-o2.o / 60)); + c2 += ":"; + c2 += padStart(Math.trunc(-o2.o % 60)); + } else { + c2 += "+"; + c2 += padStart(Math.trunc(o2.o / 60)); + c2 += ":"; + c2 += padStart(Math.trunc(o2.o % 60)); + } + } + if (extendedZone) { + c2 += "[" + o2.zone.ianaName + "]"; + } + return c2; + } + var defaultUnitValues = { + month: 1, + day: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }; + var defaultWeekUnitValues = { + weekNumber: 1, + weekday: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }; + var defaultOrdinalUnitValues = { + ordinal: 1, + hour: 0, + minute: 0, + second: 0, + millisecond: 0 + }; + var orderedUnits = ["year", "month", "day", "hour", "minute", "second", "millisecond"]; + var orderedWeekUnits = [ + "weekYear", + "weekNumber", + "weekday", + "hour", + "minute", + "second", + "millisecond" + ]; + var orderedOrdinalUnits = ["year", "ordinal", "hour", "minute", "second", "millisecond"]; + function normalizeUnit(unit) { + const normalized = { + year: "year", + years: "year", + month: "month", + months: "month", + day: "day", + days: "day", + hour: "hour", + hours: "hour", + minute: "minute", + minutes: "minute", + quarter: "quarter", + quarters: "quarter", + second: "second", + seconds: "second", + millisecond: "millisecond", + milliseconds: "millisecond", + weekday: "weekday", + weekdays: "weekday", + weeknumber: "weekNumber", + weeksnumber: "weekNumber", + weeknumbers: "weekNumber", + weekyear: "weekYear", + weekyears: "weekYear", + ordinal: "ordinal" + }[unit.toLowerCase()]; + if (!normalized) + throw new InvalidUnitError(unit); + return normalized; + } + function quickDT(obj, opts) { + const zone = normalizeZone(opts.zone, Settings2.defaultZone), loc = Locale.fromObject(opts), tsNow = Settings2.now(); + let ts, o2; + if (!isUndefined2(obj.year)) { + for (const u2 of orderedUnits) { + if (isUndefined2(obj[u2])) { + obj[u2] = defaultUnitValues[u2]; + } + } + const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj); + if (invalid) { + return DateTime.invalid(invalid); + } + const offsetProvis = zone.offset(tsNow); + [ts, o2] = objToTS(obj, offsetProvis, zone); + } else { + ts = tsNow; + } + return new DateTime({ ts, zone, loc, o: o2 }); + } + function diffRelative(start, end, opts) { + const round2 = isUndefined2(opts.round) ? true : opts.round, format = (c2, unit) => { + c2 = roundTo(c2, round2 || opts.calendary ? 0 : 2, true); + const formatter = end.loc.clone(opts).relFormatter(opts); + return formatter.format(c2, unit); + }, differ = (unit) => { + if (opts.calendary) { + if (!end.hasSame(start, unit)) { + return end.startOf(unit).diff(start.startOf(unit), unit).get(unit); + } else + return 0; + } else { + return end.diff(start, unit).get(unit); + } + }; + if (opts.unit) { + return format(differ(opts.unit), opts.unit); + } + for (const unit of opts.units) { + const count = differ(unit); + if (Math.abs(count) >= 1) { + return format(count, unit); + } + } + return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]); + } + function lastOpts(argList) { + let opts = {}, args; + if (argList.length > 0 && typeof argList[argList.length - 1] === "object") { + opts = argList[argList.length - 1]; + args = Array.from(argList).slice(0, argList.length - 1); + } else { + args = Array.from(argList); + } + return [opts, args]; + } + var DateTime = class _DateTime { + /** + * @access private + */ + constructor(config) { + const zone = config.zone || Settings2.defaultZone; + let invalid = config.invalid || (Number.isNaN(config.ts) ? new Invalid("invalid input") : null) || (!zone.isValid ? unsupportedZone(zone) : null); + this.ts = isUndefined2(config.ts) ? Settings2.now() : config.ts; + let c2 = null, o2 = null; + if (!invalid) { + const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone); + if (unchanged) { + [c2, o2] = [config.old.c, config.old.o]; + } else { + const ot2 = zone.offset(this.ts); + c2 = tsToObj(this.ts, ot2); + invalid = Number.isNaN(c2.year) ? new Invalid("invalid input") : null; + c2 = invalid ? null : c2; + o2 = invalid ? null : ot2; + } + } + this._zone = zone; + this.loc = config.loc || Locale.create(); + this.invalid = invalid; + this.weekData = null; + this.c = c2; + this.o = o2; + this.isLuxonDateTime = true; + } + // CONSTRUCT + /** + * Create a DateTime for the current instant, in the system's time zone. + * + * Use Settings to override these default values if needed. + * @example DateTime.now().toISO() //~> now in the ISO format + * @return {DateTime} + */ + static now() { + return new _DateTime({}); + } + /** + * Create a local DateTime + * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used + * @param {number} [month=1] - The month, 1-indexed + * @param {number} [day=1] - The day of the month, 1-indexed + * @param {number} [hour=0] - The hour of the day, in 24-hour time + * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59 + * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59 + * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999 + * @example DateTime.local() //~> now + * @example DateTime.local({ zone: "America/New_York" }) //~> now, in US east coast time + * @example DateTime.local(2017) //~> 2017-01-01T00:00:00 + * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00 + * @example DateTime.local(2017, 3, 12, { locale: "fr" }) //~> 2017-03-12T00:00:00, with a French locale + * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00 + * @example DateTime.local(2017, 3, 12, 5, { zone: "utc" }) //~> 2017-03-12T05:00:00, in UTC + * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00 + * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10 + * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765 + * @return {DateTime} + */ + static local() { + const [opts, args] = lastOpts(arguments), [year, month, day, hour, minute, second, millisecond] = args; + return quickDT({ year, month, day, hour, minute, second, millisecond }, opts); + } + /** + * Create a DateTime in UTC + * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used + * @param {number} [month=1] - The month, 1-indexed + * @param {number} [day=1] - The day of the month + * @param {number} [hour=0] - The hour of the day, in 24-hour time + * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59 + * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59 + * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999 + * @param {Object} options - configuration options for the DateTime + * @param {string} [options.locale] - a locale to set on the resulting DateTime instance + * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance + * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance + * @example DateTime.utc() //~> now + * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z + * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z + * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z + * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z + * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z + * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: "fr" }) //~> 2017-03-12T05:45:00Z with a French locale + * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z + * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: "fr" }) //~> 2017-03-12T05:45:10.765Z with a French locale + * @return {DateTime} + */ + static utc() { + const [opts, args] = lastOpts(arguments), [year, month, day, hour, minute, second, millisecond] = args; + opts.zone = FixedOffsetZone.utcInstance; + return quickDT({ year, month, day, hour, minute, second, millisecond }, opts); + } + /** + * Create a DateTime from a JavaScript Date object. Uses the default zone. + * @param {Date} date - a JavaScript Date object + * @param {Object} options - configuration options for the DateTime + * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into + * @return {DateTime} + */ + static fromJSDate(date2, options = {}) { + const ts = isDate(date2) ? date2.valueOf() : NaN; + if (Number.isNaN(ts)) { + return _DateTime.invalid("invalid input"); + } + const zoneToUse = normalizeZone(options.zone, Settings2.defaultZone); + if (!zoneToUse.isValid) { + return _DateTime.invalid(unsupportedZone(zoneToUse)); + } + return new _DateTime({ + ts, + zone: zoneToUse, + loc: Locale.fromObject(options) + }); + } + /** + * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone. + * @param {number} milliseconds - a number of milliseconds since 1970 UTC + * @param {Object} options - configuration options for the DateTime + * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into + * @param {string} [options.locale] - a locale to set on the resulting DateTime instance + * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance + * @return {DateTime} + */ + static fromMillis(milliseconds, options = {}) { + if (!isNumber2(milliseconds)) { + throw new InvalidArgumentError( + `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}` + ); + } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) { + return _DateTime.invalid("Timestamp out of range"); + } else { + return new _DateTime({ + ts: milliseconds, + zone: normalizeZone(options.zone, Settings2.defaultZone), + loc: Locale.fromObject(options) + }); + } + } + /** + * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone. + * @param {number} seconds - a number of seconds since 1970 UTC + * @param {Object} options - configuration options for the DateTime + * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into + * @param {string} [options.locale] - a locale to set on the resulting DateTime instance + * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance + * @return {DateTime} + */ + static fromSeconds(seconds, options = {}) { + if (!isNumber2(seconds)) { + throw new InvalidArgumentError("fromSeconds requires a numerical input"); + } else { + return new _DateTime({ + ts: seconds * 1e3, + zone: normalizeZone(options.zone, Settings2.defaultZone), + loc: Locale.fromObject(options) + }); + } + } + /** + * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults. + * @param {Object} obj - the object to create the DateTime from + * @param {number} obj.year - a year, such as 1987 + * @param {number} obj.month - a month, 1-12 + * @param {number} obj.day - a day of the month, 1-31, depending on the month + * @param {number} obj.ordinal - day of the year, 1-365 or 366 + * @param {number} obj.weekYear - an ISO week year + * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year + * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday + * @param {number} obj.hour - hour of the day, 0-23 + * @param {number} obj.minute - minute of the hour, 0-59 + * @param {number} obj.second - second of the minute, 0-59 + * @param {number} obj.millisecond - millisecond of the second, 0-999 + * @param {Object} opts - options for creating this DateTime + * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone() + * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25' + * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01' + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06 + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }), + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' }) + * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' }) + * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13' + * @return {DateTime} + */ + static fromObject(obj, opts = {}) { + obj = obj || {}; + const zoneToUse = normalizeZone(opts.zone, Settings2.defaultZone); + if (!zoneToUse.isValid) { + return _DateTime.invalid(unsupportedZone(zoneToUse)); + } + const tsNow = Settings2.now(), offsetProvis = !isUndefined2(opts.specificOffset) ? opts.specificOffset : zoneToUse.offset(tsNow), normalized = normalizeObject(obj, normalizeUnit), containsOrdinal = !isUndefined2(normalized.ordinal), containsGregorYear = !isUndefined2(normalized.year), containsGregorMD = !isUndefined2(normalized.month) || !isUndefined2(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber, loc = Locale.fromObject(opts); + if ((containsGregor || containsOrdinal) && definiteWeekDef) { + throw new ConflictingSpecificationError( + "Can't mix weekYear/weekNumber units with year/month/day or ordinals" + ); + } + if (containsGregorMD && containsOrdinal) { + throw new ConflictingSpecificationError("Can't mix ordinal dates with month/day"); + } + const useWeekData = definiteWeekDef || normalized.weekday && !containsGregor; + let units, defaultValues, objNow = tsToObj(tsNow, offsetProvis); + if (useWeekData) { + units = orderedWeekUnits; + defaultValues = defaultWeekUnitValues; + objNow = gregorianToWeek(objNow); + } else if (containsOrdinal) { + units = orderedOrdinalUnits; + defaultValues = defaultOrdinalUnitValues; + objNow = gregorianToOrdinal(objNow); + } else { + units = orderedUnits; + defaultValues = defaultUnitValues; + } + let foundFirst = false; + for (const u2 of units) { + const v2 = normalized[u2]; + if (!isUndefined2(v2)) { + foundFirst = true; + } else if (foundFirst) { + normalized[u2] = defaultValues[u2]; + } else { + normalized[u2] = objNow[u2]; + } + } + const higherOrderInvalid = useWeekData ? hasInvalidWeekData(normalized) : containsOrdinal ? hasInvalidOrdinalData(normalized) : hasInvalidGregorianData(normalized), invalid = higherOrderInvalid || hasInvalidTimeData(normalized); + if (invalid) { + return _DateTime.invalid(invalid); + } + const gregorian = useWeekData ? weekToGregorian(normalized) : containsOrdinal ? ordinalToGregorian(normalized) : normalized, [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse), inst = new _DateTime({ + ts: tsFinal, + zone: zoneToUse, + o: offsetFinal, + loc + }); + if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) { + return _DateTime.invalid( + "mismatched weekday", + `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}` + ); + } + return inst; + } + /** + * Create a DateTime from an ISO 8601 string + * @param {string} text - the ISO string + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone + * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance + * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromISO('2016-05-25T09:08:34.123') + * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00') + * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true}) + * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'}) + * @example DateTime.fromISO('2016-W05-4') + * @return {DateTime} + */ + static fromISO(text2, opts = {}) { + const [vals, parsedZone] = parseISODate(text2); + return parseDataToDateTime(vals, parsedZone, opts, "ISO 8601", text2); + } + /** + * Create a DateTime from an RFC 2822 string + * @param {string} text - the RFC 2822 string + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in. + * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT') + * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600') + * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z') + * @return {DateTime} + */ + static fromRFC2822(text2, opts = {}) { + const [vals, parsedZone] = parseRFC2822Date(text2); + return parseDataToDateTime(vals, parsedZone, opts, "RFC 2822", text2); + } + /** + * Create a DateTime from an HTTP header date + * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 + * @param {string} text - the HTTP header date + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in. + * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods. + * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance + * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT') + * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT') + * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994') + * @return {DateTime} + */ + static fromHTTP(text2, opts = {}) { + const [vals, parsedZone] = parseHTTPDate(text2); + return parseDataToDateTime(vals, parsedZone, opts, "HTTP", opts); + } + /** + * Create a DateTime from an input string and format string. + * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens). + * @param {string} text - the string to parse + * @param {string} fmt - the format the string is expected to be in (see the link below for the formats) + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone + * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale + * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @return {DateTime} + */ + static fromFormat(text2, fmt, opts = {}) { + if (isUndefined2(text2) || isUndefined2(fmt)) { + throw new InvalidArgumentError("fromFormat requires an input string and a format"); + } + const { locale = null, numberingSystem = null } = opts, localeToUse = Locale.fromOpts({ + locale, + numberingSystem, + defaultToEN: true + }), [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text2, fmt); + if (invalid) { + return _DateTime.invalid(invalid); + } else { + return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text2, specificOffset); + } + } + /** + * @deprecated use fromFormat instead + */ + static fromString(text2, fmt, opts = {}) { + return _DateTime.fromFormat(text2, fmt, opts); + } + /** + * Create a DateTime from a SQL date, time, or datetime + * Defaults to en-US if no locale has been specified, regardless of the system's locale + * @param {string} text - the string to parse + * @param {Object} opts - options to affect the creation + * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone + * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one + * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale + * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system + * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance + * @example DateTime.fromSQL('2017-05-15') + * @example DateTime.fromSQL('2017-05-15 09:12:34') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles') + * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true }) + * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' }) + * @example DateTime.fromSQL('09:12:34.342') + * @return {DateTime} + */ + static fromSQL(text2, opts = {}) { + const [vals, parsedZone] = parseSQL(text2); + return parseDataToDateTime(vals, parsedZone, opts, "SQL", text2); + } + /** + * Create an invalid DateTime. + * @param {DateTime} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent + * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information + * @return {DateTime} + */ + static invalid(reason, explanation = null) { + if (!reason) { + throw new InvalidArgumentError("need to specify a reason the DateTime is invalid"); + } + const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation); + if (Settings2.throwOnInvalid) { + throw new InvalidDateTimeError(invalid); + } else { + return new _DateTime({ invalid }); + } + } + /** + * Check if an object is an instance of DateTime. Works across context boundaries + * @param {object} o + * @return {boolean} + */ + static isDateTime(o2) { + return o2 && o2.isLuxonDateTime || false; + } + /** + * Produce the format string for a set of options + * @param formatOpts + * @param localeOpts + * @returns {string} + */ + static parseFormatForOpts(formatOpts, localeOpts = {}) { + const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts)); + return !tokenList ? null : tokenList.map((t2) => t2 ? t2.val : null).join(""); + } + /** + * Produce the the fully expanded format token for the locale + * Does NOT quote characters, so quoted tokens will not round trip correctly + * @param fmt + * @param localeOpts + * @returns {string} + */ + static expandFormat(fmt, localeOpts = {}) { + const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts)); + return expanded.map((t2) => t2.val).join(""); + } + // INFO + /** + * Get the value of unit. + * @param {string} unit - a unit such as 'minute' or 'day' + * @example DateTime.local(2017, 7, 4).get('month'); //=> 7 + * @example DateTime.local(2017, 7, 4).get('day'); //=> 4 + * @return {number} + */ + get(unit) { + return this[unit]; + } + /** + * Returns whether the DateTime is valid. Invalid DateTimes occur when: + * * The DateTime was created from invalid calendar information, such as the 13th month or February 30 + * * The DateTime was created by an operation on another invalid date + * @type {boolean} + */ + get isValid() { + return this.invalid === null; + } + /** + * Returns an error code if this DateTime is invalid, or null if the DateTime is valid + * @type {string} + */ + get invalidReason() { + return this.invalid ? this.invalid.reason : null; + } + /** + * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid + * @type {string} + */ + get invalidExplanation() { + return this.invalid ? this.invalid.explanation : null; + } + /** + * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime + * + * @type {string} + */ + get locale() { + return this.isValid ? this.loc.locale : null; + } + /** + * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime + * + * @type {string} + */ + get numberingSystem() { + return this.isValid ? this.loc.numberingSystem : null; + } + /** + * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime + * + * @type {string} + */ + get outputCalendar() { + return this.isValid ? this.loc.outputCalendar : null; + } + /** + * Get the time zone associated with this DateTime. + * @type {Zone} + */ + get zone() { + return this._zone; + } + /** + * Get the name of the time zone. + * @type {string} + */ + get zoneName() { + return this.isValid ? this.zone.name : null; + } + /** + * Get the year + * @example DateTime.local(2017, 5, 25).year //=> 2017 + * @type {number} + */ + get year() { + return this.isValid ? this.c.year : NaN; + } + /** + * Get the quarter + * @example DateTime.local(2017, 5, 25).quarter //=> 2 + * @type {number} + */ + get quarter() { + return this.isValid ? Math.ceil(this.c.month / 3) : NaN; + } + /** + * Get the month (1-12). + * @example DateTime.local(2017, 5, 25).month //=> 5 + * @type {number} + */ + get month() { + return this.isValid ? this.c.month : NaN; + } + /** + * Get the day of the month (1-30ish). + * @example DateTime.local(2017, 5, 25).day //=> 25 + * @type {number} + */ + get day() { + return this.isValid ? this.c.day : NaN; + } + /** + * Get the hour of the day (0-23). + * @example DateTime.local(2017, 5, 25, 9).hour //=> 9 + * @type {number} + */ + get hour() { + return this.isValid ? this.c.hour : NaN; + } + /** + * Get the minute of the hour (0-59). + * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30 + * @type {number} + */ + get minute() { + return this.isValid ? this.c.minute : NaN; + } + /** + * Get the second of the minute (0-59). + * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52 + * @type {number} + */ + get second() { + return this.isValid ? this.c.second : NaN; + } + /** + * Get the millisecond of the second (0-999). + * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654 + * @type {number} + */ + get millisecond() { + return this.isValid ? this.c.millisecond : NaN; + } + /** + * Get the week year + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2014, 12, 31).weekYear //=> 2015 + * @type {number} + */ + get weekYear() { + return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN; + } + /** + * Get the week number of the week year (1-52ish). + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2017, 5, 25).weekNumber //=> 21 + * @type {number} + */ + get weekNumber() { + return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN; + } + /** + * Get the day of the week. + * 1 is Monday and 7 is Sunday + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2014, 11, 31).weekday //=> 4 + * @type {number} + */ + get weekday() { + return this.isValid ? possiblyCachedWeekData(this).weekday : NaN; + } + /** + * Get the ordinal (meaning the day of the year) + * @example DateTime.local(2017, 5, 25).ordinal //=> 145 + * @type {number|DateTime} + */ + get ordinal() { + return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN; + } + /** + * Get the human readable short month name, such as 'Oct'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).monthShort //=> Oct + * @type {string} + */ + get monthShort() { + return this.isValid ? Info2.months("short", { locObj: this.loc })[this.month - 1] : null; + } + /** + * Get the human readable long month name, such as 'October'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).monthLong //=> October + * @type {string} + */ + get monthLong() { + return this.isValid ? Info2.months("long", { locObj: this.loc })[this.month - 1] : null; + } + /** + * Get the human readable short weekday, such as 'Mon'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon + * @type {string} + */ + get weekdayShort() { + return this.isValid ? Info2.weekdays("short", { locObj: this.loc })[this.weekday - 1] : null; + } + /** + * Get the human readable long weekday, such as 'Monday'. + * Defaults to the system's locale if no locale has been specified + * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday + * @type {string} + */ + get weekdayLong() { + return this.isValid ? Info2.weekdays("long", { locObj: this.loc })[this.weekday - 1] : null; + } + /** + * Get the UTC offset of this DateTime in minutes + * @example DateTime.now().offset //=> -240 + * @example DateTime.utc().offset //=> 0 + * @type {number} + */ + get offset() { + return this.isValid ? +this.o : NaN; + } + /** + * Get the short human name for the zone's current offset, for example "EST" or "EDT". + * Defaults to the system's locale if no locale has been specified + * @type {string} + */ + get offsetNameShort() { + if (this.isValid) { + return this.zone.offsetName(this.ts, { + format: "short", + locale: this.locale + }); + } else { + return null; + } + } + /** + * Get the long human name for the zone's current offset, for example "Eastern Standard Time" or "Eastern Daylight Time". + * Defaults to the system's locale if no locale has been specified + * @type {string} + */ + get offsetNameLong() { + if (this.isValid) { + return this.zone.offsetName(this.ts, { + format: "long", + locale: this.locale + }); + } else { + return null; + } + } + /** + * Get whether this zone's offset ever changes, as in a DST. + * @type {boolean} + */ + get isOffsetFixed() { + return this.isValid ? this.zone.isUniversal : null; + } + /** + * Get whether the DateTime is in a DST. + * @type {boolean} + */ + get isInDST() { + if (this.isOffsetFixed) { + return false; + } else { + return this.offset > this.set({ month: 1, day: 1 }).offset || this.offset > this.set({ month: 5 }).offset; + } + } + /** + * Returns true if this DateTime is in a leap year, false otherwise + * @example DateTime.local(2016).isInLeapYear //=> true + * @example DateTime.local(2013).isInLeapYear //=> false + * @type {boolean} + */ + get isInLeapYear() { + return isLeapYear(this.year); + } + /** + * Returns the number of days in this DateTime's month + * @example DateTime.local(2016, 2).daysInMonth //=> 29 + * @example DateTime.local(2016, 3).daysInMonth //=> 31 + * @type {number} + */ + get daysInMonth() { + return daysInMonth(this.year, this.month); + } + /** + * Returns the number of days in this DateTime's year + * @example DateTime.local(2016).daysInYear //=> 366 + * @example DateTime.local(2013).daysInYear //=> 365 + * @type {number} + */ + get daysInYear() { + return this.isValid ? daysInYear(this.year) : NaN; + } + /** + * Returns the number of weeks in this DateTime's year + * @see https://en.wikipedia.org/wiki/ISO_week_date + * @example DateTime.local(2004).weeksInWeekYear //=> 53 + * @example DateTime.local(2013).weeksInWeekYear //=> 52 + * @type {number} + */ + get weeksInWeekYear() { + return this.isValid ? weeksInWeekYear(this.weekYear) : NaN; + } + /** + * Returns the resolved Intl options for this DateTime. + * This is useful in understanding the behavior of formatting methods + * @param {Object} opts - the same options as toLocaleString + * @return {Object} + */ + resolvedLocaleOptions(opts = {}) { + const { locale, numberingSystem, calendar } = Formatter.create( + this.loc.clone(opts), + opts + ).resolvedOptions(this); + return { locale, numberingSystem, outputCalendar: calendar }; + } + // TRANSFORM + /** + * "Set" the DateTime's zone to UTC. Returns a newly-constructed DateTime. + * + * Equivalent to {@link DateTime#setZone}('utc') + * @param {number} [offset=0] - optionally, an offset from UTC in minutes + * @param {Object} [opts={}] - options to pass to `setZone()` + * @return {DateTime} + */ + toUTC(offset4 = 0, opts = {}) { + return this.setZone(FixedOffsetZone.instance(offset4), opts); + } + /** + * "Set" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime. + * + * Equivalent to `setZone('local')` + * @return {DateTime} + */ + toLocal() { + return this.setZone(Settings2.defaultZone); + } + /** + * "Set" the DateTime's zone to specified zone. Returns a newly-constructed DateTime. + * + * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones. + * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class. + * @param {Object} opts - options + * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this. + * @return {DateTime} + */ + setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) { + zone = normalizeZone(zone, Settings2.defaultZone); + if (zone.equals(this.zone)) { + return this; + } else if (!zone.isValid) { + return _DateTime.invalid(unsupportedZone(zone)); + } else { + let newTS = this.ts; + if (keepLocalTime || keepCalendarTime) { + const offsetGuess = zone.offset(this.ts); + const asObj = this.toObject(); + [newTS] = objToTS(asObj, offsetGuess, zone); + } + return clone(this, { ts: newTS, zone }); + } + } + /** + * "Set" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime. + * @param {Object} properties - the properties to set + * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' }) + * @return {DateTime} + */ + reconfigure({ locale, numberingSystem, outputCalendar } = {}) { + const loc = this.loc.clone({ locale, numberingSystem, outputCalendar }); + return clone(this, { loc }); + } + /** + * "Set" the locale. Returns a newly-constructed DateTime. + * Just a convenient alias for reconfigure({ locale }) + * @example DateTime.local(2017, 5, 25).setLocale('en-GB') + * @return {DateTime} + */ + setLocale(locale) { + return this.reconfigure({ locale }); + } + /** + * "Set" the values of specified units. Returns a newly-constructed DateTime. + * You can only set units with this method; for "setting" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}. + * @param {Object} values - a mapping of units to numbers + * @example dt.set({ year: 2017 }) + * @example dt.set({ hour: 8, minute: 30 }) + * @example dt.set({ weekday: 5 }) + * @example dt.set({ year: 2005, ordinal: 234 }) + * @return {DateTime} + */ + set(values) { + if (!this.isValid) + return this; + const normalized = normalizeObject(values, normalizeUnit), settingWeekStuff = !isUndefined2(normalized.weekYear) || !isUndefined2(normalized.weekNumber) || !isUndefined2(normalized.weekday), containsOrdinal = !isUndefined2(normalized.ordinal), containsGregorYear = !isUndefined2(normalized.year), containsGregorMD = !isUndefined2(normalized.month) || !isUndefined2(normalized.day), containsGregor = containsGregorYear || containsGregorMD, definiteWeekDef = normalized.weekYear || normalized.weekNumber; + if ((containsGregor || containsOrdinal) && definiteWeekDef) { + throw new ConflictingSpecificationError( + "Can't mix weekYear/weekNumber units with year/month/day or ordinals" + ); + } + if (containsGregorMD && containsOrdinal) { + throw new ConflictingSpecificationError("Can't mix ordinal dates with month/day"); + } + let mixed; + if (settingWeekStuff) { + mixed = weekToGregorian({ ...gregorianToWeek(this.c), ...normalized }); + } else if (!isUndefined2(normalized.ordinal)) { + mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized }); + } else { + mixed = { ...this.toObject(), ...normalized }; + if (isUndefined2(normalized.day)) { + mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day); + } + } + const [ts, o2] = objToTS(mixed, this.o, this.zone); + return clone(this, { ts, o: o2 }); + } + /** + * Add a period of time to this DateTime and return the resulting DateTime + * + * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between. + * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + * @example DateTime.now().plus(123) //~> in 123 milliseconds + * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes + * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow + * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday + * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min + * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min + * @return {DateTime} + */ + plus(duration) { + if (!this.isValid) + return this; + const dur = Duration.fromDurationLike(duration); + return clone(this, adjustTime(this, dur)); + } + /** + * Subtract a period of time to this DateTime and return the resulting DateTime + * See {@link DateTime#plus} + * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject() + @return {DateTime} + */ + minus(duration) { + if (!this.isValid) + return this; + const dur = Duration.fromDurationLike(duration).negate(); + return clone(this, adjustTime(this, dur)); + } + /** + * "Set" this DateTime to the beginning of a unit of time. + * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'. + * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01' + * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01' + * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays + * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00' + * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00' + * @return {DateTime} + */ + startOf(unit) { + if (!this.isValid) + return this; + const o2 = {}, normalizedUnit = Duration.normalizeUnit(unit); + switch (normalizedUnit) { + case "years": + o2.month = 1; + case "quarters": + case "months": + o2.day = 1; + case "weeks": + case "days": + o2.hour = 0; + case "hours": + o2.minute = 0; + case "minutes": + o2.second = 0; + case "seconds": + o2.millisecond = 0; + break; + } + if (normalizedUnit === "weeks") { + o2.weekday = 1; + } + if (normalizedUnit === "quarters") { + const q2 = Math.ceil(this.month / 3); + o2.month = (q2 - 1) * 3 + 1; + } + return this.set(o2); + } + /** + * "Set" this DateTime to the end (meaning the last millisecond) of a unit of time + * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'. + * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00' + * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00' + * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays + * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00' + * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00' + * @return {DateTime} + */ + endOf(unit) { + return this.isValid ? this.plus({ [unit]: 1 }).startOf(unit).minus(1) : this; + } + // OUTPUT + /** + * Returns a string representation of this DateTime formatted according to the specified format string. + * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens). + * Defaults to en-US if no locale has been specified, regardless of the system's locale. + * @param {string} fmt - the format string + * @param {Object} opts - opts to override the configuration options on this DateTime + * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22' + * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22' + * @example DateTime.now().toFormat('yyyy LLL dd', { locale: "fr" }) //=> '2017 avr. 22' + * @example DateTime.now().toFormat("HH 'hours and' mm 'minutes'") //=> '20 hours and 55 minutes' + * @return {string} + */ + toFormat(fmt, opts = {}) { + return this.isValid ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt) : INVALID; + } + /** + * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`. + * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation + * of the DateTime in the assigned locale. + * Defaults to the system's locale if no locale has been specified + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options + * @param {Object} opts - opts to override the configuration options on this DateTime + * @example DateTime.now().toLocaleString(); //=> 4/20/2017 + * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017' + * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017' + * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022' + * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM' + * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM' + * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20' + * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM' + * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32' + * @return {string} + */ + toLocaleString(formatOpts = DATE_SHORT, opts = {}) { + return this.isValid ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this) : INVALID; + } + /** + * Returns an array of format "parts", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output. + * Defaults to the system's locale if no locale has been specified + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts + * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`. + * @example DateTime.now().toLocaleParts(); //=> [ + * //=> { type: 'day', value: '25' }, + * //=> { type: 'literal', value: '/' }, + * //=> { type: 'month', value: '05' }, + * //=> { type: 'literal', value: '/' }, + * //=> { type: 'year', value: '1982' } + * //=> ] + */ + toLocaleParts(opts = {}) { + return this.isValid ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this) : []; + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime + * @param {Object} opts - options + * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0 + * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0 + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @param {boolean} [opts.extendedZone=false] - add the time zone format extension + * @param {string} [opts.format='extended'] - choose between the basic and extended format + * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z' + * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00' + * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335' + * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400' + * @return {string} + */ + toISO({ + format = "extended", + suppressSeconds = false, + suppressMilliseconds = false, + includeOffset = true, + extendedZone = false + } = {}) { + if (!this.isValid) { + return null; + } + const ext = format === "extended"; + let c2 = toISODate(this, ext); + c2 += "T"; + c2 += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone); + return c2; + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime's date component + * @param {Object} opts - options + * @param {string} [opts.format='extended'] - choose between the basic and extended format + * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25' + * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525' + * @return {string} + */ + toISODate({ format = "extended" } = {}) { + if (!this.isValid) { + return null; + } + return toISODate(this, format === "extended"); + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime's week date + * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2' + * @return {string} + */ + toISOWeekDate() { + return toTechFormat(this, "kkkk-'W'WW-c"); + } + /** + * Returns an ISO 8601-compliant string representation of this DateTime's time component + * @param {Object} opts - options + * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0 + * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0 + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @param {boolean} [opts.extendedZone=true] - add the time zone format extension + * @param {boolean} [opts.includePrefix=false] - include the `T` prefix + * @param {string} [opts.format='extended'] - choose between the basic and extended format + * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z' + * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z' + * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z' + * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z' + * @return {string} + */ + toISOTime({ + suppressMilliseconds = false, + suppressSeconds = false, + includeOffset = true, + includePrefix = false, + extendedZone = false, + format = "extended" + } = {}) { + if (!this.isValid) { + return null; + } + let c2 = includePrefix ? "T" : ""; + return c2 + toISOTime( + this, + format === "extended", + suppressSeconds, + suppressMilliseconds, + includeOffset, + extendedZone + ); + } + /** + * Returns an RFC 2822-compatible string representation of this DateTime + * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000' + * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400' + * @return {string} + */ + toRFC2822() { + return toTechFormat(this, "EEE, dd LLL yyyy HH:mm:ss ZZZ", false); + } + /** + * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT. + * Specifically, the string conforms to RFC 1123. + * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 + * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT' + * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT' + * @return {string} + */ + toHTTP() { + return toTechFormat(this.toUTC(), "EEE, dd LLL yyyy HH:mm:ss 'GMT'"); + } + /** + * Returns a string representation of this DateTime appropriate for use in SQL Date + * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13' + * @return {string} + */ + toSQLDate() { + if (!this.isValid) { + return null; + } + return toISODate(this, true); + } + /** + * Returns a string representation of this DateTime appropriate for use in SQL Time + * @param {Object} opts - options + * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset. + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00' + * @example DateTime.utc().toSQL() //=> '05:15:16.345' + * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00' + * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345' + * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York' + * @return {string} + */ + toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) { + let fmt = "HH:mm:ss.SSS"; + if (includeZone || includeOffset) { + if (includeOffsetSpace) { + fmt += " "; + } + if (includeZone) { + fmt += "z"; + } else if (includeOffset) { + fmt += "ZZ"; + } + } + return toTechFormat(this, fmt, true); + } + /** + * Returns a string representation of this DateTime appropriate for use in SQL DateTime + * @param {Object} opts - options + * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset. + * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00' + * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00' + * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z' + * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00' + * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000' + * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York' + * @return {string} + */ + toSQL(opts = {}) { + if (!this.isValid) { + return null; + } + return `${this.toSQLDate()} ${this.toSQLTime(opts)}`; + } + /** + * Returns a string representation of this DateTime appropriate for debugging + * @return {string} + */ + toString() { + return this.isValid ? this.toISO() : INVALID; + } + /** + * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis} + * @return {number} + */ + valueOf() { + return this.toMillis(); + } + /** + * Returns the epoch milliseconds of this DateTime. + * @return {number} + */ + toMillis() { + return this.isValid ? this.ts : NaN; + } + /** + * Returns the epoch seconds of this DateTime. + * @return {number} + */ + toSeconds() { + return this.isValid ? this.ts / 1e3 : NaN; + } + /** + * Returns the epoch seconds (as a whole number) of this DateTime. + * @return {number} + */ + toUnixInteger() { + return this.isValid ? Math.floor(this.ts / 1e3) : NaN; + } + /** + * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON. + * @return {string} + */ + toJSON() { + return this.toISO(); + } + /** + * Returns a BSON serializable equivalent to this DateTime. + * @return {Date} + */ + toBSON() { + return this.toJSDate(); + } + /** + * Returns a JavaScript object with this DateTime's year, month, day, and so on. + * @param opts - options for generating the object + * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output + * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 } + * @return {Object} + */ + toObject(opts = {}) { + if (!this.isValid) + return {}; + const base = { ...this.c }; + if (opts.includeConfig) { + base.outputCalendar = this.outputCalendar; + base.numberingSystem = this.loc.numberingSystem; + base.locale = this.loc.locale; + } + return base; + } + /** + * Returns a JavaScript Date equivalent to this DateTime. + * @return {Date} + */ + toJSDate() { + return new Date(this.isValid ? this.ts : NaN); + } + // COMPARE + /** + * Return the difference between two DateTimes as a Duration. + * @param {DateTime} otherDateTime - the DateTime to compare this one to + * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration. + * @param {Object} opts - options that affect the creation of the Duration + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @example + * var i1 = DateTime.fromISO('1982-05-25T09:45'), + * i2 = DateTime.fromISO('1983-10-14T10:30'); + * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 } + * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 } + * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 } + * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 } + * @return {Duration} + */ + diff(otherDateTime, unit = "milliseconds", opts = {}) { + if (!this.isValid || !otherDateTime.isValid) { + return Duration.invalid("created by diffing an invalid DateTime"); + } + const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts }; + const units = maybeArray(unit).map(Duration.normalizeUnit), otherIsLater = otherDateTime.valueOf() > this.valueOf(), earlier = otherIsLater ? this : otherDateTime, later = otherIsLater ? otherDateTime : this, diffed = diff(earlier, later, units, durOpts); + return otherIsLater ? diffed.negate() : diffed; + } + /** + * Return the difference between this DateTime and right now. + * See {@link DateTime#diff} + * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration + * @param {Object} opts - options that affect the creation of the Duration + * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use + * @return {Duration} + */ + diffNow(unit = "milliseconds", opts = {}) { + return this.diff(_DateTime.now(), unit, opts); + } + /** + * Return an Interval spanning between this DateTime and another DateTime + * @param {DateTime} otherDateTime - the other end point of the Interval + * @return {Interval} + */ + until(otherDateTime) { + return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this; + } + /** + * Return whether this DateTime is in the same unit of time as another DateTime. + * Higher-order units must also be identical for this function to return `true`. + * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed. + * @param {DateTime} otherDateTime - the other DateTime + * @param {string} unit - the unit of time to check sameness on + * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day + * @return {boolean} + */ + hasSame(otherDateTime, unit) { + if (!this.isValid) + return false; + const inputMs = otherDateTime.valueOf(); + const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true }); + return adjustedToZone.startOf(unit) <= inputMs && inputMs <= adjustedToZone.endOf(unit); + } + /** + * Equality check + * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid. + * To compare just the millisecond values, use `+dt1 === +dt2`. + * @param {DateTime} other - the other DateTime + * @return {boolean} + */ + equals(other) { + return this.isValid && other.isValid && this.valueOf() === other.valueOf() && this.zone.equals(other.zone) && this.loc.equals(other.loc); + } + /** + * Returns a string representation of a this time relative to now, such as "in two days". Can only internationalize if your + * platform supports Intl.RelativeTimeFormat. Rounds down by default. + * @param {Object} options - options that affect the output + * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now. + * @param {string} [options.style="long"] - the style of units, must be "long", "short", or "narrow" + * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of "years", "quarters", "months", "weeks", "days", "hours", "minutes", or "seconds" + * @param {boolean} [options.round=true] - whether to round the numbers in the output. + * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding. + * @param {string} options.locale - override the locale of this DateTime + * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this + * @example DateTime.now().plus({ days: 1 }).toRelative() //=> "in 1 day" + * @example DateTime.now().setLocale("es").toRelative({ days: 1 }) //=> "dentro de 1 día" + * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: "fr" }) //=> "dans 23 heures" + * @example DateTime.now().minus({ days: 2 }).toRelative() //=> "2 days ago" + * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: "hours" }) //=> "48 hours ago" + * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> "1.5 days ago" + */ + toRelative(options = {}) { + if (!this.isValid) + return null; + const base = options.base || _DateTime.fromObject({}, { zone: this.zone }), padding = options.padding ? this < base ? -options.padding : options.padding : 0; + let units = ["years", "months", "days", "hours", "minutes", "seconds"]; + let unit = options.unit; + if (Array.isArray(options.unit)) { + units = options.unit; + unit = void 0; + } + return diffRelative(base, this.plus(padding), { + ...options, + numeric: "always", + units, + unit + }); + } + /** + * Returns a string representation of this date relative to today, such as "yesterday" or "next month". + * Only internationalizes on platforms that supports Intl.RelativeTimeFormat. + * @param {Object} options - options that affect the output + * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now. + * @param {string} options.locale - override the locale of this DateTime + * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of "years", "quarters", "months", "weeks", or "days" + * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this + * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> "tomorrow" + * @example DateTime.now().setLocale("es").plus({ days: 1 }).toRelative() //=> ""mañana" + * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: "fr" }) //=> "demain" + * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> "2 days ago" + */ + toRelativeCalendar(options = {}) { + if (!this.isValid) + return null; + return diffRelative(options.base || _DateTime.fromObject({}, { zone: this.zone }), this, { + ...options, + numeric: "auto", + units: ["years", "months", "days"], + calendary: true + }); + } + /** + * Return the min of several date times + * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum + * @return {DateTime} the min DateTime, or undefined if called with no argument + */ + static min(...dateTimes) { + if (!dateTimes.every(_DateTime.isDateTime)) { + throw new InvalidArgumentError("min requires all arguments be DateTimes"); + } + return bestBy(dateTimes, (i2) => i2.valueOf(), Math.min); + } + /** + * Return the max of several date times + * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum + * @return {DateTime} the max DateTime, or undefined if called with no argument + */ + static max(...dateTimes) { + if (!dateTimes.every(_DateTime.isDateTime)) { + throw new InvalidArgumentError("max requires all arguments be DateTimes"); + } + return bestBy(dateTimes, (i2) => i2.valueOf(), Math.max); + } + // MISC + /** + * Explain how a string would be parsed by fromFormat() + * @param {string} text - the string to parse + * @param {string} fmt - the format the string is expected to be in (see description) + * @param {Object} options - options taken by fromFormat() + * @return {Object} + */ + static fromFormatExplain(text2, fmt, options = {}) { + const { locale = null, numberingSystem = null } = options, localeToUse = Locale.fromOpts({ + locale, + numberingSystem, + defaultToEN: true + }); + return explainFromTokens(localeToUse, text2, fmt); + } + /** + * @deprecated use fromFormatExplain instead + */ + static fromStringExplain(text2, fmt, options = {}) { + return _DateTime.fromFormatExplain(text2, fmt, options); + } + // FORMAT PRESETS + /** + * {@link DateTime#toLocaleString} format like 10/14/1983 + * @type {Object} + */ + static get DATE_SHORT() { + return DATE_SHORT; + } + /** + * {@link DateTime#toLocaleString} format like 'Oct 14, 1983' + * @type {Object} + */ + static get DATE_MED() { + return DATE_MED; + } + /** + * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983' + * @type {Object} + */ + static get DATE_MED_WITH_WEEKDAY() { + return DATE_MED_WITH_WEEKDAY; + } + /** + * {@link DateTime#toLocaleString} format like 'October 14, 1983' + * @type {Object} + */ + static get DATE_FULL() { + return DATE_FULL; + } + /** + * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983' + * @type {Object} + */ + static get DATE_HUGE() { + return DATE_HUGE; + } + /** + * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get TIME_SIMPLE() { + return TIME_SIMPLE; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get TIME_WITH_SECONDS() { + return TIME_WITH_SECONDS; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is. + * @type {Object} + */ + static get TIME_WITH_SHORT_OFFSET() { + return TIME_WITH_SHORT_OFFSET; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is. + * @type {Object} + */ + static get TIME_WITH_LONG_OFFSET() { + return TIME_WITH_LONG_OFFSET; + } + /** + * {@link DateTime#toLocaleString} format like '09:30', always 24-hour. + * @type {Object} + */ + static get TIME_24_SIMPLE() { + return TIME_24_SIMPLE; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour. + * @type {Object} + */ + static get TIME_24_WITH_SECONDS() { + return TIME_24_WITH_SECONDS; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour. + * @type {Object} + */ + static get TIME_24_WITH_SHORT_OFFSET() { + return TIME_24_WITH_SHORT_OFFSET; + } + /** + * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour. + * @type {Object} + */ + static get TIME_24_WITH_LONG_OFFSET() { + return TIME_24_WITH_LONG_OFFSET; + } + /** + * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_SHORT() { + return DATETIME_SHORT; + } + /** + * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_SHORT_WITH_SECONDS() { + return DATETIME_SHORT_WITH_SECONDS; + } + /** + * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_MED() { + return DATETIME_MED; + } + /** + * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_MED_WITH_SECONDS() { + return DATETIME_MED_WITH_SECONDS; + } + /** + * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_MED_WITH_WEEKDAY() { + return DATETIME_MED_WITH_WEEKDAY; + } + /** + * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_FULL() { + return DATETIME_FULL; + } + /** + * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_FULL_WITH_SECONDS() { + return DATETIME_FULL_WITH_SECONDS; + } + /** + * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_HUGE() { + return DATETIME_HUGE; + } + /** + * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is. + * @type {Object} + */ + static get DATETIME_HUGE_WITH_SECONDS() { + return DATETIME_HUGE_WITH_SECONDS; + } + }; + function friendlyDateTime(dateTimeish) { + if (DateTime.isDateTime(dateTimeish)) { + return dateTimeish; + } else if (dateTimeish && dateTimeish.valueOf && isNumber2(dateTimeish.valueOf())) { + return DateTime.fromJSDate(dateTimeish); + } else if (dateTimeish && typeof dateTimeish === "object") { + return DateTime.fromObject(dateTimeish); + } else { + throw new InvalidArgumentError( + `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}` + ); + } + } + var DEFAULT_QUERY_SETTINGS = { + renderNullAs: "\\-", + taskCompletionTracking: false, + taskCompletionUseEmojiShorthand: false, + taskCompletionText: "completion", + taskCompletionDateFormat: "yyyy-MM-dd", + recursiveSubTaskCompletion: false, + warnOnEmptyResult: true, + refreshEnabled: true, + refreshInterval: 2500, + defaultDateFormat: "MMMM dd, yyyy", + defaultDateTimeFormat: "h:mm a - MMMM dd, yyyy", + maxRecursiveRenderDepth: 4, + tableIdColumnName: "File", + tableGroupColumnName: "Group", + showResultCount: true + }; + var DEFAULT_EXPORT_SETTINGS = { + allowHtml: true + }; + ({ + ...DEFAULT_QUERY_SETTINGS, + ...DEFAULT_EXPORT_SETTINGS, + ...{ + inlineQueryPrefix: "=", + inlineJsQueryPrefix: "$=", + inlineQueriesInCodeblocks: true, + enableInlineDataview: true, + enableDataviewJs: false, + enableInlineDataviewJs: false, + prettyRenderInlineFields: true, + dataviewJsKeyword: "dataviewjs" + } + }); + var Success = class _Success { + constructor(value) { + this.value = value; + this.successful = true; + } + map(f2) { + return new _Success(f2(this.value)); + } + flatMap(f2) { + return f2(this.value); + } + mapErr(f2) { + return this; + } + bimap(succ, _fail) { + return this.map(succ); + } + orElse(_value) { + return this.value; + } + cast() { + return this; + } + orElseThrow(_message) { + return this.value; + } + }; + var Failure = class _Failure { + constructor(error) { + this.error = error; + this.successful = false; + } + map(_f) { + return this; + } + flatMap(_f) { + return this; + } + mapErr(f2) { + return new _Failure(f2(this.error)); + } + bimap(_succ, fail) { + return this.mapErr(fail); + } + orElse(value) { + return value; + } + cast() { + return this; + } + orElseThrow(message) { + if (message) + throw new Error(message(this.error)); + else + throw new Error("" + this.error); + } + }; + var Result; + (function(Result2) { + function success(value) { + return new Success(value); + } + Result2.success = success; + function failure(error) { + return new Failure(error); + } + Result2.failure = failure; + function flatMap2(first, second, f2) { + if (first.successful) { + if (second.successful) + return f2(first.value, second.value); + else + return failure(second.error); + } else { + return failure(first.error); + } + } + Result2.flatMap2 = flatMap2; + function map2(first, second, f2) { + return flatMap2(first, second, (a2, b2) => success(f2(a2, b2))); + } + Result2.map2 = map2; + })(Result || (Result = {})); + var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; + var parsimmon_umd_min = { exports: {} }; + (function(module3, exports2) { + !function(n3, t2) { + module3.exports = t2(); + }("undefined" != typeof self ? self : commonjsGlobal, function() { + return function(n3) { + var t2 = {}; + function r2(e2) { + if (t2[e2]) + return t2[e2].exports; + var u2 = t2[e2] = { i: e2, l: false, exports: {} }; + return n3[e2].call(u2.exports, u2, u2.exports, r2), u2.l = true, u2.exports; + } + return r2.m = n3, r2.c = t2, r2.d = function(n4, t3, e2) { + r2.o(n4, t3) || Object.defineProperty(n4, t3, { configurable: false, enumerable: true, get: e2 }); + }, r2.r = function(n4) { + Object.defineProperty(n4, "__esModule", { value: true }); + }, r2.n = function(n4) { + var t3 = n4 && n4.__esModule ? function() { + return n4.default; + } : function() { + return n4; + }; + return r2.d(t3, "a", t3), t3; + }, r2.o = function(n4, t3) { + return Object.prototype.hasOwnProperty.call(n4, t3); + }, r2.p = "", r2(r2.s = 0); + }([function(n3, t2, r2) { + function e2(n4) { + if (!(this instanceof e2)) + return new e2(n4); + this._ = n4; + } + var u2 = e2.prototype; + function o2(n4, t3) { + for (var r3 = 0; r3 < n4; r3++) + t3(r3); + } + function i2(n4, t3, r3) { + return function(n5, t4) { + o2(t4.length, function(r4) { + n5(t4[r4], r4, t4); + }); + }(function(r4, e3, u3) { + t3 = n4(t3, r4, e3, u3); + }, r3), t3; + } + function a2(n4, t3) { + return i2(function(t4, r3, e3, u3) { + return t4.concat([n4(r3, e3, u3)]); + }, [], t3); + } + function f2(n4, t3) { + var r3 = { v: 0, buf: t3 }; + return o2(n4, function() { + var n5; + r3 = { v: r3.v << 1 | (n5 = r3.buf, n5[0] >> 7), buf: function(n6) { + var t4 = i2(function(n7, t5, r4, e3) { + return n7.concat(r4 === e3.length - 1 ? Buffer.from([t5, 0]).readUInt16BE(0) : e3.readUInt16BE(r4)); + }, [], n6); + return Buffer.from(a2(function(n7) { + return (n7 << 1 & 65535) >> 8; + }, t4)); + }(r3.buf) }; + }), r3; + } + function c2() { + return "undefined" != typeof Buffer; + } + function s3() { + if (!c2()) + throw new Error("Buffer global does not exist; please use webpack if you need to parse Buffers in the browser."); + } + function l3(n4) { + s3(); + var t3 = i2(function(n5, t4) { + return n5 + t4; + }, 0, n4); + if (t3 % 8 != 0) + throw new Error("The bits [" + n4.join(", ") + "] add up to " + t3 + " which is not an even number of bytes; the total should be divisible by 8"); + var r3, u3 = t3 / 8, o3 = (r3 = function(n5) { + return n5 > 48; + }, i2(function(n5, t4) { + return n5 || (r3(t4) ? t4 : n5); + }, null, n4)); + if (o3) + throw new Error(o3 + " bit range requested exceeds 48 bit (6 byte) Number max."); + return new e2(function(t4, r4) { + var e3 = u3 + r4; + return e3 > t4.length ? x2(r4, u3.toString() + " bytes") : b2(e3, i2(function(n5, t5) { + var r5 = f2(t5, n5.buf); + return { coll: n5.coll.concat(r5.v), buf: r5.buf }; + }, { coll: [], buf: t4.slice(r4, e3) }, n4).coll); + }); + } + function h2(n4, t3) { + return new e2(function(r3, e3) { + return s3(), e3 + t3 > r3.length ? x2(e3, t3 + " bytes for " + n4) : b2(e3 + t3, r3.slice(e3, e3 + t3)); + }); + } + function p2(n4, t3) { + if ("number" != typeof (r3 = t3) || Math.floor(r3) !== r3 || t3 < 0 || t3 > 6) + throw new Error(n4 + " requires integer length in range [0, 6]."); + var r3; + } + function d2(n4) { + return p2("uintBE", n4), h2("uintBE(" + n4 + ")", n4).map(function(t3) { + return t3.readUIntBE(0, n4); + }); + } + function v2(n4) { + return p2("uintLE", n4), h2("uintLE(" + n4 + ")", n4).map(function(t3) { + return t3.readUIntLE(0, n4); + }); + } + function g2(n4) { + return p2("intBE", n4), h2("intBE(" + n4 + ")", n4).map(function(t3) { + return t3.readIntBE(0, n4); + }); + } + function m2(n4) { + return p2("intLE", n4), h2("intLE(" + n4 + ")", n4).map(function(t3) { + return t3.readIntLE(0, n4); + }); + } + function y2(n4) { + return n4 instanceof e2; + } + function E2(n4) { + return "[object Array]" === {}.toString.call(n4); + } + function w2(n4) { + return c2() && Buffer.isBuffer(n4); + } + function b2(n4, t3) { + return { status: true, index: n4, value: t3, furthest: -1, expected: [] }; + } + function x2(n4, t3) { + return E2(t3) || (t3 = [t3]), { status: false, index: -1, value: null, furthest: n4, expected: t3 }; + } + function B2(n4, t3) { + if (!t3) + return n4; + if (n4.furthest > t3.furthest) + return n4; + var r3 = n4.furthest === t3.furthest ? function(n5, t4) { + if (function() { + if (void 0 !== e2._supportsSet) + return e2._supportsSet; + var n6 = "undefined" != typeof Set; + return e2._supportsSet = n6, n6; + }() && Array.from) { + for (var r4 = new Set(n5), u3 = 0; u3 < t4.length; u3++) + r4.add(t4[u3]); + var o3 = Array.from(r4); + return o3.sort(), o3; + } + for (var i3 = {}, a3 = 0; a3 < n5.length; a3++) + i3[n5[a3]] = true; + for (var f3 = 0; f3 < t4.length; f3++) + i3[t4[f3]] = true; + var c3 = []; + for (var s4 in i3) + ({}).hasOwnProperty.call(i3, s4) && c3.push(s4); + return c3.sort(), c3; + }(n4.expected, t3.expected) : t3.expected; + return { status: n4.status, index: n4.index, value: n4.value, furthest: t3.furthest, expected: r3 }; + } + var j2 = {}; + function S2(n4, t3) { + if (w2(n4)) + return { offset: t3, line: -1, column: -1 }; + n4 in j2 || (j2[n4] = {}); + for (var r3 = j2[n4], e3 = 0, u3 = 0, o3 = 0, i3 = t3; i3 >= 0; ) { + if (i3 in r3) { + e3 = r3[i3].line, 0 === o3 && (o3 = r3[i3].lineStart); + break; + } + ("\n" === n4.charAt(i3) || "\r" === n4.charAt(i3) && "\n" !== n4.charAt(i3 + 1)) && (u3++, 0 === o3 && (o3 = i3 + 1)), i3--; + } + var a3 = e3 + u3, f3 = t3 - o3; + return r3[t3] = { line: a3, lineStart: o3 }, { offset: t3, line: a3 + 1, column: f3 + 1 }; + } + function _2(n4) { + if (!y2(n4)) + throw new Error("not a parser: " + n4); + } + function L2(n4, t3) { + return "string" == typeof n4 ? n4.charAt(t3) : n4[t3]; + } + function O2(n4) { + if ("number" != typeof n4) + throw new Error("not a number: " + n4); + } + function k2(n4) { + if ("function" != typeof n4) + throw new Error("not a function: " + n4); + } + function P2(n4) { + if ("string" != typeof n4) + throw new Error("not a string: " + n4); + } + var q2 = 2, A2 = 3, I2 = 8, F2 = 5 * I2, M2 = 4 * I2, z2 = " "; + function R2(n4, t3) { + return new Array(t3 + 1).join(n4); + } + function U2(n4, t3, r3) { + var e3 = t3 - n4.length; + return e3 <= 0 ? n4 : R2(r3, e3) + n4; + } + function W2(n4, t3, r3, e3) { + return { from: n4 - t3 > 0 ? n4 - t3 : 0, to: n4 + r3 > e3 ? e3 : n4 + r3 }; + } + function D2(n4, t3) { + var r3, e3, u3, o3, f3, c3 = t3.index, s4 = c3.offset, l4 = 1; + if (s4 === n4.length) + return "Got the end of the input"; + if (w2(n4)) { + var h3 = s4 - s4 % I2, p3 = s4 - h3, d3 = W2(h3, F2, M2 + I2, n4.length), v3 = a2(function(n5) { + return a2(function(n6) { + return U2(n6.toString(16), 2, "0"); + }, n5); + }, function(n5, t4) { + var r4 = n5.length, e4 = [], u4 = 0; + if (r4 <= t4) + return [n5.slice()]; + for (var o4 = 0; o4 < r4; o4++) + e4[u4] || e4.push([]), e4[u4].push(n5[o4]), (o4 + 1) % t4 == 0 && u4++; + return e4; + }(n4.slice(d3.from, d3.to).toJSON().data, I2)); + o3 = function(n5) { + return 0 === n5.from && 1 === n5.to ? { from: n5.from, to: n5.to } : { from: n5.from / I2, to: Math.floor(n5.to / I2) }; + }(d3), e3 = h3 / I2, r3 = 3 * p3, p3 >= 4 && (r3 += 1), l4 = 2, u3 = a2(function(n5) { + return n5.length <= 4 ? n5.join(" ") : n5.slice(0, 4).join(" ") + " " + n5.slice(4).join(" "); + }, v3), (f3 = (8 * (o3.to > 0 ? o3.to - 1 : o3.to)).toString(16).length) < 2 && (f3 = 2); + } else { + var g3 = n4.split(/\r\n|[\n\r\u2028\u2029]/); + r3 = c3.column - 1, e3 = c3.line - 1, o3 = W2(e3, q2, A2, g3.length), u3 = g3.slice(o3.from, o3.to), f3 = o3.to.toString().length; + } + var m3 = e3 - o3.from; + return w2(n4) && (f3 = (8 * (o3.to > 0 ? o3.to - 1 : o3.to)).toString(16).length) < 2 && (f3 = 2), i2(function(t4, e4, u4) { + var i3, a3 = u4 === m3, c4 = a3 ? "> " : z2; + return i3 = w2(n4) ? U2((8 * (o3.from + u4)).toString(16), f3, "0") : U2((o3.from + u4 + 1).toString(), f3, " "), [].concat(t4, [c4 + i3 + " | " + e4], a3 ? [z2 + R2(" ", f3) + " | " + U2("", r3, " ") + R2("^", l4)] : []); + }, [], u3).join("\n"); + } + function N2(n4, t3) { + return ["\n", "-- PARSING FAILED " + R2("-", 50), "\n\n", D2(n4, t3), "\n\n", (r3 = t3.expected, 1 === r3.length ? "Expected:\n\n" + r3[0] : "Expected one of the following: \n\n" + r3.join(", ")), "\n"].join(""); + var r3; + } + function G2(n4) { + return void 0 !== n4.flags ? n4.flags : [n4.global ? "g" : "", n4.ignoreCase ? "i" : "", n4.multiline ? "m" : "", n4.unicode ? "u" : "", n4.sticky ? "y" : ""].join(""); + } + function C2() { + for (var n4 = [].slice.call(arguments), t3 = n4.length, r3 = 0; r3 < t3; r3 += 1) + _2(n4[r3]); + return e2(function(r4, e3) { + for (var u3, o3 = new Array(t3), i3 = 0; i3 < t3; i3 += 1) { + if (!(u3 = B2(n4[i3]._(r4, e3), u3)).status) + return u3; + o3[i3] = u3.value, e3 = u3.index; + } + return B2(b2(e3, o3), u3); + }); + } + function J2() { + var n4 = [].slice.call(arguments); + if (0 === n4.length) + throw new Error("seqMap needs at least one argument"); + var t3 = n4.pop(); + return k2(t3), C2.apply(null, n4).map(function(n5) { + return t3.apply(null, n5); + }); + } + function T2() { + var n4 = [].slice.call(arguments), t3 = n4.length; + if (0 === t3) + return Y2("zero alternates"); + for (var r3 = 0; r3 < t3; r3 += 1) + _2(n4[r3]); + return e2(function(t4, r4) { + for (var e3, u3 = 0; u3 < n4.length; u3 += 1) + if ((e3 = B2(n4[u3]._(t4, r4), e3)).status) + return e3; + return e3; + }); + } + function V2(n4, t3) { + return H2(n4, t3).or(X3([])); + } + function H2(n4, t3) { + return _2(n4), _2(t3), J2(n4, t3.then(n4).many(), function(n5, t4) { + return [n5].concat(t4); + }); + } + function K2(n4) { + P2(n4); + var t3 = "'" + n4 + "'"; + return e2(function(r3, e3) { + var u3 = e3 + n4.length, o3 = r3.slice(e3, u3); + return o3 === n4 ? b2(u3, o3) : x2(e3, t3); + }); + } + function Q2(n4, t3) { + !function(n5) { + if (!(n5 instanceof RegExp)) + throw new Error("not a regexp: " + n5); + for (var t4 = G2(n5), r4 = 0; r4 < t4.length; r4++) { + var e3 = t4.charAt(r4); + if ("i" !== e3 && "m" !== e3 && "u" !== e3 && "s" !== e3) + throw new Error('unsupported regexp flag "' + e3 + '": ' + n5); + } + }(n4), arguments.length >= 2 ? O2(t3) : t3 = 0; + var r3 = function(n5) { + return RegExp("^(?:" + n5.source + ")", G2(n5)); + }(n4), u3 = "" + n4; + return e2(function(n5, e3) { + var o3 = r3.exec(n5.slice(e3)); + if (o3) { + if (0 <= t3 && t3 <= o3.length) { + var i3 = o3[0], a3 = o3[t3]; + return b2(e3 + i3.length, a3); + } + return x2(e3, "valid match group (0 to " + o3.length + ") in " + u3); + } + return x2(e3, u3); + }); + } + function X3(n4) { + return e2(function(t3, r3) { + return b2(r3, n4); + }); + } + function Y2(n4) { + return e2(function(t3, r3) { + return x2(r3, n4); + }); + } + function Z2(n4) { + if (y2(n4)) + return e2(function(t3, r3) { + var e3 = n4._(t3, r3); + return e3.index = r3, e3.value = "", e3; + }); + if ("string" == typeof n4) + return Z2(K2(n4)); + if (n4 instanceof RegExp) + return Z2(Q2(n4)); + throw new Error("not a string, regexp, or parser: " + n4); + } + function $2(n4) { + return _2(n4), e2(function(t3, r3) { + var e3 = n4._(t3, r3), u3 = t3.slice(r3, e3.index); + return e3.status ? x2(r3, 'not "' + u3 + '"') : b2(r3, null); + }); + } + function nn(n4) { + return k2(n4), e2(function(t3, r3) { + var e3 = L2(t3, r3); + return r3 < t3.length && n4(e3) ? b2(r3 + 1, e3) : x2(r3, "a character/byte matching " + n4); + }); + } + function tn(n4, t3) { + arguments.length < 2 && (t3 = n4, n4 = void 0); + var r3 = e2(function(n5, e3) { + return r3._ = t3()._, r3._(n5, e3); + }); + return n4 ? r3.desc(n4) : r3; + } + function rn() { + return Y2("fantasy-land/empty"); + } + u2.parse = function(n4) { + if ("string" != typeof n4 && !w2(n4)) + throw new Error(".parse must be called with a string or Buffer as its argument"); + var t3, r3 = this.skip(an)._(n4, 0); + return t3 = r3.status ? { status: true, value: r3.value } : { status: false, index: S2(n4, r3.furthest), expected: r3.expected }, delete j2[n4], t3; + }, u2.tryParse = function(n4) { + var t3 = this.parse(n4); + if (t3.status) + return t3.value; + var r3 = N2(n4, t3), e3 = new Error(r3); + throw e3.type = "ParsimmonError", e3.result = t3, e3; + }, u2.assert = function(n4, t3) { + return this.chain(function(r3) { + return n4(r3) ? X3(r3) : Y2(t3); + }); + }, u2.or = function(n4) { + return T2(this, n4); + }, u2.trim = function(n4) { + return this.wrap(n4, n4); + }, u2.wrap = function(n4, t3) { + return J2(n4, this, t3, function(n5, t4) { + return t4; + }); + }, u2.thru = function(n4) { + return n4(this); + }, u2.then = function(n4) { + return _2(n4), C2(this, n4).map(function(n5) { + return n5[1]; + }); + }, u2.many = function() { + var n4 = this; + return e2(function(t3, r3) { + for (var e3 = [], u3 = void 0; ; ) { + if (!(u3 = B2(n4._(t3, r3), u3)).status) + return B2(b2(r3, e3), u3); + if (r3 === u3.index) + throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause"); + r3 = u3.index, e3.push(u3.value); + } + }); + }, u2.tieWith = function(n4) { + return P2(n4), this.map(function(t3) { + if (function(n5) { + if (!E2(n5)) + throw new Error("not an array: " + n5); + }(t3), t3.length) { + P2(t3[0]); + for (var r3 = t3[0], e3 = 1; e3 < t3.length; e3++) + P2(t3[e3]), r3 += n4 + t3[e3]; + return r3; + } + return ""; + }); + }, u2.tie = function() { + return this.tieWith(""); + }, u2.times = function(n4, t3) { + var r3 = this; + return arguments.length < 2 && (t3 = n4), O2(n4), O2(t3), e2(function(e3, u3) { + for (var o3 = [], i3 = void 0, a3 = void 0, f3 = 0; f3 < n4; f3 += 1) { + if (a3 = B2(i3 = r3._(e3, u3), a3), !i3.status) + return a3; + u3 = i3.index, o3.push(i3.value); + } + for (; f3 < t3 && (a3 = B2(i3 = r3._(e3, u3), a3), i3.status); f3 += 1) + u3 = i3.index, o3.push(i3.value); + return B2(b2(u3, o3), a3); + }); + }, u2.result = function(n4) { + return this.map(function() { + return n4; + }); + }, u2.atMost = function(n4) { + return this.times(0, n4); + }, u2.atLeast = function(n4) { + return J2(this.times(n4), this.many(), function(n5, t3) { + return n5.concat(t3); + }); + }, u2.map = function(n4) { + k2(n4); + var t3 = this; + return e2(function(r3, e3) { + var u3 = t3._(r3, e3); + return u3.status ? B2(b2(u3.index, n4(u3.value)), u3) : u3; + }); + }, u2.contramap = function(n4) { + k2(n4); + var t3 = this; + return e2(function(r3, e3) { + var u3 = t3.parse(n4(r3.slice(e3))); + return u3.status ? b2(e3 + r3.length, u3.value) : u3; + }); + }, u2.promap = function(n4, t3) { + return k2(n4), k2(t3), this.contramap(n4).map(t3); + }, u2.skip = function(n4) { + return C2(this, n4).map(function(n5) { + return n5[0]; + }); + }, u2.mark = function() { + return J2(en, this, en, function(n4, t3, r3) { + return { start: n4, value: t3, end: r3 }; + }); + }, u2.node = function(n4) { + return J2(en, this, en, function(t3, r3, e3) { + return { name: n4, value: r3, start: t3, end: e3 }; + }); + }, u2.sepBy = function(n4) { + return V2(this, n4); + }, u2.sepBy1 = function(n4) { + return H2(this, n4); + }, u2.lookahead = function(n4) { + return this.skip(Z2(n4)); + }, u2.notFollowedBy = function(n4) { + return this.skip($2(n4)); + }, u2.desc = function(n4) { + E2(n4) || (n4 = [n4]); + var t3 = this; + return e2(function(r3, e3) { + var u3 = t3._(r3, e3); + return u3.status || (u3.expected = n4), u3; + }); + }, u2.fallback = function(n4) { + return this.or(X3(n4)); + }, u2.ap = function(n4) { + return J2(n4, this, function(n5, t3) { + return n5(t3); + }); + }, u2.chain = function(n4) { + var t3 = this; + return e2(function(r3, e3) { + var u3 = t3._(r3, e3); + return u3.status ? B2(n4(u3.value)._(r3, u3.index), u3) : u3; + }); + }, u2.concat = u2.or, u2.empty = rn, u2.of = X3, u2["fantasy-land/ap"] = u2.ap, u2["fantasy-land/chain"] = u2.chain, u2["fantasy-land/concat"] = u2.concat, u2["fantasy-land/empty"] = u2.empty, u2["fantasy-land/of"] = u2.of, u2["fantasy-land/map"] = u2.map; + var en = e2(function(n4, t3) { + return b2(t3, S2(n4, t3)); + }), un = e2(function(n4, t3) { + return t3 >= n4.length ? x2(t3, "any character/byte") : b2(t3 + 1, L2(n4, t3)); + }), on = e2(function(n4, t3) { + return b2(n4.length, n4.slice(t3)); + }), an = e2(function(n4, t3) { + return t3 < n4.length ? x2(t3, "EOF") : b2(t3, null); + }), fn = Q2(/[0-9]/).desc("a digit"), cn = Q2(/[0-9]*/).desc("optional digits"), sn = Q2(/[a-z]/i).desc("a letter"), ln = Q2(/[a-z]*/i).desc("optional letters"), hn = Q2(/\s*/).desc("optional whitespace"), pn = Q2(/\s+/).desc("whitespace"), dn = K2("\r"), vn = K2("\n"), gn = K2("\r\n"), mn = T2(gn, vn, dn).desc("newline"), yn = T2(mn, an); + e2.all = on, e2.alt = T2, e2.any = un, e2.cr = dn, e2.createLanguage = function(n4) { + var t3 = {}; + for (var r3 in n4) + ({}).hasOwnProperty.call(n4, r3) && function(r4) { + t3[r4] = tn(function() { + return n4[r4](t3); + }); + }(r3); + return t3; + }, e2.crlf = gn, e2.custom = function(n4) { + return e2(n4(b2, x2)); + }, e2.digit = fn, e2.digits = cn, e2.empty = rn, e2.end = yn, e2.eof = an, e2.fail = Y2, e2.formatError = N2, e2.index = en, e2.isParser = y2, e2.lazy = tn, e2.letter = sn, e2.letters = ln, e2.lf = vn, e2.lookahead = Z2, e2.makeFailure = x2, e2.makeSuccess = b2, e2.newline = mn, e2.noneOf = function(n4) { + return nn(function(t3) { + return n4.indexOf(t3) < 0; + }).desc("none of '" + n4 + "'"); + }, e2.notFollowedBy = $2, e2.of = X3, e2.oneOf = function(n4) { + for (var t3 = n4.split(""), r3 = 0; r3 < t3.length; r3++) + t3[r3] = "'" + t3[r3] + "'"; + return nn(function(t4) { + return n4.indexOf(t4) >= 0; + }).desc(t3); + }, e2.optWhitespace = hn, e2.Parser = e2, e2.range = function(n4, t3) { + return nn(function(r3) { + return n4 <= r3 && r3 <= t3; + }).desc(n4 + "-" + t3); + }, e2.regex = Q2, e2.regexp = Q2, e2.sepBy = V2, e2.sepBy1 = H2, e2.seq = C2, e2.seqMap = J2, e2.seqObj = function() { + for (var n4, t3 = {}, r3 = 0, u3 = (n4 = arguments, Array.prototype.slice.call(n4)), o3 = u3.length, i3 = 0; i3 < o3; i3 += 1) { + var a3 = u3[i3]; + if (!y2(a3)) { + if (E2(a3) && 2 === a3.length && "string" == typeof a3[0] && y2(a3[1])) { + var f3 = a3[0]; + if (Object.prototype.hasOwnProperty.call(t3, f3)) + throw new Error("seqObj: duplicate key " + f3); + t3[f3] = true, r3++; + continue; + } + throw new Error("seqObj arguments must be parsers or [string, parser] array pairs."); + } + } + if (0 === r3) + throw new Error("seqObj expects at least one named parser, found zero"); + return e2(function(n5, t4) { + for (var r4, e3 = {}, i4 = 0; i4 < o3; i4 += 1) { + var a4, f4; + if (E2(u3[i4]) ? (a4 = u3[i4][0], f4 = u3[i4][1]) : (a4 = null, f4 = u3[i4]), !(r4 = B2(f4._(n5, t4), r4)).status) + return r4; + a4 && (e3[a4] = r4.value), t4 = r4.index; + } + return B2(b2(t4, e3), r4); + }); + }, e2.string = K2, e2.succeed = X3, e2.takeWhile = function(n4) { + return k2(n4), e2(function(t3, r3) { + for (var e3 = r3; e3 < t3.length && n4(L2(t3, e3)); ) + e3++; + return b2(e3, t3.slice(r3, e3)); + }); + }, e2.test = nn, e2.whitespace = pn, e2["fantasy-land/empty"] = rn, e2["fantasy-land/of"] = X3, e2.Binary = { bitSeq: l3, bitSeqObj: function(n4) { + s3(); + var t3 = {}, r3 = 0, e3 = a2(function(n5) { + if (E2(n5)) { + var e4 = n5; + if (2 !== e4.length) + throw new Error("[" + e4.join(", ") + "] should be length 2, got length " + e4.length); + if (P2(e4[0]), O2(e4[1]), Object.prototype.hasOwnProperty.call(t3, e4[0])) + throw new Error("duplicate key in bitSeqObj: " + e4[0]); + return t3[e4[0]] = true, r3++, e4; + } + return O2(n5), [null, n5]; + }, n4); + if (r3 < 1) + throw new Error("bitSeqObj expects at least one named pair, got [" + n4.join(", ") + "]"); + var u3 = a2(function(n5) { + return n5[0]; + }, e3); + return l3(a2(function(n5) { + return n5[1]; + }, e3)).map(function(n5) { + return i2(function(n6, t4) { + return null !== t4[0] && (n6[t4[0]] = t4[1]), n6; + }, {}, a2(function(t4, r4) { + return [t4, n5[r4]]; + }, u3)); + }); + }, byte: function(n4) { + if (s3(), O2(n4), n4 > 255) + throw new Error("Value specified to byte constructor (" + n4 + "=0x" + n4.toString(16) + ") is larger in value than a single byte."); + var t3 = (n4 > 15 ? "0x" : "0x0") + n4.toString(16); + return e2(function(r3, e3) { + var u3 = L2(r3, e3); + return u3 === n4 ? b2(e3 + 1, u3) : x2(e3, t3); + }); + }, buffer: function(n4) { + return h2("buffer", n4).map(function(n5) { + return Buffer.from(n5); + }); + }, encodedString: function(n4, t3) { + return h2("string", t3).map(function(t4) { + return t4.toString(n4); + }); + }, uintBE: d2, uint8BE: d2(1), uint16BE: d2(2), uint32BE: d2(4), uintLE: v2, uint8LE: v2(1), uint16LE: v2(2), uint32LE: v2(4), intBE: g2, int8BE: g2(1), int16BE: g2(2), int32BE: g2(4), intLE: m2, int8LE: m2(1), int16LE: m2(2), int32LE: m2(4), floatBE: h2("floatBE", 4).map(function(n4) { + return n4.readFloatBE(0); + }), floatLE: h2("floatLE", 4).map(function(n4) { + return n4.readFloatLE(0); + }), doubleBE: h2("doubleBE", 8).map(function(n4) { + return n4.readDoubleBE(0); + }), doubleLE: h2("doubleLE", 8).map(function(n4) { + return n4.readDoubleLE(0); + }) }, n3.exports = e2; + }]); + }); + })(parsimmon_umd_min); + var emojiRegex = () => { + return /(?:[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDD-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF6](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7C\uDE80-\uDE86\uDE90-\uDEAC\uDEB0-\uDEBA\uDEC0-\uDEC2\uDED0-\uDED9\uDEE0-\uDEE7]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?))/g; + }; + function normalizeDuration(dur) { + if (dur === void 0 || dur === null) + return dur; + return dur.shiftToAll().normalize(); + } + function getFileTitle(path) { + if (path.includes("/")) + path = path.substring(path.lastIndexOf("/") + 1); + if (path.endsWith(".md")) + path = path.substring(0, path.length - 3); + return path; + } + parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regex(new RegExp(emojiRegex(), "")), parsimmon_umd_min.exports.regex(/[0-9\p{Letter}_-]+/u).map((str) => str.toLocaleLowerCase()), parsimmon_umd_min.exports.whitespace.map((_2) => "-"), parsimmon_umd_min.exports.any.map((_2) => "")).many().map((result) => result.join("")); + var HEADER_CANONICALIZER = parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regex(new RegExp(emojiRegex(), "")), parsimmon_umd_min.exports.regex(/[0-9\p{Letter}_-]+/u), parsimmon_umd_min.exports.whitespace.map((_2) => " "), parsimmon_umd_min.exports.any.map((_2) => " ")).many().map((result) => { + return result.join("").split(/\s+/).join(" ").trim(); + }); + function normalizeHeaderForLink(header) { + return HEADER_CANONICALIZER.tryParse(header); + } + function renderMinimalDuration(dur) { + dur = normalizeDuration(dur); + dur = Duration.fromObject(Object.fromEntries(Object.entries(dur.toObject()).filter(([, quantity]) => quantity > 0))); + return dur.toHuman(); + } + var Values; + (function(Values2) { + function toString2(field, setting = DEFAULT_QUERY_SETTINGS, recursive = false) { + let wrapped = wrapValue(field); + if (!wrapped) + return setting.renderNullAs; + switch (wrapped.type) { + case "null": + return setting.renderNullAs; + case "string": + return wrapped.value; + case "number": + case "boolean": + return "" + wrapped.value; + case "html": + return wrapped.value.outerHTML; + case "widget": + return wrapped.value.markdown(); + case "link": + return wrapped.value.markdown(); + case "function": + return ""; + case "array": + let result = ""; + if (recursive) + result += "["; + result += wrapped.value.map((f2) => toString2(f2, setting, true)).join(", "); + if (recursive) + result += "]"; + return result; + case "object": + return "{ " + Object.entries(wrapped.value).map((e2) => e2[0] + ": " + toString2(e2[1], setting, true)).join(", ") + " }"; + case "date": + if (wrapped.value.second == 0 && wrapped.value.hour == 0 && wrapped.value.minute == 0) { + return wrapped.value.toFormat(setting.defaultDateFormat); + } + return wrapped.value.toFormat(setting.defaultDateTimeFormat); + case "duration": + return renderMinimalDuration(wrapped.value); + } + } + Values2.toString = toString2; + function wrapValue(val) { + if (isNull2(val)) + return { type: "null", value: val }; + else if (isNumber3(val)) + return { type: "number", value: val }; + else if (isString3(val)) + return { type: "string", value: val }; + else if (isBoolean2(val)) + return { type: "boolean", value: val }; + else if (isDuration(val)) + return { type: "duration", value: val }; + else if (isDate2(val)) + return { type: "date", value: val }; + else if (isWidget(val)) + return { type: "widget", value: val }; + else if (isArray2(val)) + return { type: "array", value: val }; + else if (isLink(val)) + return { type: "link", value: val }; + else if (isFunction2(val)) + return { type: "function", value: val }; + else if (isHtml(val)) + return { type: "html", value: val }; + else if (isObject2(val)) + return { type: "object", value: val }; + else + return void 0; + } + Values2.wrapValue = wrapValue; + function mapLeaves(val, func) { + if (isObject2(val)) { + let result = {}; + for (let [key, value] of Object.entries(val)) + result[key] = mapLeaves(value, func); + return result; + } else if (isArray2(val)) { + let result = []; + for (let value of val) + result.push(mapLeaves(value, func)); + return result; + } else { + return func(val); + } + } + Values2.mapLeaves = mapLeaves; + function compareValue(val1, val2, linkNormalizer) { + var _a, _b; + if (val1 === void 0) + val1 = null; + if (val2 === void 0) + val2 = null; + if (val1 === null && val2 === null) + return 0; + else if (val1 === null) + return -1; + else if (val2 === null) + return 1; + let wrap1 = wrapValue(val1); + let wrap2 = wrapValue(val2); + if (wrap1 === void 0 && wrap2 === void 0) + return 0; + else if (wrap1 === void 0) + return -1; + else if (wrap2 === void 0) + return 1; + if (wrap1.type != wrap2.type) + return wrap1.type.localeCompare(wrap2.type); + if (wrap1.value === wrap2.value) + return 0; + switch (wrap1.type) { + case "string": + return wrap1.value.localeCompare(wrap2.value); + case "number": + if (wrap1.value < wrap2.value) + return -1; + else if (wrap1.value == wrap2.value) + return 0; + return 1; + case "null": + return 0; + case "boolean": + if (wrap1.value == wrap2.value) + return 0; + else + return wrap1.value ? 1 : -1; + case "link": + let link1 = wrap1.value; + let link2 = wrap2.value; + let normalize = linkNormalizer !== null && linkNormalizer !== void 0 ? linkNormalizer : (x2) => x2; + let pathCompare = normalize(link1.path).localeCompare(normalize(link2.path)); + if (pathCompare != 0) + return pathCompare; + let typeCompare = link1.type.localeCompare(link2.type); + if (typeCompare != 0) + return typeCompare; + if (link1.subpath && !link2.subpath) + return 1; + if (!link1.subpath && link2.subpath) + return -1; + if (!link1.subpath && !link2.subpath) + return 0; + return ((_a = link1.subpath) !== null && _a !== void 0 ? _a : "").localeCompare((_b = link2.subpath) !== null && _b !== void 0 ? _b : ""); + case "date": + return wrap1.value < wrap2.value ? -1 : wrap1.value.equals(wrap2.value) ? 0 : 1; + case "duration": + return wrap1.value < wrap2.value ? -1 : wrap1.value.equals(wrap2.value) ? 0 : 1; + case "array": + let f1 = wrap1.value; + let f2 = wrap2.value; + for (let index = 0; index < Math.min(f1.length, f2.length); index++) { + let comp = compareValue(f1[index], f2[index]); + if (comp != 0) + return comp; + } + return f1.length - f2.length; + case "object": + let o1 = wrap1.value; + let o2 = wrap2.value; + let k1 = Array.from(Object.keys(o1)); + let k2 = Array.from(Object.keys(o2)); + k1.sort(); + k2.sort(); + let keyCompare = compareValue(k1, k2); + if (keyCompare != 0) + return keyCompare; + for (let key of k1) { + let comp = compareValue(o1[key], o2[key]); + if (comp != 0) + return comp; + } + return 0; + case "widget": + case "html": + case "function": + return 0; + } + } + Values2.compareValue = compareValue; + function typeOf(val) { + var _a; + return (_a = wrapValue(val)) === null || _a === void 0 ? void 0 : _a.type; + } + Values2.typeOf = typeOf; + function isTruthy(field) { + let wrapped = wrapValue(field); + if (!wrapped) + return false; + switch (wrapped.type) { + case "number": + return wrapped.value != 0; + case "string": + return wrapped.value.length > 0; + case "boolean": + return wrapped.value; + case "link": + return !!wrapped.value.path; + case "date": + return wrapped.value.toMillis() != 0; + case "duration": + return wrapped.value.as("seconds") != 0; + case "object": + return Object.keys(wrapped.value).length > 0; + case "array": + return wrapped.value.length > 0; + case "null": + return false; + case "html": + case "widget": + case "function": + return true; + } + } + Values2.isTruthy = isTruthy; + function deepCopy(field) { + if (field === null || field === void 0) + return field; + if (Values2.isArray(field)) { + return [].concat(field.map((v2) => deepCopy(v2))); + } else if (Values2.isObject(field)) { + let result = {}; + for (let [key, value] of Object.entries(field)) + result[key] = deepCopy(value); + return result; + } else { + return field; + } + } + Values2.deepCopy = deepCopy; + function isString3(val) { + return typeof val == "string"; + } + Values2.isString = isString3; + function isNumber3(val) { + return typeof val == "number"; + } + Values2.isNumber = isNumber3; + function isDate2(val) { + return val instanceof DateTime; + } + Values2.isDate = isDate2; + function isDuration(val) { + return val instanceof Duration; + } + Values2.isDuration = isDuration; + function isNull2(val) { + return val === null || val === void 0; + } + Values2.isNull = isNull2; + function isArray2(val) { + return Array.isArray(val); + } + Values2.isArray = isArray2; + function isBoolean2(val) { + return typeof val === "boolean"; + } + Values2.isBoolean = isBoolean2; + function isLink(val) { + return val instanceof Link; + } + Values2.isLink = isLink; + function isWidget(val) { + return val instanceof Widget; + } + Values2.isWidget = isWidget; + function isHtml(val) { + if (typeof HTMLElement !== "undefined") { + return val instanceof HTMLElement; + } else { + return false; + } + } + Values2.isHtml = isHtml; + function isObject2(val) { + return typeof val == "object" && !isHtml(val) && !isWidget(val) && !isArray2(val) && !isDuration(val) && !isDate2(val) && !isLink(val) && val !== void 0 && !isNull2(val); + } + Values2.isObject = isObject2; + function isFunction2(val) { + return typeof val == "function"; + } + Values2.isFunction = isFunction2; + })(Values || (Values = {})); + var Groupings; + (function(Groupings2) { + function isElementGroup(entry) { + return Values.isObject(entry) && Object.keys(entry).length == 2 && "key" in entry && "rows" in entry; + } + Groupings2.isElementGroup = isElementGroup; + function isGrouping(entry) { + for (let element2 of entry) + if (!isElementGroup(element2)) + return false; + return true; + } + Groupings2.isGrouping = isGrouping; + function count(elements) { + if (isGrouping(elements)) { + let result = 0; + for (let subgroup of elements) + result += count(subgroup.rows); + return result; + } else { + return elements.length; + } + } + Groupings2.count = count; + })(Groupings || (Groupings = {})); + var Link = class _Link { + constructor(fields) { + Object.assign(this, fields); + } + /** Create a link to a specific file. */ + static file(path, embed = false, display) { + return new _Link({ + path, + embed, + display, + subpath: void 0, + type: "file" + }); + } + static infer(linkpath, embed = false, display) { + if (linkpath.includes("#^")) { + let split = linkpath.split("#^"); + return _Link.block(split[0], split[1], embed, display); + } else if (linkpath.includes("#")) { + let split = linkpath.split("#"); + return _Link.header(split[0], split[1], embed, display); + } else + return _Link.file(linkpath, embed, display); + } + /** Create a link to a specific file and header in that file. */ + static header(path, header, embed, display) { + return new _Link({ + path, + embed, + display, + subpath: normalizeHeaderForLink(header), + type: "header" + }); + } + /** Create a link to a specific file and block in that file. */ + static block(path, blockId, embed, display) { + return new _Link({ + path, + embed, + display, + subpath: blockId, + type: "block" + }); + } + static fromObject(object) { + return new _Link(object); + } + /** Checks for link equality (i.e., that the links are pointing to the same exact location). */ + equals(other) { + if (other == void 0 || other == null) + return false; + return this.path == other.path && this.type == other.type && this.subpath == other.subpath; + } + /** Convert this link to it's markdown representation. */ + toString() { + return this.markdown(); + } + /** Convert this link to a raw object which is serialization-friendly. */ + toObject() { + return { path: this.path, type: this.type, subpath: this.subpath, display: this.display, embed: this.embed }; + } + /** Update this link with a new path. */ + //@ts-ignore; error appeared after updating Obsidian to 0.15.4; it also updated other packages but didn't say which + withPath(path) { + return new _Link(Object.assign({}, this, { path })); + } + /** Return a new link which points to the same location but with a new display value. */ + withDisplay(display) { + return new _Link(Object.assign({}, this, { display })); + } + /** Convert a file link into a link to a specific header. */ + withHeader(header) { + return _Link.header(this.path, header, this.embed, this.display); + } + /** Convert any link into a link to its file. */ + toFile() { + return _Link.file(this.path, this.embed, this.display); + } + /** Convert this link into an embedded link. */ + toEmbed() { + if (this.embed) { + return this; + } else { + let link = new _Link(this); + link.embed = true; + return link; + } + } + /** Convert this link into a non-embedded link. */ + fromEmbed() { + if (!this.embed) { + return this; + } else { + let link = new _Link(this); + link.embed = false; + return link; + } + } + /** Convert this link to markdown so it can be rendered. */ + markdown() { + let result = (this.embed ? "!" : "") + "[[" + this.obsidianLink(); + if (this.display) { + result += "|" + this.display; + } else { + result += "|" + getFileTitle(this.path); + if (this.type == "header" || this.type == "block") + result += " > " + this.subpath; + } + result += "]]"; + return result; + } + /** Convert the inner part of the link to something that Obsidian can open / understand. */ + obsidianLink() { + var _a, _b; + const escaped = this.path.replace("|", "\\|"); + if (this.type == "header") + return escaped + "#" + ((_a = this.subpath) === null || _a === void 0 ? void 0 : _a.replace("|", "\\|")); + if (this.type == "block") + return escaped + "#^" + ((_b = this.subpath) === null || _b === void 0 ? void 0 : _b.replace("|", "\\|")); + else + return escaped; + } + /** The stripped name of the file this link points to. */ + fileName() { + return getFileTitle(this.path).replace(".md", ""); + } + }; + var Widget = class { + constructor($widget) { + this.$widget = $widget; + } + }; + var ListPairWidget = class extends Widget { + constructor(key, value) { + super("dataview:list-pair"); + this.key = key; + this.value = value; + } + markdown() { + return `${Values.toString(this.key)}: ${Values.toString(this.value)}`; + } + }; + var ExternalLinkWidget = class extends Widget { + constructor(url, display) { + super("dataview:external-link"); + this.url = url; + this.display = display; + } + markdown() { + var _a; + return `[${(_a = this.display) !== null && _a !== void 0 ? _a : this.url}](${this.url})`; + } + }; + var Widgets; + (function(Widgets2) { + function listPair(key, value) { + return new ListPairWidget(key, value); + } + Widgets2.listPair = listPair; + function externalLink(url, display) { + return new ExternalLinkWidget(url, display); + } + Widgets2.externalLink = externalLink; + function isListPair(widget) { + return widget.$widget === "dataview:list-pair"; + } + Widgets2.isListPair = isListPair; + function isExternalLink(widget) { + return widget.$widget === "dataview:external-link"; + } + Widgets2.isExternalLink = isExternalLink; + function isBuiltin(widget) { + return isListPair(widget) || isExternalLink(widget); + } + Widgets2.isBuiltin = isBuiltin; + })(Widgets || (Widgets = {})); + var Fields; + (function(Fields2) { + function variable(name) { + return { type: "variable", name }; + } + Fields2.variable = variable; + function literal(value) { + return { type: "literal", value }; + } + Fields2.literal = literal; + function binaryOp(left, op, right) { + return { type: "binaryop", left, op, right }; + } + Fields2.binaryOp = binaryOp; + function index(obj, index2) { + return { type: "index", object: obj, index: index2 }; + } + Fields2.index = index; + function indexVariable(name) { + let parts = name.split("."); + let result = Fields2.variable(parts[0]); + for (let index2 = 1; index2 < parts.length; index2++) { + result = Fields2.index(result, Fields2.literal(parts[index2])); + } + return result; + } + Fields2.indexVariable = indexVariable; + function lambda(args, value) { + return { type: "lambda", arguments: args, value }; + } + Fields2.lambda = lambda; + function func(func2, args) { + return { type: "function", func: func2, arguments: args }; + } + Fields2.func = func; + function list(values) { + return { type: "list", values }; + } + Fields2.list = list; + function object(values) { + return { type: "object", values }; + } + Fields2.object = object; + function negate(child) { + return { type: "negated", child }; + } + Fields2.negate = negate; + function isCompareOp(op) { + return op == "<=" || op == "<" || op == ">" || op == ">=" || op == "!=" || op == "="; + } + Fields2.isCompareOp = isCompareOp; + Fields2.NULL = Fields2.literal(null); + })(Fields || (Fields = {})); + var Sources; + (function(Sources2) { + function tag(tag2) { + return { type: "tag", tag: tag2 }; + } + Sources2.tag = tag; + function csv(path) { + return { type: "csv", path }; + } + Sources2.csv = csv; + function folder(prefix) { + return { type: "folder", folder: prefix }; + } + Sources2.folder = folder; + function link(file, incoming) { + return { type: "link", file, direction: incoming ? "incoming" : "outgoing" }; + } + Sources2.link = link; + function binaryOp(left, op, right) { + return { type: "binaryop", left, op, right }; + } + Sources2.binaryOp = binaryOp; + function and(left, right) { + return { type: "binaryop", left, op: "&", right }; + } + Sources2.and = and; + function or(left, right) { + return { type: "binaryop", left, op: "|", right }; + } + Sources2.or = or; + function negate(child) { + return { type: "negate", child }; + } + Sources2.negate = negate; + function empty3() { + return { type: "empty" }; + } + Sources2.empty = empty3; + })(Sources || (Sources = {})); + var EMOJI_REGEX = new RegExp(emojiRegex(), ""); + var DURATION_TYPES = { + year: Duration.fromObject({ years: 1 }), + years: Duration.fromObject({ years: 1 }), + yr: Duration.fromObject({ years: 1 }), + yrs: Duration.fromObject({ years: 1 }), + month: Duration.fromObject({ months: 1 }), + months: Duration.fromObject({ months: 1 }), + mo: Duration.fromObject({ months: 1 }), + mos: Duration.fromObject({ months: 1 }), + week: Duration.fromObject({ weeks: 1 }), + weeks: Duration.fromObject({ weeks: 1 }), + wk: Duration.fromObject({ weeks: 1 }), + wks: Duration.fromObject({ weeks: 1 }), + w: Duration.fromObject({ weeks: 1 }), + day: Duration.fromObject({ days: 1 }), + days: Duration.fromObject({ days: 1 }), + d: Duration.fromObject({ days: 1 }), + hour: Duration.fromObject({ hours: 1 }), + hours: Duration.fromObject({ hours: 1 }), + hr: Duration.fromObject({ hours: 1 }), + hrs: Duration.fromObject({ hours: 1 }), + h: Duration.fromObject({ hours: 1 }), + minute: Duration.fromObject({ minutes: 1 }), + minutes: Duration.fromObject({ minutes: 1 }), + min: Duration.fromObject({ minutes: 1 }), + mins: Duration.fromObject({ minutes: 1 }), + m: Duration.fromObject({ minutes: 1 }), + second: Duration.fromObject({ seconds: 1 }), + seconds: Duration.fromObject({ seconds: 1 }), + sec: Duration.fromObject({ seconds: 1 }), + secs: Duration.fromObject({ seconds: 1 }), + s: Duration.fromObject({ seconds: 1 }) + }; + var DATE_SHORTHANDS = { + now: () => DateTime.local(), + today: () => DateTime.local().startOf("day"), + yesterday: () => DateTime.local().startOf("day").minus(Duration.fromObject({ days: 1 })), + tomorrow: () => DateTime.local().startOf("day").plus(Duration.fromObject({ days: 1 })), + sow: () => DateTime.local().startOf("week"), + "start-of-week": () => DateTime.local().startOf("week"), + eow: () => DateTime.local().endOf("week"), + "end-of-week": () => DateTime.local().endOf("week"), + soy: () => DateTime.local().startOf("year"), + "start-of-year": () => DateTime.local().startOf("year"), + eoy: () => DateTime.local().endOf("year"), + "end-of-year": () => DateTime.local().endOf("year"), + som: () => DateTime.local().startOf("month"), + "start-of-month": () => DateTime.local().startOf("month"), + eom: () => DateTime.local().endOf("month"), + "end-of-month": () => DateTime.local().endOf("month") + }; + var KEYWORDS = ["FROM", "WHERE", "LIMIT", "GROUP", "FLATTEN"]; + function splitOnUnescapedPipe(link) { + let pipe = -1; + while ((pipe = link.indexOf("|", pipe + 1)) >= 0) { + if (pipe > 0 && link[pipe - 1] == "\\") + continue; + return [link.substring(0, pipe).replace(/\\\|/g, "|"), link.substring(pipe + 1)]; + } + return [link.replace(/\\\|/g, "|"), void 0]; + } + function parseInnerLink(rawlink) { + let [link, display] = splitOnUnescapedPipe(rawlink); + return Link.infer(link, false, display); + } + function createBinaryParser(child, sep, combine) { + return parsimmon_umd_min.exports.seqMap(child, parsimmon_umd_min.exports.seq(parsimmon_umd_min.exports.optWhitespace, sep, parsimmon_umd_min.exports.optWhitespace, child).many(), (first, rest) => { + if (rest.length == 0) + return first; + let node = combine(first, rest[0][1], rest[0][3]); + for (let index = 1; index < rest.length; index++) { + node = combine(node, rest[index][1], rest[index][3]); + } + return node; + }); + } + function chainOpt(base, ...funcs) { + return parsimmon_umd_min.exports.custom((success, failure) => { + return (input, i2) => { + let result = base._(input, i2); + if (!result.status) + return result; + for (let func of funcs) { + let next = func(result.value)._(input, result.index); + if (!next.status) + return result; + result = next; + } + return result; + }; + }); + } + var EXPRESSION = parsimmon_umd_min.exports.createLanguage({ + // A floating point number; the decimal point is optional. + number: (q2) => parsimmon_umd_min.exports.regexp(/-?[0-9]+(\.[0-9]+)?/).map((str) => Number.parseFloat(str)).desc("number"), + // A quote-surrounded string which supports escape characters ('\'). + string: (q2) => parsimmon_umd_min.exports.string('"').then(parsimmon_umd_min.exports.alt(q2.escapeCharacter, parsimmon_umd_min.exports.noneOf('"\\')).atLeast(0).map((chars) => chars.join(""))).skip(parsimmon_umd_min.exports.string('"')).desc("string"), + escapeCharacter: (_2) => parsimmon_umd_min.exports.string("\\").then(parsimmon_umd_min.exports.any).map((escaped) => { + if (escaped === '"') + return '"'; + if (escaped === "\\") + return "\\"; + else + return "\\" + escaped; + }), + // A boolean true/false value. + bool: (_2) => parsimmon_umd_min.exports.regexp(/true|false|True|False/).map((str) => str.toLowerCase() == "true").desc("boolean ('true' or 'false')"), + // A tag of the form '#stuff/hello-there'. + tag: (_2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("#"), parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/[^\u2000-\u206F\u2E00-\u2E7F'!"#$%&()*+,.:;<=>?@^`{|}~\[\]\\\s]/).desc("text")).many(), (start, rest) => start + rest.join("")).desc("tag ('#hello/stuff')"), + // A variable identifier, which is alphanumeric and must start with a letter or... emoji. + identifier: (_2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/\p{Letter}/u), parsimmon_umd_min.exports.regexp(EMOJI_REGEX).desc("text")), parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/[0-9\p{Letter}_-]/u), parsimmon_umd_min.exports.regexp(EMOJI_REGEX).desc("text")).many(), (first, rest) => first + rest.join("")).desc("variable identifier"), + // An Obsidian link of the form [[]]. + link: (_2) => parsimmon_umd_min.exports.regexp(/\[\[([^\[\]]*?)\]\]/u, 1).map((linkInner) => parseInnerLink(linkInner)).desc("file link"), + // An embeddable link which can start with '!'. This overlaps with the normal negation operator, so it is only + // provided for metadata parsing. + embedLink: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("!").atMost(1), q2.link, (p2, l3) => { + if (p2.length > 0) + l3.embed = true; + return l3; + }).desc("file link"), + // Binary plus or minus operator. + binaryPlusMinus: (_2) => parsimmon_umd_min.exports.regexp(/\+|-/).map((str) => str).desc("'+' or '-'"), + // Binary times or divide operator. + binaryMulDiv: (_2) => parsimmon_umd_min.exports.regexp(/\*|\/|%/).map((str) => str).desc("'*' or '/' or '%'"), + // Binary comparison operator. + binaryCompareOp: (_2) => parsimmon_umd_min.exports.regexp(/>=|<=|!=|>|<|=/).map((str) => str).desc("'>=' or '<=' or '!=' or '=' or '>' or '<'"), + // Binary boolean combination operator. + binaryBooleanOp: (_2) => parsimmon_umd_min.exports.regexp(/and|or|&|\|/i).map((str) => { + if (str.toLowerCase() == "and") + return "&"; + else if (str.toLowerCase() == "or") + return "|"; + else + return str; + }).desc("'and' or 'or'"), + // A date which can be YYYY-MM[-DDTHH:mm:ss]. + rootDate: (_2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/\d{4}/), parsimmon_umd_min.exports.string("-"), parsimmon_umd_min.exports.regexp(/\d{2}/), (year, _3, month) => { + return DateTime.fromObject({ year: Number.parseInt(year), month: Number.parseInt(month) }); + }).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"), + dateShorthand: (_2) => parsimmon_umd_min.exports.alt(...Object.keys(DATE_SHORTHANDS).sort((a2, b2) => b2.length - a2.length).map(parsimmon_umd_min.exports.string)), + date: (q2) => chainOpt(q2.rootDate, (ym) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("-"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_2, day) => ym.set({ day: Number.parseInt(day) })), (ymd) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("T"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_2, hour) => ymd.set({ hour: Number.parseInt(hour) })), (ymdh) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string(":"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_2, minute) => ymdh.set({ minute: Number.parseInt(minute) })), (ymdhm) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string(":"), parsimmon_umd_min.exports.regexp(/\d{2}/), (_2, second) => ymdhm.set({ second: Number.parseInt(second) })), (ymdhms) => parsimmon_umd_min.exports.alt( + parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("."), parsimmon_umd_min.exports.regexp(/\d{3}/), (_2, millisecond) => ymdhms.set({ millisecond: Number.parseInt(millisecond) })), + parsimmon_umd_min.exports.succeed(ymdhms) + // pass + ), (dt2) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("+").or(parsimmon_umd_min.exports.string("-")), parsimmon_umd_min.exports.regexp(/\d{1,2}(:\d{2})?/), (pm, hr) => dt2.setZone("UTC" + pm + hr, { keepLocalTime: true })), parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("Z"), () => dt2.setZone("utc", { keepLocalTime: true })), parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("["), parsimmon_umd_min.exports.regexp(/[0-9A-Za-z+-\/]+/u), parsimmon_umd_min.exports.string("]"), (_a, zone, _b) => dt2.setZone(zone, { keepLocalTime: true })))).assert((dt2) => dt2.isValid, "valid date").desc("date in format YYYY-MM[-DDTHH-MM-SS.MS]"), + // A date, plus various shorthand times of day it could be. + datePlus: (q2) => parsimmon_umd_min.exports.alt(q2.dateShorthand.map((d2) => DATE_SHORTHANDS[d2]()), q2.date).desc("date in format YYYY-MM[-DDTHH-MM-SS.MS] or in shorthand"), + // A duration of time. + durationType: (_2) => parsimmon_umd_min.exports.alt(...Object.keys(DURATION_TYPES).sort((a2, b2) => b2.length - a2.length).map(parsimmon_umd_min.exports.string)), + duration: (q2) => parsimmon_umd_min.exports.seqMap(q2.number, parsimmon_umd_min.exports.optWhitespace, q2.durationType, (count, _2, t2) => DURATION_TYPES[t2].mapUnits((x2) => x2 * count)).sepBy1(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace).or(parsimmon_umd_min.exports.optWhitespace)).map((durations) => durations.reduce((p2, c2) => p2.plus(c2))).desc("duration like 4hr2min"), + // A raw null value. + rawNull: (_2) => parsimmon_umd_min.exports.string("null"), + // Source parsing. + tagSource: (q2) => q2.tag.map((tag) => Sources.tag(tag)), + csvSource: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("csv(").skip(parsimmon_umd_min.exports.optWhitespace), q2.string, parsimmon_umd_min.exports.string(")"), (_1, path, _2) => Sources.csv(path)), + linkIncomingSource: (q2) => q2.link.map((link) => Sources.link(link.path, true)), + linkOutgoingSource: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("outgoing(").skip(parsimmon_umd_min.exports.optWhitespace), q2.link, parsimmon_umd_min.exports.string(")"), (_1, link, _2) => Sources.link(link.path, false)), + folderSource: (q2) => q2.string.map((str) => Sources.folder(str)), + parensSource: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("("), parsimmon_umd_min.exports.optWhitespace, q2.source, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (_1, _2, field, _3, _4) => field), + negateSource: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.string("-"), parsimmon_umd_min.exports.string("!")), q2.atomSource, (_2, source) => Sources.negate(source)), + atomSource: (q2) => parsimmon_umd_min.exports.alt(q2.parensSource, q2.negateSource, q2.linkOutgoingSource, q2.linkIncomingSource, q2.folderSource, q2.tagSource, q2.csvSource), + binaryOpSource: (q2) => createBinaryParser(q2.atomSource, q2.binaryBooleanOp.map((s3) => s3), Sources.binaryOp), + source: (q2) => q2.binaryOpSource, + // Field parsing. + variableField: (q2) => q2.identifier.chain((r2) => { + if (KEYWORDS.includes(r2.toUpperCase())) { + return parsimmon_umd_min.exports.fail("Variable fields cannot be a keyword (" + KEYWORDS.join(" or ") + ")"); + } else { + return parsimmon_umd_min.exports.succeed(Fields.variable(r2)); + } + }).desc("variable"), + numberField: (q2) => q2.number.map((val) => Fields.literal(val)).desc("number"), + stringField: (q2) => q2.string.map((val) => Fields.literal(val)).desc("string"), + boolField: (q2) => q2.bool.map((val) => Fields.literal(val)).desc("boolean"), + dateField: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("date("), parsimmon_umd_min.exports.optWhitespace, q2.datePlus, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (prefix, _1, date2, _2, postfix) => Fields.literal(date2)).desc("date"), + durationField: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("dur("), parsimmon_umd_min.exports.optWhitespace, q2.duration, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (prefix, _1, dur, _2, postfix) => Fields.literal(dur)).desc("duration"), + nullField: (q2) => q2.rawNull.map((_2) => Fields.NULL), + linkField: (q2) => q2.link.map((f2) => Fields.literal(f2)), + listField: (q2) => q2.field.sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)).wrap(parsimmon_umd_min.exports.string("[").skip(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.optWhitespace.then(parsimmon_umd_min.exports.string("]"))).map((l3) => Fields.list(l3)).desc("list ('[1, 2, 3]')"), + objectField: (q2) => parsimmon_umd_min.exports.seqMap(q2.identifier.or(q2.string), parsimmon_umd_min.exports.string(":").trim(parsimmon_umd_min.exports.optWhitespace), q2.field, (name, _sep, value) => { + return { name, value }; + }).sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)).wrap(parsimmon_umd_min.exports.string("{").skip(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.optWhitespace.then(parsimmon_umd_min.exports.string("}"))).map((vals) => { + let res = {}; + for (let entry of vals) + res[entry.name] = entry.value; + return Fields.object(res); + }).desc("object ('{ a: 1, b: 2 }')"), + atomInlineField: (q2) => parsimmon_umd_min.exports.alt(q2.date, q2.duration.map((d2) => normalizeDuration(d2)), q2.string, q2.tag, q2.embedLink, q2.bool, q2.number, q2.rawNull), + inlineFieldList: (q2) => q2.atomInlineField.sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace).lookahead(q2.atomInlineField)), + inlineField: (q2) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.seqMap(q2.atomInlineField, parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace), q2.inlineFieldList, (f2, _s, l3) => [f2].concat(l3)), q2.atomInlineField), + atomField: (q2) => parsimmon_umd_min.exports.alt( + // Place embed links above negated fields as they are the special parser case '![[thing]]' and are generally unambigious. + q2.embedLink.map((l3) => Fields.literal(l3)), + q2.negatedField, + q2.linkField, + q2.listField, + q2.objectField, + q2.lambdaField, + q2.parensField, + q2.boolField, + q2.numberField, + q2.stringField, + q2.dateField, + q2.durationField, + q2.nullField, + q2.variableField + ), + indexField: (q2) => parsimmon_umd_min.exports.seqMap(q2.atomField, parsimmon_umd_min.exports.alt(q2.dotPostfix, q2.indexPostfix, q2.functionPostfix).many(), (obj, postfixes) => { + let result = obj; + for (let post of postfixes) { + switch (post.type) { + case "dot": + result = Fields.index(result, Fields.literal(post.field)); + break; + case "index": + result = Fields.index(result, post.field); + break; + case "function": + result = Fields.func(result, post.fields); + break; + } + } + return result; + }), + negatedField: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("!"), q2.indexField, (_2, field) => Fields.negate(field)).desc("negated field"), + parensField: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("("), parsimmon_umd_min.exports.optWhitespace, q2.field, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (_1, _2, field, _3, _4) => field), + lambdaField: (q2) => parsimmon_umd_min.exports.seqMap(q2.identifier.sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)).wrap(parsimmon_umd_min.exports.string("(").trim(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.string(")").trim(parsimmon_umd_min.exports.optWhitespace)), parsimmon_umd_min.exports.string("=>").trim(parsimmon_umd_min.exports.optWhitespace), q2.field, (ident, _ignore, value) => { + return { type: "lambda", arguments: ident, value }; + }), + dotPostfix: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("."), q2.identifier, (_2, field) => { + return { type: "dot", field }; + }), + indexPostfix: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("["), parsimmon_umd_min.exports.optWhitespace, q2.field, parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string("]"), (_2, _22, field, _3, _4) => { + return { type: "index", field }; + }), + functionPostfix: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.string("("), parsimmon_umd_min.exports.optWhitespace, q2.field.sepBy(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)), parsimmon_umd_min.exports.optWhitespace, parsimmon_umd_min.exports.string(")"), (_2, _1, fields, _22, _3) => { + return { type: "function", fields }; + }), + // The precedence hierarchy of operators - multiply/divide, add/subtract, compare, and then boolean operations. + binaryMulDivField: (q2) => createBinaryParser(q2.indexField, q2.binaryMulDiv, Fields.binaryOp), + binaryPlusMinusField: (q2) => createBinaryParser(q2.binaryMulDivField, q2.binaryPlusMinus, Fields.binaryOp), + binaryCompareField: (q2) => createBinaryParser(q2.binaryPlusMinusField, q2.binaryCompareOp, Fields.binaryOp), + binaryBooleanField: (q2) => createBinaryParser(q2.binaryCompareField, q2.binaryBooleanOp, Fields.binaryOp), + binaryOpField: (q2) => q2.binaryBooleanField, + field: (q2) => q2.binaryOpField + }); + function parseField(text2) { + try { + return Result.success(EXPRESSION.field.tryParse(text2)); + } catch (error) { + return Result.failure("" + error); + } + } + var QueryFields; + (function(QueryFields2) { + function named(name, field) { + return { name, field }; + } + QueryFields2.named = named; + function sortBy2(field, dir) { + return { field, direction: dir }; + } + QueryFields2.sortBy = sortBy2; + })(QueryFields || (QueryFields = {})); + function captureRaw(base) { + return parsimmon_umd_min.exports.custom((success, failure) => { + return (input, i2) => { + let result = base._(input, i2); + if (!result.status) + return result; + return Object.assign({}, result, { value: [result.value, input.substring(i2, result.index)] }); + }; + }); + } + function stripNewlines(text2) { + return text2.split(/[\r\n]+/).map((t2) => t2.trim()).join(""); + } + var QUERY_LANGUAGE = parsimmon_umd_min.exports.createLanguage({ + // Simple atom parsing, like words, identifiers, numbers. + queryType: (q2) => parsimmon_umd_min.exports.alt(parsimmon_umd_min.exports.regexp(/TABLE|LIST|TASK|CALENDAR/i)).map((str) => str.toLowerCase()).desc("query type ('TABLE', 'LIST', 'TASK', or 'CALENDAR')"), + explicitNamedField: (q2) => parsimmon_umd_min.exports.seqMap(EXPRESSION.field.skip(parsimmon_umd_min.exports.whitespace), parsimmon_umd_min.exports.regexp(/AS/i).skip(parsimmon_umd_min.exports.whitespace), EXPRESSION.identifier.or(EXPRESSION.string), (field, _as, ident) => QueryFields.named(ident, field)), + namedField: (q2) => parsimmon_umd_min.exports.alt(q2.explicitNamedField, captureRaw(EXPRESSION.field).map(([value, text2]) => QueryFields.named(stripNewlines(text2), value))), + sortField: (q2) => parsimmon_umd_min.exports.seqMap(EXPRESSION.field.skip(parsimmon_umd_min.exports.optWhitespace), parsimmon_umd_min.exports.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1), (field, dir) => { + let direction = dir.length == 0 ? "ascending" : dir[0].toLowerCase(); + if (direction == "desc") + direction = "descending"; + if (direction == "asc") + direction = "ascending"; + return { + field, + direction + }; + }), + headerClause: (q2) => q2.queryType.skip(parsimmon_umd_min.exports.whitespace).chain((qtype) => { + switch (qtype) { + case "table": + return parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/WITHOUT\s+ID/i).skip(parsimmon_umd_min.exports.optWhitespace).atMost(1), parsimmon_umd_min.exports.sepBy(q2.namedField, parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)), (withoutId, fields) => { + return { type: "table", fields, showId: withoutId.length == 0 }; + }); + case "list": + return parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/WITHOUT\s+ID/i).skip(parsimmon_umd_min.exports.optWhitespace).atMost(1), EXPRESSION.field.atMost(1), (withoutId, format) => { + return { + type: "list", + format: format.length == 1 ? format[0] : void 0, + showId: withoutId.length == 0 + }; + }); + case "task": + return parsimmon_umd_min.exports.succeed({ type: "task" }); + case "calendar": + return parsimmon_umd_min.exports.seqMap(q2.namedField, (field) => { + return { + type: "calendar", + showId: true, + field + }; + }); + default: + return parsimmon_umd_min.exports.fail(`Unrecognized query type '${qtype}'`); + } + }).desc("TABLE or LIST or TASK or CALENDAR"), + fromClause: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/FROM/i), parsimmon_umd_min.exports.whitespace, EXPRESSION.source, (_1, _2, source) => source), + whereClause: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/WHERE/i), parsimmon_umd_min.exports.whitespace, EXPRESSION.field, (where, _2, field) => { + return { type: "where", clause: field }; + }).desc("WHERE "), + sortByClause: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/SORT/i), parsimmon_umd_min.exports.whitespace, q2.sortField.sepBy1(parsimmon_umd_min.exports.string(",").trim(parsimmon_umd_min.exports.optWhitespace)), (sort, _1, fields) => { + return { type: "sort", fields }; + }).desc("SORT field [ASC/DESC]"), + limitClause: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/LIMIT/i), parsimmon_umd_min.exports.whitespace, EXPRESSION.field, (limit, _1, field) => { + return { type: "limit", amount: field }; + }).desc("LIMIT "), + flattenClause: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/FLATTEN/i).skip(parsimmon_umd_min.exports.whitespace), q2.namedField, (_2, field) => { + return { type: "flatten", field }; + }).desc("FLATTEN [AS ]"), + groupByClause: (q2) => parsimmon_umd_min.exports.seqMap(parsimmon_umd_min.exports.regexp(/GROUP BY/i).skip(parsimmon_umd_min.exports.whitespace), q2.namedField, (_2, field) => { + return { type: "group", field }; + }).desc("GROUP BY [AS ]"), + // Full query parsing. + clause: (q2) => parsimmon_umd_min.exports.alt(q2.fromClause, q2.whereClause, q2.sortByClause, q2.limitClause, q2.groupByClause, q2.flattenClause), + query: (q2) => parsimmon_umd_min.exports.seqMap(q2.headerClause.trim(parsimmon_umd_min.exports.optWhitespace), q2.fromClause.trim(parsimmon_umd_min.exports.optWhitespace).atMost(1), q2.clause.trim(parsimmon_umd_min.exports.optWhitespace).many(), (header, from2, clauses) => { + return { + header, + source: from2.length == 0 ? Sources.folder("") : from2[0], + operations: clauses, + settings: DEFAULT_QUERY_SETTINGS + }; + }) + }); + var getAPI3 = (app) => { + var _a; + if (app) + return (_a = app.plugins.plugins.dataview) === null || _a === void 0 ? void 0 : _a.api; + else + return window.DataviewAPI; + }; + var isPluginEnabled = (app) => app.plugins.enabledPlugins.has("dataview"); + exports.DATE_SHORTHANDS = DATE_SHORTHANDS; + exports.DURATION_TYPES = DURATION_TYPES; + exports.EXPRESSION = EXPRESSION; + exports.KEYWORDS = KEYWORDS; + exports.QUERY_LANGUAGE = QUERY_LANGUAGE; + exports.getAPI = getAPI3; + exports.isPluginEnabled = isPluginEnabled; + exports.parseField = parseField; + } +}); + +// node_modules/typed-assert/build/index.js +var require_build = __commonJS({ + "node_modules/typed-assert/build/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.check = exports.isPromise = exports.isInstanceOf = exports.isOneOfType = exports.isOneOf = exports.isOptionOfType = exports.isArrayOfType = exports.isRecordOfType = exports.isArray = exports.isRecordWithKeys = exports.isRecord = exports.isDate = exports.isString = exports.isNumber = exports.isBoolean = exports.isExactly = exports.isNotVoid = exports.isNotUndefined = exports.isNotNull = exports.isNever = exports.isUnknown = exports.safeJsonParse = exports.setBaseAssert = exports.assert = exports.defaultAssert = void 0; + var expectedToBe = (type) => `expected to be ${type}`; + var defaultAssert = (condition, message) => { + if (!condition) { + throw new TypeError(message); + } + }; + exports.defaultAssert = defaultAssert; + var baseAssert = exports.defaultAssert; + var assert = (condition, message) => baseAssert(condition, message); + exports.assert = assert; + function setBaseAssert(assert2) { + if (assert2) { + baseAssert = assert2; + } + } + exports.setBaseAssert = setBaseAssert; + var safeJsonParse = (json) => JSON.parse(json); + exports.safeJsonParse = safeJsonParse; + function isUnknown(_input) { + return true; + } + exports.isUnknown = isUnknown; + function isNever(_input, message = expectedToBe("unreachable")) { + throw new TypeError(message); + } + exports.isNever = isNever; + function isNotNull(input, message = expectedToBe("not null")) { + (0, exports.assert)(input !== null, message); + } + exports.isNotNull = isNotNull; + function isNotUndefined(input, message = expectedToBe("not undefined")) { + (0, exports.assert)(input !== void 0, message); + } + exports.isNotUndefined = isNotUndefined; + function isNotVoid4(input, message = expectedToBe("neither null nor undefined")) { + (0, exports.assert)(input !== null && input !== void 0, message); + } + exports.isNotVoid = isNotVoid4; + function isExactly(input, value, message = expectedToBe(`exactly ${value}`)) { + (0, exports.assert)(input === value, message); + } + exports.isExactly = isExactly; + function isBoolean2(input, message = expectedToBe("a boolean")) { + (0, exports.assert)(typeof input === "boolean", message); + } + exports.isBoolean = isBoolean2; + function isNumber2(input, message = expectedToBe("a number")) { + (0, exports.assert)(typeof input === "number", message); + } + exports.isNumber = isNumber2; + function isString2(input, message = expectedToBe("a string")) { + (0, exports.assert)(typeof input === "string", message); + } + exports.isString = isString2; + function isDate(input, message = expectedToBe("a Date")) { + (0, exports.assert)(input instanceof Date, message); + } + exports.isDate = isDate; + function isRecord(input, message = expectedToBe("a record")) { + (0, exports.assert)(typeof input === "object", message); + isNotNull(input, message); + for (const key of Object.keys(input)) { + isString2(key, message); + } + } + exports.isRecord = isRecord; + function isRecordWithKeys(input, keys2, message = expectedToBe(`a record with keys ${keys2.join(", ")}`)) { + isRecord(input, message); + for (const key of keys2) { + isNotUndefined(input[key]); + } + } + exports.isRecordWithKeys = isRecordWithKeys; + function isArray2(input, message = expectedToBe("an array")) { + (0, exports.assert)(Array.isArray(input), message); + } + exports.isArray = isArray2; + function isRecordOfType(input, assertT, message = expectedToBe("a record of given type"), itemMessage = expectedToBe("of given type")) { + isRecord(input, message); + for (const item of Object.values(input)) { + assertT(item, itemMessage); + } + } + exports.isRecordOfType = isRecordOfType; + function isArrayOfType(input, assertT, message = expectedToBe("an array of given type"), itemMessage = expectedToBe("of given type")) { + isArray2(input, message); + for (const item of input) { + assertT(item, itemMessage); + } + } + exports.isArrayOfType = isArrayOfType; + function isOptionOfType(input, assertT, message = expectedToBe("option of given type")) { + if (input === void 0) { + return; + } + assertT(input, message); + } + exports.isOptionOfType = isOptionOfType; + function isOneOf(input, values, message = expectedToBe(`one of ${values.join(", ")}`)) { + (0, exports.assert)(values.includes(input), message); + } + exports.isOneOf = isOneOf; + function isOneOfType(input, assertT, message = expectedToBe(`one of type`), itemMessage) { + for (const assert2 of assertT) { + try { + assert2(input, itemMessage); + return; + } catch (_2) { + } + } + throw new TypeError(message); + } + exports.isOneOfType = isOneOfType; + function isInstanceOf2(input, constructor, message = expectedToBe("an instance of given constructor")) { + (0, exports.assert)(input instanceof constructor, message); + } + exports.isInstanceOf = isInstanceOf2; + function isPromise(input, message = expectedToBe("a promise")) { + isInstanceOf2(input, Promise, message); + } + exports.isPromise = isPromise; + function check(assertT) { + return (input) => { + try { + assertT(input); + return true; + } catch (_2) { + return false; + } + }; + } + exports.check = check; + } +}); + +// node_modules/lodash/lodash.min.js +var require_lodash_min = __commonJS({ + "node_modules/lodash/lodash.min.js"(exports, module2) { + (function() { + function n2(n3, t3, r3) { + switch (r3.length) { + case 0: + return n3.call(t3); + case 1: + return n3.call(t3, r3[0]); + case 2: + return n3.call(t3, r3[0], r3[1]); + case 3: + return n3.call(t3, r3[0], r3[1], r3[2]); + } + return n3.apply(t3, r3); + } + function t2(n3, t3, r3, e3) { + for (var u3 = -1, i3 = null == n3 ? 0 : n3.length; ++u3 < i3; ) { + var o3 = n3[u3]; + t3(e3, o3, r3(o3), n3); + } + return e3; + } + function r2(n3, t3) { + for (var r3 = -1, e3 = null == n3 ? 0 : n3.length; ++r3 < e3 && t3(n3[r3], r3, n3) !== false; ) + ; + return n3; + } + function e2(n3, t3) { + for (var r3 = null == n3 ? 0 : n3.length; r3-- && t3(n3[r3], r3, n3) !== false; ) + ; + return n3; + } + function u2(n3, t3) { + for (var r3 = -1, e3 = null == n3 ? 0 : n3.length; ++r3 < e3; ) + if (!t3(n3[r3], r3, n3)) + return false; + return true; + } + function i2(n3, t3) { + for (var r3 = -1, e3 = null == n3 ? 0 : n3.length, u3 = 0, i3 = []; ++r3 < e3; ) { + var o3 = n3[r3]; + t3(o3, r3, n3) && (i3[u3++] = o3); + } + return i3; + } + function o2(n3, t3) { + return !!(null == n3 ? 0 : n3.length) && y2(n3, t3, 0) > -1; + } + function f2(n3, t3, r3) { + for (var e3 = -1, u3 = null == n3 ? 0 : n3.length; ++e3 < u3; ) + if (r3(t3, n3[e3])) + return true; + return false; + } + function c2(n3, t3) { + for (var r3 = -1, e3 = null == n3 ? 0 : n3.length, u3 = Array(e3); ++r3 < e3; ) + u3[r3] = t3(n3[r3], r3, n3); + return u3; + } + function a2(n3, t3) { + for (var r3 = -1, e3 = t3.length, u3 = n3.length; ++r3 < e3; ) + n3[u3 + r3] = t3[r3]; + return n3; + } + function l2(n3, t3, r3, e3) { + var u3 = -1, i3 = null == n3 ? 0 : n3.length; + for (e3 && i3 && (r3 = n3[++u3]); ++u3 < i3; ) + r3 = t3(r3, n3[u3], u3, n3); + return r3; + } + function s2(n3, t3, r3, e3) { + var u3 = null == n3 ? 0 : n3.length; + for (e3 && u3 && (r3 = n3[--u3]); u3--; ) + r3 = t3(r3, n3[u3], u3, n3); + return r3; + } + function h2(n3, t3) { + for (var r3 = -1, e3 = null == n3 ? 0 : n3.length; ++r3 < e3; ) + if (t3(n3[r3], r3, n3)) + return true; + return false; + } + function p2(n3) { + return n3.split(""); + } + function _2(n3) { + return n3.match($t2) || []; + } + function v2(n3, t3, r3) { + var e3; + return r3(n3, function(n4, r4, u3) { + if (t3(n4, r4, u3)) + return e3 = r4, false; + }), e3; + } + function g2(n3, t3, r3, e3) { + for (var u3 = n3.length, i3 = r3 + (e3 ? 1 : -1); e3 ? i3-- : ++i3 < u3; ) + if (t3(n3[i3], i3, n3)) + return i3; + return -1; + } + function y2(n3, t3, r3) { + return t3 === t3 ? Z2(n3, t3, r3) : g2(n3, b2, r3); + } + function d2(n3, t3, r3, e3) { + for (var u3 = r3 - 1, i3 = n3.length; ++u3 < i3; ) + if (e3(n3[u3], t3)) + return u3; + return -1; + } + function b2(n3) { + return n3 !== n3; + } + function w2(n3, t3) { + var r3 = null == n3 ? 0 : n3.length; + return r3 ? k2(n3, t3) / r3 : Cn; + } + function m2(n3) { + return function(t3) { + return null == t3 ? X3 : t3[n3]; + }; + } + function x2(n3) { + return function(t3) { + return null == n3 ? X3 : n3[t3]; + }; + } + function j2(n3, t3, r3, e3, u3) { + return u3(n3, function(n4, u4, i3) { + r3 = e3 ? (e3 = false, n4) : t3(r3, n4, u4, i3); + }), r3; + } + function A2(n3, t3) { + var r3 = n3.length; + for (n3.sort(t3); r3--; ) + n3[r3] = n3[r3].value; + return n3; + } + function k2(n3, t3) { + for (var r3, e3 = -1, u3 = n3.length; ++e3 < u3; ) { + var i3 = t3(n3[e3]); + i3 !== X3 && (r3 = r3 === X3 ? i3 : r3 + i3); + } + return r3; + } + function O2(n3, t3) { + for (var r3 = -1, e3 = Array(n3); ++r3 < n3; ) + e3[r3] = t3(r3); + return e3; + } + function I2(n3, t3) { + return c2(t3, function(t4) { + return [t4, n3[t4]]; + }); + } + function R2(n3) { + return n3 ? n3.slice(0, H2(n3) + 1).replace(Lt, "") : n3; + } + function z2(n3) { + return function(t3) { + return n3(t3); + }; + } + function E2(n3, t3) { + return c2(t3, function(t4) { + return n3[t4]; + }); + } + function S2(n3, t3) { + return n3.has(t3); + } + function W2(n3, t3) { + for (var r3 = -1, e3 = n3.length; ++r3 < e3 && y2(t3, n3[r3], 0) > -1; ) + ; + return r3; + } + function L2(n3, t3) { + for (var r3 = n3.length; r3-- && y2(t3, n3[r3], 0) > -1; ) + ; + return r3; + } + function C2(n3, t3) { + for (var r3 = n3.length, e3 = 0; r3--; ) + n3[r3] === t3 && ++e3; + return e3; + } + function U2(n3) { + return "\\" + Yr[n3]; + } + function B2(n3, t3) { + return null == n3 ? X3 : n3[t3]; + } + function T2(n3) { + return Nr.test(n3); + } + function $2(n3) { + return Pr.test(n3); + } + function D2(n3) { + for (var t3, r3 = []; !(t3 = n3.next()).done; ) + r3.push(t3.value); + return r3; + } + function M2(n3) { + var t3 = -1, r3 = Array(n3.size); + return n3.forEach(function(n4, e3) { + r3[++t3] = [e3, n4]; + }), r3; + } + function F2(n3, t3) { + return function(r3) { + return n3(t3(r3)); + }; + } + function N2(n3, t3) { + for (var r3 = -1, e3 = n3.length, u3 = 0, i3 = []; ++r3 < e3; ) { + var o3 = n3[r3]; + o3 !== t3 && o3 !== cn || (n3[r3] = cn, i3[u3++] = r3); + } + return i3; + } + function P2(n3) { + var t3 = -1, r3 = Array(n3.size); + return n3.forEach(function(n4) { + r3[++t3] = n4; + }), r3; + } + function q2(n3) { + var t3 = -1, r3 = Array(n3.size); + return n3.forEach(function(n4) { + r3[++t3] = [n4, n4]; + }), r3; + } + function Z2(n3, t3, r3) { + for (var e3 = r3 - 1, u3 = n3.length; ++e3 < u3; ) + if (n3[e3] === t3) + return e3; + return -1; + } + function K2(n3, t3, r3) { + for (var e3 = r3 + 1; e3--; ) + if (n3[e3] === t3) + return e3; + return e3; + } + function V2(n3) { + return T2(n3) ? J2(n3) : _e(n3); + } + function G2(n3) { + return T2(n3) ? Y2(n3) : p2(n3); + } + function H2(n3) { + for (var t3 = n3.length; t3-- && Ct2.test(n3.charAt(t3)); ) + ; + return t3; + } + function J2(n3) { + for (var t3 = Mr.lastIndex = 0; Mr.test(n3); ) + ++t3; + return t3; + } + function Y2(n3) { + return n3.match(Mr) || []; + } + function Q2(n3) { + return n3.match(Fr) || []; + } + var X3, nn = "4.17.21", tn = 200, rn = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", en = "Expected a function", un = "Invalid `variable` option passed into `_.template`", on = "__lodash_hash_undefined__", fn = 500, cn = "__lodash_placeholder__", an = 1, ln = 2, sn = 4, hn = 1, pn = 2, _n = 1, vn = 2, gn = 4, yn = 8, dn = 16, bn = 32, wn = 64, mn = 128, xn = 256, jn = 512, An = 30, kn = "...", On = 800, In = 16, Rn = 1, zn = 2, En = 3, Sn = 1 / 0, Wn = 9007199254740991, Ln = 17976931348623157e292, Cn = NaN, Un = 4294967295, Bn = Un - 1, Tn = Un >>> 1, $n = [["ary", mn], ["bind", _n], ["bindKey", vn], ["curry", yn], ["curryRight", dn], ["flip", jn], ["partial", bn], ["partialRight", wn], ["rearg", xn]], Dn = "[object Arguments]", Mn = "[object Array]", Fn = "[object AsyncFunction]", Nn = "[object Boolean]", Pn = "[object Date]", qn = "[object DOMException]", Zn = "[object Error]", Kn = "[object Function]", Vn = "[object GeneratorFunction]", Gn = "[object Map]", Hn = "[object Number]", Jn = "[object Null]", Yn = "[object Object]", Qn = "[object Promise]", Xn = "[object Proxy]", nt2 = "[object RegExp]", tt2 = "[object Set]", rt2 = "[object String]", et2 = "[object Symbol]", ut2 = "[object Undefined]", it2 = "[object WeakMap]", ot2 = "[object WeakSet]", ft2 = "[object ArrayBuffer]", ct2 = "[object DataView]", at2 = "[object Float32Array]", lt2 = "[object Float64Array]", st2 = "[object Int8Array]", ht2 = "[object Int16Array]", pt2 = "[object Int32Array]", _t2 = "[object Uint8Array]", vt2 = "[object Uint8ClampedArray]", gt2 = "[object Uint16Array]", yt2 = "[object Uint32Array]", dt2 = /\b__p \+= '';/g, bt2 = /\b(__p \+=) '' \+/g, wt2 = /(__e\(.*?\)|\b__t\)) \+\n'';/g, mt2 = /&(?:amp|lt|gt|quot|#39);/g, xt2 = /[&<>"']/g, jt = RegExp(mt2.source), At2 = RegExp(xt2.source), kt = /<%-([\s\S]+?)%>/g, Ot2 = /<%([\s\S]+?)%>/g, It = /<%=([\s\S]+?)%>/g, Rt = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, zt2 = /^\w*$/, Et = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, St2 = /[\\^$.*+?()[\]{}|]/g, Wt = RegExp(St2.source), Lt = /^\s+/, Ct2 = /\s/, Ut = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, Bt = /\{\n\/\* \[wrapped with (.+)\] \*/, Tt = /,? & /, $t2 = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, Dt = /[()=,{}\[\]\/\s]/, Mt = /\\(\\)?/g, Ft = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, Nt = /\w*$/, Pt = /^[-+]0x[0-9a-f]+$/i, qt = /^0b[01]+$/i, Zt = /^\[object .+?Constructor\]$/, Kt = /^0o[0-7]+$/i, Vt = /^(?:0|[1-9]\d*)$/, Gt = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, Ht2 = /($^)/, Jt = /['\n\r\u2028\u2029\\]/g, Yt = "\\ud800-\\udfff", Qt = "\\u0300-\\u036f", Xt = "\\ufe20-\\ufe2f", nr = "\\u20d0-\\u20ff", tr = Qt + Xt + nr, rr = "\\u2700-\\u27bf", er = "a-z\\xdf-\\xf6\\xf8-\\xff", ur = "\\xac\\xb1\\xd7\\xf7", ir = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", or = "\\u2000-\\u206f", fr = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", cr = "A-Z\\xc0-\\xd6\\xd8-\\xde", ar = "\\ufe0e\\ufe0f", lr = ur + ir + or + fr, sr = "['\u2019]", hr = "[" + Yt + "]", pr = "[" + lr + "]", _r = "[" + tr + "]", vr = "\\d+", gr = "[" + rr + "]", yr = "[" + er + "]", dr = "[^" + Yt + lr + vr + rr + er + cr + "]", br = "\\ud83c[\\udffb-\\udfff]", wr = "(?:" + _r + "|" + br + ")", mr = "[^" + Yt + "]", xr = "(?:\\ud83c[\\udde6-\\uddff]){2}", jr = "[\\ud800-\\udbff][\\udc00-\\udfff]", Ar = "[" + cr + "]", kr = "\\u200d", Or = "(?:" + yr + "|" + dr + ")", Ir = "(?:" + Ar + "|" + dr + ")", Rr = "(?:" + sr + "(?:d|ll|m|re|s|t|ve))?", zr = "(?:" + sr + "(?:D|LL|M|RE|S|T|VE))?", Er = wr + "?", Sr = "[" + ar + "]?", Wr = "(?:" + kr + "(?:" + [mr, xr, jr].join("|") + ")" + Sr + Er + ")*", Lr = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", Cr = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", Ur = Sr + Er + Wr, Br = "(?:" + [gr, xr, jr].join("|") + ")" + Ur, Tr = "(?:" + [mr + _r + "?", _r, xr, jr, hr].join("|") + ")", $r = RegExp(sr, "g"), Dr = RegExp(_r, "g"), Mr = RegExp(br + "(?=" + br + ")|" + Tr + Ur, "g"), Fr = RegExp([Ar + "?" + yr + "+" + Rr + "(?=" + [pr, Ar, "$"].join("|") + ")", Ir + "+" + zr + "(?=" + [pr, Ar + Or, "$"].join("|") + ")", Ar + "?" + Or + "+" + Rr, Ar + "+" + zr, Cr, Lr, vr, Br].join("|"), "g"), Nr = RegExp("[" + kr + Yt + tr + ar + "]"), Pr = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, qr = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"], Zr = -1, Kr = {}; + Kr[at2] = Kr[lt2] = Kr[st2] = Kr[ht2] = Kr[pt2] = Kr[_t2] = Kr[vt2] = Kr[gt2] = Kr[yt2] = true, Kr[Dn] = Kr[Mn] = Kr[ft2] = Kr[Nn] = Kr[ct2] = Kr[Pn] = Kr[Zn] = Kr[Kn] = Kr[Gn] = Kr[Hn] = Kr[Yn] = Kr[nt2] = Kr[tt2] = Kr[rt2] = Kr[it2] = false; + var Vr = {}; + Vr[Dn] = Vr[Mn] = Vr[ft2] = Vr[ct2] = Vr[Nn] = Vr[Pn] = Vr[at2] = Vr[lt2] = Vr[st2] = Vr[ht2] = Vr[pt2] = Vr[Gn] = Vr[Hn] = Vr[Yn] = Vr[nt2] = Vr[tt2] = Vr[rt2] = Vr[et2] = Vr[_t2] = Vr[vt2] = Vr[gt2] = Vr[yt2] = true, Vr[Zn] = Vr[Kn] = Vr[it2] = false; + var Gr = { + "\xC0": "A", + "\xC1": "A", + "\xC2": "A", + "\xC3": "A", + "\xC4": "A", + "\xC5": "A", + "\xE0": "a", + "\xE1": "a", + "\xE2": "a", + "\xE3": "a", + "\xE4": "a", + "\xE5": "a", + "\xC7": "C", + "\xE7": "c", + "\xD0": "D", + "\xF0": "d", + "\xC8": "E", + "\xC9": "E", + "\xCA": "E", + "\xCB": "E", + "\xE8": "e", + "\xE9": "e", + "\xEA": "e", + "\xEB": "e", + "\xCC": "I", + "\xCD": "I", + "\xCE": "I", + "\xCF": "I", + "\xEC": "i", + "\xED": "i", + "\xEE": "i", + "\xEF": "i", + "\xD1": "N", + "\xF1": "n", + "\xD2": "O", + "\xD3": "O", + "\xD4": "O", + "\xD5": "O", + "\xD6": "O", + "\xD8": "O", + "\xF2": "o", + "\xF3": "o", + "\xF4": "o", + "\xF5": "o", + "\xF6": "o", + "\xF8": "o", + "\xD9": "U", + "\xDA": "U", + "\xDB": "U", + "\xDC": "U", + "\xF9": "u", + "\xFA": "u", + "\xFB": "u", + "\xFC": "u", + "\xDD": "Y", + "\xFD": "y", + "\xFF": "y", + "\xC6": "Ae", + "\xE6": "ae", + "\xDE": "Th", + "\xFE": "th", + "\xDF": "ss", + "\u0100": "A", + "\u0102": "A", + "\u0104": "A", + "\u0101": "a", + "\u0103": "a", + "\u0105": "a", + "\u0106": "C", + "\u0108": "C", + "\u010A": "C", + "\u010C": "C", + "\u0107": "c", + "\u0109": "c", + "\u010B": "c", + "\u010D": "c", + "\u010E": "D", + "\u0110": "D", + "\u010F": "d", + "\u0111": "d", + "\u0112": "E", + "\u0114": "E", + "\u0116": "E", + "\u0118": "E", + "\u011A": "E", + "\u0113": "e", + "\u0115": "e", + "\u0117": "e", + "\u0119": "e", + "\u011B": "e", + "\u011C": "G", + "\u011E": "G", + "\u0120": "G", + "\u0122": "G", + "\u011D": "g", + "\u011F": "g", + "\u0121": "g", + "\u0123": "g", + "\u0124": "H", + "\u0126": "H", + "\u0125": "h", + "\u0127": "h", + "\u0128": "I", + "\u012A": "I", + "\u012C": "I", + "\u012E": "I", + "\u0130": "I", + "\u0129": "i", + "\u012B": "i", + "\u012D": "i", + "\u012F": "i", + "\u0131": "i", + "\u0134": "J", + "\u0135": "j", + "\u0136": "K", + "\u0137": "k", + "\u0138": "k", + "\u0139": "L", + "\u013B": "L", + "\u013D": "L", + "\u013F": "L", + "\u0141": "L", + "\u013A": "l", + "\u013C": "l", + "\u013E": "l", + "\u0140": "l", + "\u0142": "l", + "\u0143": "N", + "\u0145": "N", + "\u0147": "N", + "\u014A": "N", + "\u0144": "n", + "\u0146": "n", + "\u0148": "n", + "\u014B": "n", + "\u014C": "O", + "\u014E": "O", + "\u0150": "O", + "\u014D": "o", + "\u014F": "o", + "\u0151": "o", + "\u0154": "R", + "\u0156": "R", + "\u0158": "R", + "\u0155": "r", + "\u0157": "r", + "\u0159": "r", + "\u015A": "S", + "\u015C": "S", + "\u015E": "S", + "\u0160": "S", + "\u015B": "s", + "\u015D": "s", + "\u015F": "s", + "\u0161": "s", + "\u0162": "T", + "\u0164": "T", + "\u0166": "T", + "\u0163": "t", + "\u0165": "t", + "\u0167": "t", + "\u0168": "U", + "\u016A": "U", + "\u016C": "U", + "\u016E": "U", + "\u0170": "U", + "\u0172": "U", + "\u0169": "u", + "\u016B": "u", + "\u016D": "u", + "\u016F": "u", + "\u0171": "u", + "\u0173": "u", + "\u0174": "W", + "\u0175": "w", + "\u0176": "Y", + "\u0177": "y", + "\u0178": "Y", + "\u0179": "Z", + "\u017B": "Z", + "\u017D": "Z", + "\u017A": "z", + "\u017C": "z", + "\u017E": "z", + "\u0132": "IJ", + "\u0133": "ij", + "\u0152": "Oe", + "\u0153": "oe", + "\u0149": "'n", + "\u017F": "s" + }, Hr = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }, Jr = { "&": "&", "<": "<", ">": ">", """: '"', "'": "'" }, Yr = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }, Qr = parseFloat, Xr = parseInt, ne = "object" == typeof global && global && global.Object === Object && global, te = "object" == typeof self && self && self.Object === Object && self, re = ne || te || Function("return this")(), ee = "object" == typeof exports && exports && !exports.nodeType && exports, ue = ee && "object" == typeof module2 && module2 && !module2.nodeType && module2, ie = ue && ue.exports === ee, oe = ie && ne.process, fe = function() { + try { + var n3 = ue && ue.require && ue.require("util").types; + return n3 ? n3 : oe && oe.binding && oe.binding("util"); + } catch (n4) { + } + }(), ce = fe && fe.isArrayBuffer, ae = fe && fe.isDate, le = fe && fe.isMap, se = fe && fe.isRegExp, he = fe && fe.isSet, pe = fe && fe.isTypedArray, _e = m2("length"), ve = x2(Gr), ge = x2(Hr), ye = x2(Jr), de = function p3(x3) { + function Z3(n3) { + if (cc(n3) && !bh(n3) && !(n3 instanceof Ct3)) { + if (n3 instanceof Y3) + return n3; + if (bl.call(n3, "__wrapped__")) + return eo(n3); + } + return new Y3(n3); + } + function J3() { + } + function Y3(n3, t3) { + this.__wrapped__ = n3, this.__actions__ = [], this.__chain__ = !!t3, this.__index__ = 0, this.__values__ = X3; + } + function Ct3(n3) { + this.__wrapped__ = n3, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = false, this.__iteratees__ = [], this.__takeCount__ = Un, this.__views__ = []; + } + function $t3() { + var n3 = new Ct3(this.__wrapped__); + return n3.__actions__ = Tu(this.__actions__), n3.__dir__ = this.__dir__, n3.__filtered__ = this.__filtered__, n3.__iteratees__ = Tu(this.__iteratees__), n3.__takeCount__ = this.__takeCount__, n3.__views__ = Tu(this.__views__), n3; + } + function Yt2() { + if (this.__filtered__) { + var n3 = new Ct3(this); + n3.__dir__ = -1, n3.__filtered__ = true; + } else + n3 = this.clone(), n3.__dir__ *= -1; + return n3; + } + function Qt2() { + var n3 = this.__wrapped__.value(), t3 = this.__dir__, r3 = bh(n3), e3 = t3 < 0, u3 = r3 ? n3.length : 0, i3 = Oi(0, u3, this.__views__), o3 = i3.start, f3 = i3.end, c3 = f3 - o3, a3 = e3 ? f3 : o3 - 1, l3 = this.__iteratees__, s3 = l3.length, h3 = 0, p4 = Hl(c3, this.__takeCount__); + if (!r3 || !e3 && u3 == c3 && p4 == c3) + return wu(n3, this.__actions__); + var _3 = []; + n: + for (; c3-- && h3 < p4; ) { + a3 += t3; + for (var v3 = -1, g3 = n3[a3]; ++v3 < s3; ) { + var y3 = l3[v3], d3 = y3.iteratee, b3 = y3.type, w3 = d3(g3); + if (b3 == zn) + g3 = w3; + else if (!w3) { + if (b3 == Rn) + continue n; + break n; + } + } + _3[h3++] = g3; + } + return _3; + } + function Xt2(n3) { + var t3 = -1, r3 = null == n3 ? 0 : n3.length; + for (this.clear(); ++t3 < r3; ) { + var e3 = n3[t3]; + this.set(e3[0], e3[1]); + } + } + function nr2() { + this.__data__ = is3 ? is3(null) : {}, this.size = 0; + } + function tr2(n3) { + var t3 = this.has(n3) && delete this.__data__[n3]; + return this.size -= t3 ? 1 : 0, t3; + } + function rr2(n3) { + var t3 = this.__data__; + if (is3) { + var r3 = t3[n3]; + return r3 === on ? X3 : r3; + } + return bl.call(t3, n3) ? t3[n3] : X3; + } + function er2(n3) { + var t3 = this.__data__; + return is3 ? t3[n3] !== X3 : bl.call(t3, n3); + } + function ur2(n3, t3) { + var r3 = this.__data__; + return this.size += this.has(n3) ? 0 : 1, r3[n3] = is3 && t3 === X3 ? on : t3, this; + } + function ir2(n3) { + var t3 = -1, r3 = null == n3 ? 0 : n3.length; + for (this.clear(); ++t3 < r3; ) { + var e3 = n3[t3]; + this.set(e3[0], e3[1]); + } + } + function or2() { + this.__data__ = [], this.size = 0; + } + function fr2(n3) { + var t3 = this.__data__, r3 = Wr2(t3, n3); + return !(r3 < 0) && (r3 == t3.length - 1 ? t3.pop() : Ll.call(t3, r3, 1), --this.size, true); + } + function cr2(n3) { + var t3 = this.__data__, r3 = Wr2(t3, n3); + return r3 < 0 ? X3 : t3[r3][1]; + } + function ar2(n3) { + return Wr2(this.__data__, n3) > -1; + } + function lr2(n3, t3) { + var r3 = this.__data__, e3 = Wr2(r3, n3); + return e3 < 0 ? (++this.size, r3.push([n3, t3])) : r3[e3][1] = t3, this; + } + function sr2(n3) { + var t3 = -1, r3 = null == n3 ? 0 : n3.length; + for (this.clear(); ++t3 < r3; ) { + var e3 = n3[t3]; + this.set(e3[0], e3[1]); + } + } + function hr2() { + this.size = 0, this.__data__ = { hash: new Xt2(), map: new (ts || ir2)(), string: new Xt2() }; + } + function pr2(n3) { + var t3 = xi(this, n3).delete(n3); + return this.size -= t3 ? 1 : 0, t3; + } + function _r2(n3) { + return xi(this, n3).get(n3); + } + function vr2(n3) { + return xi(this, n3).has(n3); + } + function gr2(n3, t3) { + var r3 = xi(this, n3), e3 = r3.size; + return r3.set(n3, t3), this.size += r3.size == e3 ? 0 : 1, this; + } + function yr2(n3) { + var t3 = -1, r3 = null == n3 ? 0 : n3.length; + for (this.__data__ = new sr2(); ++t3 < r3; ) + this.add(n3[t3]); + } + function dr2(n3) { + return this.__data__.set(n3, on), this; + } + function br2(n3) { + return this.__data__.has(n3); + } + function wr2(n3) { + this.size = (this.__data__ = new ir2(n3)).size; + } + function mr2() { + this.__data__ = new ir2(), this.size = 0; + } + function xr2(n3) { + var t3 = this.__data__, r3 = t3.delete(n3); + return this.size = t3.size, r3; + } + function jr2(n3) { + return this.__data__.get(n3); + } + function Ar2(n3) { + return this.__data__.has(n3); + } + function kr2(n3, t3) { + var r3 = this.__data__; + if (r3 instanceof ir2) { + var e3 = r3.__data__; + if (!ts || e3.length < tn - 1) + return e3.push([n3, t3]), this.size = ++r3.size, this; + r3 = this.__data__ = new sr2(e3); + } + return r3.set(n3, t3), this.size = r3.size, this; + } + function Or2(n3, t3) { + var r3 = bh(n3), e3 = !r3 && dh(n3), u3 = !r3 && !e3 && mh(n3), i3 = !r3 && !e3 && !u3 && Oh(n3), o3 = r3 || e3 || u3 || i3, f3 = o3 ? O2(n3.length, hl) : [], c3 = f3.length; + for (var a3 in n3) + !t3 && !bl.call(n3, a3) || o3 && ("length" == a3 || u3 && ("offset" == a3 || "parent" == a3) || i3 && ("buffer" == a3 || "byteLength" == a3 || "byteOffset" == a3) || Ci(a3, c3)) || f3.push(a3); + return f3; + } + function Ir2(n3) { + var t3 = n3.length; + return t3 ? n3[tu(0, t3 - 1)] : X3; + } + function Rr2(n3, t3) { + return Xi(Tu(n3), Mr2(t3, 0, n3.length)); + } + function zr2(n3) { + return Xi(Tu(n3)); + } + function Er2(n3, t3, r3) { + (r3 === X3 || Gf(n3[t3], r3)) && (r3 !== X3 || t3 in n3) || Br2(n3, t3, r3); + } + function Sr2(n3, t3, r3) { + var e3 = n3[t3]; + bl.call(n3, t3) && Gf(e3, r3) && (r3 !== X3 || t3 in n3) || Br2(n3, t3, r3); + } + function Wr2(n3, t3) { + for (var r3 = n3.length; r3--; ) + if (Gf(n3[r3][0], t3)) + return r3; + return -1; + } + function Lr2(n3, t3, r3, e3) { + return ys(n3, function(n4, u3, i3) { + t3(e3, n4, r3(n4), i3); + }), e3; + } + function Cr2(n3, t3) { + return n3 && $u(t3, Pc(t3), n3); + } + function Ur2(n3, t3) { + return n3 && $u(t3, qc(t3), n3); + } + function Br2(n3, t3, r3) { + "__proto__" == t3 && Tl ? Tl(n3, t3, { configurable: true, enumerable: true, value: r3, writable: true }) : n3[t3] = r3; + } + function Tr2(n3, t3) { + for (var r3 = -1, e3 = t3.length, u3 = il(e3), i3 = null == n3; ++r3 < e3; ) + u3[r3] = i3 ? X3 : Mc(n3, t3[r3]); + return u3; + } + function Mr2(n3, t3, r3) { + return n3 === n3 && (r3 !== X3 && (n3 = n3 <= r3 ? n3 : r3), t3 !== X3 && (n3 = n3 >= t3 ? n3 : t3)), n3; + } + function Fr2(n3, t3, e3, u3, i3, o3) { + var f3, c3 = t3 & an, a3 = t3 & ln, l3 = t3 & sn; + if (e3 && (f3 = i3 ? e3(n3, u3, i3, o3) : e3(n3)), f3 !== X3) + return f3; + if (!fc(n3)) + return n3; + var s3 = bh(n3); + if (s3) { + if (f3 = zi(n3), !c3) + return Tu(n3, f3); + } else { + var h3 = zs(n3), p4 = h3 == Kn || h3 == Vn; + if (mh(n3)) + return Iu(n3, c3); + if (h3 == Yn || h3 == Dn || p4 && !i3) { + if (f3 = a3 || p4 ? {} : Ei(n3), !c3) + return a3 ? Mu(n3, Ur2(f3, n3)) : Du(n3, Cr2(f3, n3)); + } else { + if (!Vr[h3]) + return i3 ? n3 : {}; + f3 = Si(n3, h3, c3); + } + } + o3 || (o3 = new wr2()); + var _3 = o3.get(n3); + if (_3) + return _3; + o3.set(n3, f3), kh(n3) ? n3.forEach(function(r3) { + f3.add(Fr2(r3, t3, e3, r3, n3, o3)); + }) : jh(n3) && n3.forEach(function(r3, u4) { + f3.set(u4, Fr2(r3, t3, e3, u4, n3, o3)); + }); + var v3 = l3 ? a3 ? di : yi : a3 ? qc : Pc, g3 = s3 ? X3 : v3(n3); + return r2(g3 || n3, function(r3, u4) { + g3 && (u4 = r3, r3 = n3[u4]), Sr2(f3, u4, Fr2(r3, t3, e3, u4, n3, o3)); + }), f3; + } + function Nr2(n3) { + var t3 = Pc(n3); + return function(r3) { + return Pr2(r3, n3, t3); + }; + } + function Pr2(n3, t3, r3) { + var e3 = r3.length; + if (null == n3) + return !e3; + for (n3 = ll(n3); e3--; ) { + var u3 = r3[e3], i3 = t3[u3], o3 = n3[u3]; + if (o3 === X3 && !(u3 in n3) || !i3(o3)) + return false; + } + return true; + } + function Gr2(n3, t3, r3) { + if ("function" != typeof n3) + throw new pl(en); + return Ws(function() { + n3.apply(X3, r3); + }, t3); + } + function Hr2(n3, t3, r3, e3) { + var u3 = -1, i3 = o2, a3 = true, l3 = n3.length, s3 = [], h3 = t3.length; + if (!l3) + return s3; + r3 && (t3 = c2(t3, z2(r3))), e3 ? (i3 = f2, a3 = false) : t3.length >= tn && (i3 = S2, a3 = false, t3 = new yr2(t3)); + n: + for (; ++u3 < l3; ) { + var p4 = n3[u3], _3 = null == r3 ? p4 : r3(p4); + if (p4 = e3 || 0 !== p4 ? p4 : 0, a3 && _3 === _3) { + for (var v3 = h3; v3--; ) + if (t3[v3] === _3) + continue n; + s3.push(p4); + } else + i3(t3, _3, e3) || s3.push(p4); + } + return s3; + } + function Jr2(n3, t3) { + var r3 = true; + return ys(n3, function(n4, e3, u3) { + return r3 = !!t3(n4, e3, u3); + }), r3; + } + function Yr2(n3, t3, r3) { + for (var e3 = -1, u3 = n3.length; ++e3 < u3; ) { + var i3 = n3[e3], o3 = t3(i3); + if (null != o3 && (f3 === X3 ? o3 === o3 && !bc(o3) : r3(o3, f3))) + var f3 = o3, c3 = i3; + } + return c3; + } + function ne2(n3, t3, r3, e3) { + var u3 = n3.length; + for (r3 = kc(r3), r3 < 0 && (r3 = -r3 > u3 ? 0 : u3 + r3), e3 = e3 === X3 || e3 > u3 ? u3 : kc(e3), e3 < 0 && (e3 += u3), e3 = r3 > e3 ? 0 : Oc(e3); r3 < e3; ) + n3[r3++] = t3; + return n3; + } + function te2(n3, t3) { + var r3 = []; + return ys(n3, function(n4, e3, u3) { + t3(n4, e3, u3) && r3.push(n4); + }), r3; + } + function ee2(n3, t3, r3, e3, u3) { + var i3 = -1, o3 = n3.length; + for (r3 || (r3 = Li), u3 || (u3 = []); ++i3 < o3; ) { + var f3 = n3[i3]; + t3 > 0 && r3(f3) ? t3 > 1 ? ee2(f3, t3 - 1, r3, e3, u3) : a2(u3, f3) : e3 || (u3[u3.length] = f3); + } + return u3; + } + function ue2(n3, t3) { + return n3 && bs(n3, t3, Pc); + } + function oe2(n3, t3) { + return n3 && ws(n3, t3, Pc); + } + function fe2(n3, t3) { + return i2(t3, function(t4) { + return uc(n3[t4]); + }); + } + function _e2(n3, t3) { + t3 = ku(t3, n3); + for (var r3 = 0, e3 = t3.length; null != n3 && r3 < e3; ) + n3 = n3[no(t3[r3++])]; + return r3 && r3 == e3 ? n3 : X3; + } + function de2(n3, t3, r3) { + var e3 = t3(n3); + return bh(n3) ? e3 : a2(e3, r3(n3)); + } + function we(n3) { + return null == n3 ? n3 === X3 ? ut2 : Jn : Bl && Bl in ll(n3) ? ki(n3) : Ki(n3); + } + function me(n3, t3) { + return n3 > t3; + } + function xe(n3, t3) { + return null != n3 && bl.call(n3, t3); + } + function je(n3, t3) { + return null != n3 && t3 in ll(n3); + } + function Ae(n3, t3, r3) { + return n3 >= Hl(t3, r3) && n3 < Gl(t3, r3); + } + function ke(n3, t3, r3) { + for (var e3 = r3 ? f2 : o2, u3 = n3[0].length, i3 = n3.length, a3 = i3, l3 = il(i3), s3 = 1 / 0, h3 = []; a3--; ) { + var p4 = n3[a3]; + a3 && t3 && (p4 = c2(p4, z2(t3))), s3 = Hl(p4.length, s3), l3[a3] = !r3 && (t3 || u3 >= 120 && p4.length >= 120) ? new yr2(a3 && p4) : X3; + } + p4 = n3[0]; + var _3 = -1, v3 = l3[0]; + n: + for (; ++_3 < u3 && h3.length < s3; ) { + var g3 = p4[_3], y3 = t3 ? t3(g3) : g3; + if (g3 = r3 || 0 !== g3 ? g3 : 0, !(v3 ? S2(v3, y3) : e3(h3, y3, r3))) { + for (a3 = i3; --a3; ) { + var d3 = l3[a3]; + if (!(d3 ? S2(d3, y3) : e3(n3[a3], y3, r3))) + continue n; + } + v3 && v3.push(y3), h3.push(g3); + } + } + return h3; + } + function Oe(n3, t3, r3, e3) { + return ue2(n3, function(n4, u3, i3) { + t3(e3, r3(n4), u3, i3); + }), e3; + } + function Ie(t3, r3, e3) { + r3 = ku(r3, t3), t3 = Gi(t3, r3); + var u3 = null == t3 ? t3 : t3[no(jo(r3))]; + return null == u3 ? X3 : n2(u3, t3, e3); + } + function Re(n3) { + return cc(n3) && we(n3) == Dn; + } + function ze(n3) { + return cc(n3) && we(n3) == ft2; + } + function Ee(n3) { + return cc(n3) && we(n3) == Pn; + } + function Se(n3, t3, r3, e3, u3) { + return n3 === t3 || (null == n3 || null == t3 || !cc(n3) && !cc(t3) ? n3 !== n3 && t3 !== t3 : We(n3, t3, r3, e3, Se, u3)); + } + function We(n3, t3, r3, e3, u3, i3) { + var o3 = bh(n3), f3 = bh(t3), c3 = o3 ? Mn : zs(n3), a3 = f3 ? Mn : zs(t3); + c3 = c3 == Dn ? Yn : c3, a3 = a3 == Dn ? Yn : a3; + var l3 = c3 == Yn, s3 = a3 == Yn, h3 = c3 == a3; + if (h3 && mh(n3)) { + if (!mh(t3)) + return false; + o3 = true, l3 = false; + } + if (h3 && !l3) + return i3 || (i3 = new wr2()), o3 || Oh(n3) ? pi(n3, t3, r3, e3, u3, i3) : _i(n3, t3, c3, r3, e3, u3, i3); + if (!(r3 & hn)) { + var p4 = l3 && bl.call(n3, "__wrapped__"), _3 = s3 && bl.call(t3, "__wrapped__"); + if (p4 || _3) { + var v3 = p4 ? n3.value() : n3, g3 = _3 ? t3.value() : t3; + return i3 || (i3 = new wr2()), u3(v3, g3, r3, e3, i3); + } + } + return !!h3 && (i3 || (i3 = new wr2()), vi(n3, t3, r3, e3, u3, i3)); + } + function Le(n3) { + return cc(n3) && zs(n3) == Gn; + } + function Ce(n3, t3, r3, e3) { + var u3 = r3.length, i3 = u3, o3 = !e3; + if (null == n3) + return !i3; + for (n3 = ll(n3); u3--; ) { + var f3 = r3[u3]; + if (o3 && f3[2] ? f3[1] !== n3[f3[0]] : !(f3[0] in n3)) + return false; + } + for (; ++u3 < i3; ) { + f3 = r3[u3]; + var c3 = f3[0], a3 = n3[c3], l3 = f3[1]; + if (o3 && f3[2]) { + if (a3 === X3 && !(c3 in n3)) + return false; + } else { + var s3 = new wr2(); + if (e3) + var h3 = e3(a3, l3, c3, n3, t3, s3); + if (!(h3 === X3 ? Se(l3, a3, hn | pn, e3, s3) : h3)) + return false; + } + } + return true; + } + function Ue(n3) { + return !(!fc(n3) || Di(n3)) && (uc(n3) ? kl : Zt).test(to(n3)); + } + function Be(n3) { + return cc(n3) && we(n3) == nt2; + } + function Te(n3) { + return cc(n3) && zs(n3) == tt2; + } + function $e(n3) { + return cc(n3) && oc(n3.length) && !!Kr[we(n3)]; + } + function De(n3) { + return "function" == typeof n3 ? n3 : null == n3 ? La : "object" == typeof n3 ? bh(n3) ? Ze(n3[0], n3[1]) : qe(n3) : Fa(n3); + } + function Me(n3) { + if (!Mi(n3)) + return Vl(n3); + var t3 = []; + for (var r3 in ll(n3)) + bl.call(n3, r3) && "constructor" != r3 && t3.push(r3); + return t3; + } + function Fe(n3) { + if (!fc(n3)) + return Zi(n3); + var t3 = Mi(n3), r3 = []; + for (var e3 in n3) + ("constructor" != e3 || !t3 && bl.call(n3, e3)) && r3.push(e3); + return r3; + } + function Ne(n3, t3) { + return n3 < t3; + } + function Pe(n3, t3) { + var r3 = -1, e3 = Hf(n3) ? il(n3.length) : []; + return ys(n3, function(n4, u3, i3) { + e3[++r3] = t3(n4, u3, i3); + }), e3; + } + function qe(n3) { + var t3 = ji(n3); + return 1 == t3.length && t3[0][2] ? Ni(t3[0][0], t3[0][1]) : function(r3) { + return r3 === n3 || Ce(r3, n3, t3); + }; + } + function Ze(n3, t3) { + return Bi(n3) && Fi(t3) ? Ni(no(n3), t3) : function(r3) { + var e3 = Mc(r3, n3); + return e3 === X3 && e3 === t3 ? Nc(r3, n3) : Se(t3, e3, hn | pn); + }; + } + function Ke(n3, t3, r3, e3, u3) { + n3 !== t3 && bs(t3, function(i3, o3) { + if (u3 || (u3 = new wr2()), fc(i3)) + Ve(n3, t3, o3, r3, Ke, e3, u3); + else { + var f3 = e3 ? e3(Ji(n3, o3), i3, o3 + "", n3, t3, u3) : X3; + f3 === X3 && (f3 = i3), Er2(n3, o3, f3); + } + }, qc); + } + function Ve(n3, t3, r3, e3, u3, i3, o3) { + var f3 = Ji(n3, r3), c3 = Ji(t3, r3), a3 = o3.get(c3); + if (a3) + return Er2(n3, r3, a3), X3; + var l3 = i3 ? i3(f3, c3, r3 + "", n3, t3, o3) : X3, s3 = l3 === X3; + if (s3) { + var h3 = bh(c3), p4 = !h3 && mh(c3), _3 = !h3 && !p4 && Oh(c3); + l3 = c3, h3 || p4 || _3 ? bh(f3) ? l3 = f3 : Jf(f3) ? l3 = Tu(f3) : p4 ? (s3 = false, l3 = Iu(c3, true)) : _3 ? (s3 = false, l3 = Wu(c3, true)) : l3 = [] : gc(c3) || dh(c3) ? (l3 = f3, dh(f3) ? l3 = Rc(f3) : fc(f3) && !uc(f3) || (l3 = Ei(c3))) : s3 = false; + } + s3 && (o3.set(c3, l3), u3(l3, c3, e3, i3, o3), o3.delete(c3)), Er2(n3, r3, l3); + } + function Ge(n3, t3) { + var r3 = n3.length; + if (r3) + return t3 += t3 < 0 ? r3 : 0, Ci(t3, r3) ? n3[t3] : X3; + } + function He(n3, t3, r3) { + t3 = t3.length ? c2(t3, function(n4) { + return bh(n4) ? function(t4) { + return _e2(t4, 1 === n4.length ? n4[0] : n4); + } : n4; + }) : [La]; + var e3 = -1; + return t3 = c2(t3, z2(mi())), A2(Pe(n3, function(n4, r4, u3) { + return { criteria: c2(t3, function(t4) { + return t4(n4); + }), index: ++e3, value: n4 }; + }), function(n4, t4) { + return Cu(n4, t4, r3); + }); + } + function Je(n3, t3) { + return Ye(n3, t3, function(t4, r3) { + return Nc(n3, r3); + }); + } + function Ye(n3, t3, r3) { + for (var e3 = -1, u3 = t3.length, i3 = {}; ++e3 < u3; ) { + var o3 = t3[e3], f3 = _e2(n3, o3); + r3(f3, o3) && fu(i3, ku(o3, n3), f3); + } + return i3; + } + function Qe(n3) { + return function(t3) { + return _e2(t3, n3); + }; + } + function Xe(n3, t3, r3, e3) { + var u3 = e3 ? d2 : y2, i3 = -1, o3 = t3.length, f3 = n3; + for (n3 === t3 && (t3 = Tu(t3)), r3 && (f3 = c2(n3, z2(r3))); ++i3 < o3; ) + for (var a3 = 0, l3 = t3[i3], s3 = r3 ? r3(l3) : l3; (a3 = u3(f3, s3, a3, e3)) > -1; ) + f3 !== n3 && Ll.call(f3, a3, 1), Ll.call(n3, a3, 1); + return n3; + } + function nu(n3, t3) { + for (var r3 = n3 ? t3.length : 0, e3 = r3 - 1; r3--; ) { + var u3 = t3[r3]; + if (r3 == e3 || u3 !== i3) { + var i3 = u3; + Ci(u3) ? Ll.call(n3, u3, 1) : yu(n3, u3); + } + } + return n3; + } + function tu(n3, t3) { + return n3 + Nl(Ql() * (t3 - n3 + 1)); + } + function ru(n3, t3, r3, e3) { + for (var u3 = -1, i3 = Gl(Fl((t3 - n3) / (r3 || 1)), 0), o3 = il(i3); i3--; ) + o3[e3 ? i3 : ++u3] = n3, n3 += r3; + return o3; + } + function eu(n3, t3) { + var r3 = ""; + if (!n3 || t3 < 1 || t3 > Wn) + return r3; + do + t3 % 2 && (r3 += n3), t3 = Nl(t3 / 2), t3 && (n3 += n3); + while (t3); + return r3; + } + function uu(n3, t3) { + return Ls(Vi(n3, t3, La), n3 + ""); + } + function iu(n3) { + return Ir2(ra(n3)); + } + function ou(n3, t3) { + var r3 = ra(n3); + return Xi(r3, Mr2(t3, 0, r3.length)); + } + function fu(n3, t3, r3, e3) { + if (!fc(n3)) + return n3; + t3 = ku(t3, n3); + for (var u3 = -1, i3 = t3.length, o3 = i3 - 1, f3 = n3; null != f3 && ++u3 < i3; ) { + var c3 = no(t3[u3]), a3 = r3; + if ("__proto__" === c3 || "constructor" === c3 || "prototype" === c3) + return n3; + if (u3 != o3) { + var l3 = f3[c3]; + a3 = e3 ? e3(l3, c3, f3) : X3, a3 === X3 && (a3 = fc(l3) ? l3 : Ci(t3[u3 + 1]) ? [] : {}); + } + Sr2(f3, c3, a3), f3 = f3[c3]; + } + return n3; + } + function cu(n3) { + return Xi(ra(n3)); + } + function au(n3, t3, r3) { + var e3 = -1, u3 = n3.length; + t3 < 0 && (t3 = -t3 > u3 ? 0 : u3 + t3), r3 = r3 > u3 ? u3 : r3, r3 < 0 && (r3 += u3), u3 = t3 > r3 ? 0 : r3 - t3 >>> 0, t3 >>>= 0; + for (var i3 = il(u3); ++e3 < u3; ) + i3[e3] = n3[e3 + t3]; + return i3; + } + function lu(n3, t3) { + var r3; + return ys(n3, function(n4, e3, u3) { + return r3 = t3(n4, e3, u3), !r3; + }), !!r3; + } + function su(n3, t3, r3) { + var e3 = 0, u3 = null == n3 ? e3 : n3.length; + if ("number" == typeof t3 && t3 === t3 && u3 <= Tn) { + for (; e3 < u3; ) { + var i3 = e3 + u3 >>> 1, o3 = n3[i3]; + null !== o3 && !bc(o3) && (r3 ? o3 <= t3 : o3 < t3) ? e3 = i3 + 1 : u3 = i3; + } + return u3; + } + return hu(n3, t3, La, r3); + } + function hu(n3, t3, r3, e3) { + var u3 = 0, i3 = null == n3 ? 0 : n3.length; + if (0 === i3) + return 0; + t3 = r3(t3); + for (var o3 = t3 !== t3, f3 = null === t3, c3 = bc(t3), a3 = t3 === X3; u3 < i3; ) { + var l3 = Nl((u3 + i3) / 2), s3 = r3(n3[l3]), h3 = s3 !== X3, p4 = null === s3, _3 = s3 === s3, v3 = bc(s3); + if (o3) + var g3 = e3 || _3; + else + g3 = a3 ? _3 && (e3 || h3) : f3 ? _3 && h3 && (e3 || !p4) : c3 ? _3 && h3 && !p4 && (e3 || !v3) : !p4 && !v3 && (e3 ? s3 <= t3 : s3 < t3); + g3 ? u3 = l3 + 1 : i3 = l3; + } + return Hl(i3, Bn); + } + function pu(n3, t3) { + for (var r3 = -1, e3 = n3.length, u3 = 0, i3 = []; ++r3 < e3; ) { + var o3 = n3[r3], f3 = t3 ? t3(o3) : o3; + if (!r3 || !Gf(f3, c3)) { + var c3 = f3; + i3[u3++] = 0 === o3 ? 0 : o3; + } + } + return i3; + } + function _u(n3) { + return "number" == typeof n3 ? n3 : bc(n3) ? Cn : +n3; + } + function vu(n3) { + if ("string" == typeof n3) + return n3; + if (bh(n3)) + return c2(n3, vu) + ""; + if (bc(n3)) + return vs ? vs.call(n3) : ""; + var t3 = n3 + ""; + return "0" == t3 && 1 / n3 == -Sn ? "-0" : t3; + } + function gu(n3, t3, r3) { + var e3 = -1, u3 = o2, i3 = n3.length, c3 = true, a3 = [], l3 = a3; + if (r3) + c3 = false, u3 = f2; + else if (i3 >= tn) { + var s3 = t3 ? null : ks(n3); + if (s3) + return P2(s3); + c3 = false, u3 = S2, l3 = new yr2(); + } else + l3 = t3 ? [] : a3; + n: + for (; ++e3 < i3; ) { + var h3 = n3[e3], p4 = t3 ? t3(h3) : h3; + if (h3 = r3 || 0 !== h3 ? h3 : 0, c3 && p4 === p4) { + for (var _3 = l3.length; _3--; ) + if (l3[_3] === p4) + continue n; + t3 && l3.push(p4), a3.push(h3); + } else + u3(l3, p4, r3) || (l3 !== a3 && l3.push(p4), a3.push(h3)); + } + return a3; + } + function yu(n3, t3) { + return t3 = ku(t3, n3), n3 = Gi(n3, t3), null == n3 || delete n3[no(jo(t3))]; + } + function du(n3, t3, r3, e3) { + return fu(n3, t3, r3(_e2(n3, t3)), e3); + } + function bu(n3, t3, r3, e3) { + for (var u3 = n3.length, i3 = e3 ? u3 : -1; (e3 ? i3-- : ++i3 < u3) && t3(n3[i3], i3, n3); ) + ; + return r3 ? au(n3, e3 ? 0 : i3, e3 ? i3 + 1 : u3) : au(n3, e3 ? i3 + 1 : 0, e3 ? u3 : i3); + } + function wu(n3, t3) { + var r3 = n3; + return r3 instanceof Ct3 && (r3 = r3.value()), l2(t3, function(n4, t4) { + return t4.func.apply(t4.thisArg, a2([n4], t4.args)); + }, r3); + } + function mu(n3, t3, r3) { + var e3 = n3.length; + if (e3 < 2) + return e3 ? gu(n3[0]) : []; + for (var u3 = -1, i3 = il(e3); ++u3 < e3; ) + for (var o3 = n3[u3], f3 = -1; ++f3 < e3; ) + f3 != u3 && (i3[u3] = Hr2(i3[u3] || o3, n3[f3], t3, r3)); + return gu(ee2(i3, 1), t3, r3); + } + function xu(n3, t3, r3) { + for (var e3 = -1, u3 = n3.length, i3 = t3.length, o3 = {}; ++e3 < u3; ) { + r3(o3, n3[e3], e3 < i3 ? t3[e3] : X3); + } + return o3; + } + function ju(n3) { + return Jf(n3) ? n3 : []; + } + function Au(n3) { + return "function" == typeof n3 ? n3 : La; + } + function ku(n3, t3) { + return bh(n3) ? n3 : Bi(n3, t3) ? [n3] : Cs(Ec(n3)); + } + function Ou(n3, t3, r3) { + var e3 = n3.length; + return r3 = r3 === X3 ? e3 : r3, !t3 && r3 >= e3 ? n3 : au(n3, t3, r3); + } + function Iu(n3, t3) { + if (t3) + return n3.slice(); + var r3 = n3.length, e3 = zl ? zl(r3) : new n3.constructor(r3); + return n3.copy(e3), e3; + } + function Ru(n3) { + var t3 = new n3.constructor(n3.byteLength); + return new Rl(t3).set(new Rl(n3)), t3; + } + function zu(n3, t3) { + return new n3.constructor(t3 ? Ru(n3.buffer) : n3.buffer, n3.byteOffset, n3.byteLength); + } + function Eu(n3) { + var t3 = new n3.constructor(n3.source, Nt.exec(n3)); + return t3.lastIndex = n3.lastIndex, t3; + } + function Su(n3) { + return _s ? ll(_s.call(n3)) : {}; + } + function Wu(n3, t3) { + return new n3.constructor(t3 ? Ru(n3.buffer) : n3.buffer, n3.byteOffset, n3.length); + } + function Lu(n3, t3) { + if (n3 !== t3) { + var r3 = n3 !== X3, e3 = null === n3, u3 = n3 === n3, i3 = bc(n3), o3 = t3 !== X3, f3 = null === t3, c3 = t3 === t3, a3 = bc(t3); + if (!f3 && !a3 && !i3 && n3 > t3 || i3 && o3 && c3 && !f3 && !a3 || e3 && o3 && c3 || !r3 && c3 || !u3) + return 1; + if (!e3 && !i3 && !a3 && n3 < t3 || a3 && r3 && u3 && !e3 && !i3 || f3 && r3 && u3 || !o3 && u3 || !c3) + return -1; + } + return 0; + } + function Cu(n3, t3, r3) { + for (var e3 = -1, u3 = n3.criteria, i3 = t3.criteria, o3 = u3.length, f3 = r3.length; ++e3 < o3; ) { + var c3 = Lu(u3[e3], i3[e3]); + if (c3) { + if (e3 >= f3) + return c3; + return c3 * ("desc" == r3[e3] ? -1 : 1); + } + } + return n3.index - t3.index; + } + function Uu(n3, t3, r3, e3) { + for (var u3 = -1, i3 = n3.length, o3 = r3.length, f3 = -1, c3 = t3.length, a3 = Gl(i3 - o3, 0), l3 = il(c3 + a3), s3 = !e3; ++f3 < c3; ) + l3[f3] = t3[f3]; + for (; ++u3 < o3; ) + (s3 || u3 < i3) && (l3[r3[u3]] = n3[u3]); + for (; a3--; ) + l3[f3++] = n3[u3++]; + return l3; + } + function Bu(n3, t3, r3, e3) { + for (var u3 = -1, i3 = n3.length, o3 = -1, f3 = r3.length, c3 = -1, a3 = t3.length, l3 = Gl(i3 - f3, 0), s3 = il(l3 + a3), h3 = !e3; ++u3 < l3; ) + s3[u3] = n3[u3]; + for (var p4 = u3; ++c3 < a3; ) + s3[p4 + c3] = t3[c3]; + for (; ++o3 < f3; ) + (h3 || u3 < i3) && (s3[p4 + r3[o3]] = n3[u3++]); + return s3; + } + function Tu(n3, t3) { + var r3 = -1, e3 = n3.length; + for (t3 || (t3 = il(e3)); ++r3 < e3; ) + t3[r3] = n3[r3]; + return t3; + } + function $u(n3, t3, r3, e3) { + var u3 = !r3; + r3 || (r3 = {}); + for (var i3 = -1, o3 = t3.length; ++i3 < o3; ) { + var f3 = t3[i3], c3 = e3 ? e3(r3[f3], n3[f3], f3, r3, n3) : X3; + c3 === X3 && (c3 = n3[f3]), u3 ? Br2(r3, f3, c3) : Sr2(r3, f3, c3); + } + return r3; + } + function Du(n3, t3) { + return $u(n3, Is(n3), t3); + } + function Mu(n3, t3) { + return $u(n3, Rs(n3), t3); + } + function Fu(n3, r3) { + return function(e3, u3) { + var i3 = bh(e3) ? t2 : Lr2, o3 = r3 ? r3() : {}; + return i3(e3, n3, mi(u3, 2), o3); + }; + } + function Nu(n3) { + return uu(function(t3, r3) { + var e3 = -1, u3 = r3.length, i3 = u3 > 1 ? r3[u3 - 1] : X3, o3 = u3 > 2 ? r3[2] : X3; + for (i3 = n3.length > 3 && "function" == typeof i3 ? (u3--, i3) : X3, o3 && Ui(r3[0], r3[1], o3) && (i3 = u3 < 3 ? X3 : i3, u3 = 1), t3 = ll(t3); ++e3 < u3; ) { + var f3 = r3[e3]; + f3 && n3(t3, f3, e3, i3); + } + return t3; + }); + } + function Pu(n3, t3) { + return function(r3, e3) { + if (null == r3) + return r3; + if (!Hf(r3)) + return n3(r3, e3); + for (var u3 = r3.length, i3 = t3 ? u3 : -1, o3 = ll(r3); (t3 ? i3-- : ++i3 < u3) && e3(o3[i3], i3, o3) !== false; ) + ; + return r3; + }; + } + function qu(n3) { + return function(t3, r3, e3) { + for (var u3 = -1, i3 = ll(t3), o3 = e3(t3), f3 = o3.length; f3--; ) { + var c3 = o3[n3 ? f3 : ++u3]; + if (r3(i3[c3], c3, i3) === false) + break; + } + return t3; + }; + } + function Zu(n3, t3, r3) { + function e3() { + return (this && this !== re && this instanceof e3 ? i3 : n3).apply(u3 ? r3 : this, arguments); + } + var u3 = t3 & _n, i3 = Gu(n3); + return e3; + } + function Ku(n3) { + return function(t3) { + t3 = Ec(t3); + var r3 = T2(t3) ? G2(t3) : X3, e3 = r3 ? r3[0] : t3.charAt(0), u3 = r3 ? Ou(r3, 1).join("") : t3.slice(1); + return e3[n3]() + u3; + }; + } + function Vu(n3) { + return function(t3) { + return l2(Ra(ca(t3).replace($r, "")), n3, ""); + }; + } + function Gu(n3) { + return function() { + var t3 = arguments; + switch (t3.length) { + case 0: + return new n3(); + case 1: + return new n3(t3[0]); + case 2: + return new n3(t3[0], t3[1]); + case 3: + return new n3(t3[0], t3[1], t3[2]); + case 4: + return new n3(t3[0], t3[1], t3[2], t3[3]); + case 5: + return new n3(t3[0], t3[1], t3[2], t3[3], t3[4]); + case 6: + return new n3(t3[0], t3[1], t3[2], t3[3], t3[4], t3[5]); + case 7: + return new n3(t3[0], t3[1], t3[2], t3[3], t3[4], t3[5], t3[6]); + } + var r3 = gs(n3.prototype), e3 = n3.apply(r3, t3); + return fc(e3) ? e3 : r3; + }; + } + function Hu(t3, r3, e3) { + function u3() { + for (var o3 = arguments.length, f3 = il(o3), c3 = o3, a3 = wi(u3); c3--; ) + f3[c3] = arguments[c3]; + var l3 = o3 < 3 && f3[0] !== a3 && f3[o3 - 1] !== a3 ? [] : N2(f3, a3); + return o3 -= l3.length, o3 < e3 ? oi(t3, r3, Qu, u3.placeholder, X3, f3, l3, X3, X3, e3 - o3) : n2(this && this !== re && this instanceof u3 ? i3 : t3, this, f3); + } + var i3 = Gu(t3); + return u3; + } + function Ju(n3) { + return function(t3, r3, e3) { + var u3 = ll(t3); + if (!Hf(t3)) { + var i3 = mi(r3, 3); + t3 = Pc(t3), r3 = function(n4) { + return i3(u3[n4], n4, u3); + }; + } + var o3 = n3(t3, r3, e3); + return o3 > -1 ? u3[i3 ? t3[o3] : o3] : X3; + }; + } + function Yu(n3) { + return gi(function(t3) { + var r3 = t3.length, e3 = r3, u3 = Y3.prototype.thru; + for (n3 && t3.reverse(); e3--; ) { + var i3 = t3[e3]; + if ("function" != typeof i3) + throw new pl(en); + if (u3 && !o3 && "wrapper" == bi(i3)) + var o3 = new Y3([], true); + } + for (e3 = o3 ? e3 : r3; ++e3 < r3; ) { + i3 = t3[e3]; + var f3 = bi(i3), c3 = "wrapper" == f3 ? Os(i3) : X3; + o3 = c3 && $i(c3[0]) && c3[1] == (mn | yn | bn | xn) && !c3[4].length && 1 == c3[9] ? o3[bi(c3[0])].apply(o3, c3[3]) : 1 == i3.length && $i(i3) ? o3[f3]() : o3.thru(i3); + } + return function() { + var n4 = arguments, e4 = n4[0]; + if (o3 && 1 == n4.length && bh(e4)) + return o3.plant(e4).value(); + for (var u4 = 0, i4 = r3 ? t3[u4].apply(this, n4) : e4; ++u4 < r3; ) + i4 = t3[u4].call(this, i4); + return i4; + }; + }); + } + function Qu(n3, t3, r3, e3, u3, i3, o3, f3, c3, a3) { + function l3() { + for (var y3 = arguments.length, d3 = il(y3), b3 = y3; b3--; ) + d3[b3] = arguments[b3]; + if (_3) + var w3 = wi(l3), m3 = C2(d3, w3); + if (e3 && (d3 = Uu(d3, e3, u3, _3)), i3 && (d3 = Bu(d3, i3, o3, _3)), y3 -= m3, _3 && y3 < a3) { + return oi(n3, t3, Qu, l3.placeholder, r3, d3, N2(d3, w3), f3, c3, a3 - y3); + } + var x4 = h3 ? r3 : this, j3 = p4 ? x4[n3] : n3; + return y3 = d3.length, f3 ? d3 = Hi(d3, f3) : v3 && y3 > 1 && d3.reverse(), s3 && c3 < y3 && (d3.length = c3), this && this !== re && this instanceof l3 && (j3 = g3 || Gu(j3)), j3.apply(x4, d3); + } + var s3 = t3 & mn, h3 = t3 & _n, p4 = t3 & vn, _3 = t3 & (yn | dn), v3 = t3 & jn, g3 = p4 ? X3 : Gu(n3); + return l3; + } + function Xu(n3, t3) { + return function(r3, e3) { + return Oe(r3, n3, t3(e3), {}); + }; + } + function ni(n3, t3) { + return function(r3, e3) { + var u3; + if (r3 === X3 && e3 === X3) + return t3; + if (r3 !== X3 && (u3 = r3), e3 !== X3) { + if (u3 === X3) + return e3; + "string" == typeof r3 || "string" == typeof e3 ? (r3 = vu(r3), e3 = vu(e3)) : (r3 = _u(r3), e3 = _u(e3)), u3 = n3(r3, e3); + } + return u3; + }; + } + function ti(t3) { + return gi(function(r3) { + return r3 = c2(r3, z2(mi())), uu(function(e3) { + var u3 = this; + return t3(r3, function(t4) { + return n2(t4, u3, e3); + }); + }); + }); + } + function ri(n3, t3) { + t3 = t3 === X3 ? " " : vu(t3); + var r3 = t3.length; + if (r3 < 2) + return r3 ? eu(t3, n3) : t3; + var e3 = eu(t3, Fl(n3 / V2(t3))); + return T2(t3) ? Ou(G2(e3), 0, n3).join("") : e3.slice(0, n3); + } + function ei(t3, r3, e3, u3) { + function i3() { + for (var r4 = -1, c3 = arguments.length, a3 = -1, l3 = u3.length, s3 = il(l3 + c3), h3 = this && this !== re && this instanceof i3 ? f3 : t3; ++a3 < l3; ) + s3[a3] = u3[a3]; + for (; c3--; ) + s3[a3++] = arguments[++r4]; + return n2(h3, o3 ? e3 : this, s3); + } + var o3 = r3 & _n, f3 = Gu(t3); + return i3; + } + function ui(n3) { + return function(t3, r3, e3) { + return e3 && "number" != typeof e3 && Ui(t3, r3, e3) && (r3 = e3 = X3), t3 = Ac(t3), r3 === X3 ? (r3 = t3, t3 = 0) : r3 = Ac(r3), e3 = e3 === X3 ? t3 < r3 ? 1 : -1 : Ac(e3), ru(t3, r3, e3, n3); + }; + } + function ii(n3) { + return function(t3, r3) { + return "string" == typeof t3 && "string" == typeof r3 || (t3 = Ic(t3), r3 = Ic(r3)), n3(t3, r3); + }; + } + function oi(n3, t3, r3, e3, u3, i3, o3, f3, c3, a3) { + var l3 = t3 & yn, s3 = l3 ? o3 : X3, h3 = l3 ? X3 : o3, p4 = l3 ? i3 : X3, _3 = l3 ? X3 : i3; + t3 |= l3 ? bn : wn, t3 &= ~(l3 ? wn : bn), t3 & gn || (t3 &= ~(_n | vn)); + var v3 = [n3, t3, u3, p4, s3, _3, h3, f3, c3, a3], g3 = r3.apply(X3, v3); + return $i(n3) && Ss(g3, v3), g3.placeholder = e3, Yi(g3, n3, t3); + } + function fi(n3) { + var t3 = al[n3]; + return function(n4, r3) { + if (n4 = Ic(n4), r3 = null == r3 ? 0 : Hl(kc(r3), 292), r3 && Zl(n4)) { + var e3 = (Ec(n4) + "e").split("e"); + return e3 = (Ec(t3(e3[0] + "e" + (+e3[1] + r3))) + "e").split("e"), +(e3[0] + "e" + (+e3[1] - r3)); + } + return t3(n4); + }; + } + function ci(n3) { + return function(t3) { + var r3 = zs(t3); + return r3 == Gn ? M2(t3) : r3 == tt2 ? q2(t3) : I2(t3, n3(t3)); + }; + } + function ai(n3, t3, r3, e3, u3, i3, o3, f3) { + var c3 = t3 & vn; + if (!c3 && "function" != typeof n3) + throw new pl(en); + var a3 = e3 ? e3.length : 0; + if (a3 || (t3 &= ~(bn | wn), e3 = u3 = X3), o3 = o3 === X3 ? o3 : Gl(kc(o3), 0), f3 = f3 === X3 ? f3 : kc(f3), a3 -= u3 ? u3.length : 0, t3 & wn) { + var l3 = e3, s3 = u3; + e3 = u3 = X3; + } + var h3 = c3 ? X3 : Os(n3), p4 = [n3, t3, r3, e3, u3, l3, s3, i3, o3, f3]; + if (h3 && qi(p4, h3), n3 = p4[0], t3 = p4[1], r3 = p4[2], e3 = p4[3], u3 = p4[4], f3 = p4[9] = p4[9] === X3 ? c3 ? 0 : n3.length : Gl(p4[9] - a3, 0), !f3 && t3 & (yn | dn) && (t3 &= ~(yn | dn)), t3 && t3 != _n) + _3 = t3 == yn || t3 == dn ? Hu(n3, t3, f3) : t3 != bn && t3 != (_n | bn) || u3.length ? Qu.apply(X3, p4) : ei(n3, t3, r3, e3); + else + var _3 = Zu(n3, t3, r3); + return Yi((h3 ? ms : Ss)(_3, p4), n3, t3); + } + function li(n3, t3, r3, e3) { + return n3 === X3 || Gf(n3, gl[r3]) && !bl.call(e3, r3) ? t3 : n3; + } + function si(n3, t3, r3, e3, u3, i3) { + return fc(n3) && fc(t3) && (i3.set(t3, n3), Ke(n3, t3, X3, si, i3), i3.delete(t3)), n3; + } + function hi(n3) { + return gc(n3) ? X3 : n3; + } + function pi(n3, t3, r3, e3, u3, i3) { + var o3 = r3 & hn, f3 = n3.length, c3 = t3.length; + if (f3 != c3 && !(o3 && c3 > f3)) + return false; + var a3 = i3.get(n3), l3 = i3.get(t3); + if (a3 && l3) + return a3 == t3 && l3 == n3; + var s3 = -1, p4 = true, _3 = r3 & pn ? new yr2() : X3; + for (i3.set(n3, t3), i3.set(t3, n3); ++s3 < f3; ) { + var v3 = n3[s3], g3 = t3[s3]; + if (e3) + var y3 = o3 ? e3(g3, v3, s3, t3, n3, i3) : e3(v3, g3, s3, n3, t3, i3); + if (y3 !== X3) { + if (y3) + continue; + p4 = false; + break; + } + if (_3) { + if (!h2(t3, function(n4, t4) { + if (!S2(_3, t4) && (v3 === n4 || u3(v3, n4, r3, e3, i3))) + return _3.push(t4); + })) { + p4 = false; + break; + } + } else if (v3 !== g3 && !u3(v3, g3, r3, e3, i3)) { + p4 = false; + break; + } + } + return i3.delete(n3), i3.delete(t3), p4; + } + function _i(n3, t3, r3, e3, u3, i3, o3) { + switch (r3) { + case ct2: + if (n3.byteLength != t3.byteLength || n3.byteOffset != t3.byteOffset) + return false; + n3 = n3.buffer, t3 = t3.buffer; + case ft2: + return !(n3.byteLength != t3.byteLength || !i3(new Rl(n3), new Rl(t3))); + case Nn: + case Pn: + case Hn: + return Gf(+n3, +t3); + case Zn: + return n3.name == t3.name && n3.message == t3.message; + case nt2: + case rt2: + return n3 == t3 + ""; + case Gn: + var f3 = M2; + case tt2: + var c3 = e3 & hn; + if (f3 || (f3 = P2), n3.size != t3.size && !c3) + return false; + var a3 = o3.get(n3); + if (a3) + return a3 == t3; + e3 |= pn, o3.set(n3, t3); + var l3 = pi(f3(n3), f3(t3), e3, u3, i3, o3); + return o3.delete(n3), l3; + case et2: + if (_s) + return _s.call(n3) == _s.call(t3); + } + return false; + } + function vi(n3, t3, r3, e3, u3, i3) { + var o3 = r3 & hn, f3 = yi(n3), c3 = f3.length; + if (c3 != yi(t3).length && !o3) + return false; + for (var a3 = c3; a3--; ) { + var l3 = f3[a3]; + if (!(o3 ? l3 in t3 : bl.call(t3, l3))) + return false; + } + var s3 = i3.get(n3), h3 = i3.get(t3); + if (s3 && h3) + return s3 == t3 && h3 == n3; + var p4 = true; + i3.set(n3, t3), i3.set(t3, n3); + for (var _3 = o3; ++a3 < c3; ) { + l3 = f3[a3]; + var v3 = n3[l3], g3 = t3[l3]; + if (e3) + var y3 = o3 ? e3(g3, v3, l3, t3, n3, i3) : e3(v3, g3, l3, n3, t3, i3); + if (!(y3 === X3 ? v3 === g3 || u3(v3, g3, r3, e3, i3) : y3)) { + p4 = false; + break; + } + _3 || (_3 = "constructor" == l3); + } + if (p4 && !_3) { + var d3 = n3.constructor, b3 = t3.constructor; + d3 != b3 && "constructor" in n3 && "constructor" in t3 && !("function" == typeof d3 && d3 instanceof d3 && "function" == typeof b3 && b3 instanceof b3) && (p4 = false); + } + return i3.delete(n3), i3.delete(t3), p4; + } + function gi(n3) { + return Ls(Vi(n3, X3, _o), n3 + ""); + } + function yi(n3) { + return de2(n3, Pc, Is); + } + function di(n3) { + return de2(n3, qc, Rs); + } + function bi(n3) { + for (var t3 = n3.name + "", r3 = fs[t3], e3 = bl.call(fs, t3) ? r3.length : 0; e3--; ) { + var u3 = r3[e3], i3 = u3.func; + if (null == i3 || i3 == n3) + return u3.name; + } + return t3; + } + function wi(n3) { + return (bl.call(Z3, "placeholder") ? Z3 : n3).placeholder; + } + function mi() { + var n3 = Z3.iteratee || Ca; + return n3 = n3 === Ca ? De : n3, arguments.length ? n3(arguments[0], arguments[1]) : n3; + } + function xi(n3, t3) { + var r3 = n3.__data__; + return Ti(t3) ? r3["string" == typeof t3 ? "string" : "hash"] : r3.map; + } + function ji(n3) { + for (var t3 = Pc(n3), r3 = t3.length; r3--; ) { + var e3 = t3[r3], u3 = n3[e3]; + t3[r3] = [e3, u3, Fi(u3)]; + } + return t3; + } + function Ai(n3, t3) { + var r3 = B2(n3, t3); + return Ue(r3) ? r3 : X3; + } + function ki(n3) { + var t3 = bl.call(n3, Bl), r3 = n3[Bl]; + try { + n3[Bl] = X3; + var e3 = true; + } catch (n4) { + } + var u3 = xl.call(n3); + return e3 && (t3 ? n3[Bl] = r3 : delete n3[Bl]), u3; + } + function Oi(n3, t3, r3) { + for (var e3 = -1, u3 = r3.length; ++e3 < u3; ) { + var i3 = r3[e3], o3 = i3.size; + switch (i3.type) { + case "drop": + n3 += o3; + break; + case "dropRight": + t3 -= o3; + break; + case "take": + t3 = Hl(t3, n3 + o3); + break; + case "takeRight": + n3 = Gl(n3, t3 - o3); + } + } + return { start: n3, end: t3 }; + } + function Ii(n3) { + var t3 = n3.match(Bt); + return t3 ? t3[1].split(Tt) : []; + } + function Ri(n3, t3, r3) { + t3 = ku(t3, n3); + for (var e3 = -1, u3 = t3.length, i3 = false; ++e3 < u3; ) { + var o3 = no(t3[e3]); + if (!(i3 = null != n3 && r3(n3, o3))) + break; + n3 = n3[o3]; + } + return i3 || ++e3 != u3 ? i3 : (u3 = null == n3 ? 0 : n3.length, !!u3 && oc(u3) && Ci(o3, u3) && (bh(n3) || dh(n3))); + } + function zi(n3) { + var t3 = n3.length, r3 = new n3.constructor(t3); + return t3 && "string" == typeof n3[0] && bl.call(n3, "index") && (r3.index = n3.index, r3.input = n3.input), r3; + } + function Ei(n3) { + return "function" != typeof n3.constructor || Mi(n3) ? {} : gs(El(n3)); + } + function Si(n3, t3, r3) { + var e3 = n3.constructor; + switch (t3) { + case ft2: + return Ru(n3); + case Nn: + case Pn: + return new e3(+n3); + case ct2: + return zu(n3, r3); + case at2: + case lt2: + case st2: + case ht2: + case pt2: + case _t2: + case vt2: + case gt2: + case yt2: + return Wu(n3, r3); + case Gn: + return new e3(); + case Hn: + case rt2: + return new e3(n3); + case nt2: + return Eu(n3); + case tt2: + return new e3(); + case et2: + return Su(n3); + } + } + function Wi(n3, t3) { + var r3 = t3.length; + if (!r3) + return n3; + var e3 = r3 - 1; + return t3[e3] = (r3 > 1 ? "& " : "") + t3[e3], t3 = t3.join(r3 > 2 ? ", " : " "), n3.replace(Ut, "{\n/* [wrapped with " + t3 + "] */\n"); + } + function Li(n3) { + return bh(n3) || dh(n3) || !!(Cl && n3 && n3[Cl]); + } + function Ci(n3, t3) { + var r3 = typeof n3; + return t3 = null == t3 ? Wn : t3, !!t3 && ("number" == r3 || "symbol" != r3 && Vt.test(n3)) && n3 > -1 && n3 % 1 == 0 && n3 < t3; + } + function Ui(n3, t3, r3) { + if (!fc(r3)) + return false; + var e3 = typeof t3; + return !!("number" == e3 ? Hf(r3) && Ci(t3, r3.length) : "string" == e3 && t3 in r3) && Gf(r3[t3], n3); + } + function Bi(n3, t3) { + if (bh(n3)) + return false; + var r3 = typeof n3; + return !("number" != r3 && "symbol" != r3 && "boolean" != r3 && null != n3 && !bc(n3)) || (zt2.test(n3) || !Rt.test(n3) || null != t3 && n3 in ll(t3)); + } + function Ti(n3) { + var t3 = typeof n3; + return "string" == t3 || "number" == t3 || "symbol" == t3 || "boolean" == t3 ? "__proto__" !== n3 : null === n3; + } + function $i(n3) { + var t3 = bi(n3), r3 = Z3[t3]; + if ("function" != typeof r3 || !(t3 in Ct3.prototype)) + return false; + if (n3 === r3) + return true; + var e3 = Os(r3); + return !!e3 && n3 === e3[0]; + } + function Di(n3) { + return !!ml && ml in n3; + } + function Mi(n3) { + var t3 = n3 && n3.constructor; + return n3 === ("function" == typeof t3 && t3.prototype || gl); + } + function Fi(n3) { + return n3 === n3 && !fc(n3); + } + function Ni(n3, t3) { + return function(r3) { + return null != r3 && (r3[n3] === t3 && (t3 !== X3 || n3 in ll(r3))); + }; + } + function Pi(n3) { + var t3 = Cf(n3, function(n4) { + return r3.size === fn && r3.clear(), n4; + }), r3 = t3.cache; + return t3; + } + function qi(n3, t3) { + var r3 = n3[1], e3 = t3[1], u3 = r3 | e3, i3 = u3 < (_n | vn | mn), o3 = e3 == mn && r3 == yn || e3 == mn && r3 == xn && n3[7].length <= t3[8] || e3 == (mn | xn) && t3[7].length <= t3[8] && r3 == yn; + if (!i3 && !o3) + return n3; + e3 & _n && (n3[2] = t3[2], u3 |= r3 & _n ? 0 : gn); + var f3 = t3[3]; + if (f3) { + var c3 = n3[3]; + n3[3] = c3 ? Uu(c3, f3, t3[4]) : f3, n3[4] = c3 ? N2(n3[3], cn) : t3[4]; + } + return f3 = t3[5], f3 && (c3 = n3[5], n3[5] = c3 ? Bu(c3, f3, t3[6]) : f3, n3[6] = c3 ? N2(n3[5], cn) : t3[6]), f3 = t3[7], f3 && (n3[7] = f3), e3 & mn && (n3[8] = null == n3[8] ? t3[8] : Hl(n3[8], t3[8])), null == n3[9] && (n3[9] = t3[9]), n3[0] = t3[0], n3[1] = u3, n3; + } + function Zi(n3) { + var t3 = []; + if (null != n3) + for (var r3 in ll(n3)) + t3.push(r3); + return t3; + } + function Ki(n3) { + return xl.call(n3); + } + function Vi(t3, r3, e3) { + return r3 = Gl(r3 === X3 ? t3.length - 1 : r3, 0), function() { + for (var u3 = arguments, i3 = -1, o3 = Gl(u3.length - r3, 0), f3 = il(o3); ++i3 < o3; ) + f3[i3] = u3[r3 + i3]; + i3 = -1; + for (var c3 = il(r3 + 1); ++i3 < r3; ) + c3[i3] = u3[i3]; + return c3[r3] = e3(f3), n2(t3, this, c3); + }; + } + function Gi(n3, t3) { + return t3.length < 2 ? n3 : _e2(n3, au(t3, 0, -1)); + } + function Hi(n3, t3) { + for (var r3 = n3.length, e3 = Hl(t3.length, r3), u3 = Tu(n3); e3--; ) { + var i3 = t3[e3]; + n3[e3] = Ci(i3, r3) ? u3[i3] : X3; + } + return n3; + } + function Ji(n3, t3) { + if (("constructor" !== t3 || "function" != typeof n3[t3]) && "__proto__" != t3) + return n3[t3]; + } + function Yi(n3, t3, r3) { + var e3 = t3 + ""; + return Ls(n3, Wi(e3, ro(Ii(e3), r3))); + } + function Qi(n3) { + var t3 = 0, r3 = 0; + return function() { + var e3 = Jl(), u3 = In - (e3 - r3); + if (r3 = e3, u3 > 0) { + if (++t3 >= On) + return arguments[0]; + } else + t3 = 0; + return n3.apply(X3, arguments); + }; + } + function Xi(n3, t3) { + var r3 = -1, e3 = n3.length, u3 = e3 - 1; + for (t3 = t3 === X3 ? e3 : t3; ++r3 < t3; ) { + var i3 = tu(r3, u3), o3 = n3[i3]; + n3[i3] = n3[r3], n3[r3] = o3; + } + return n3.length = t3, n3; + } + function no(n3) { + if ("string" == typeof n3 || bc(n3)) + return n3; + var t3 = n3 + ""; + return "0" == t3 && 1 / n3 == -Sn ? "-0" : t3; + } + function to(n3) { + if (null != n3) { + try { + return dl.call(n3); + } catch (n4) { + } + try { + return n3 + ""; + } catch (n4) { + } + } + return ""; + } + function ro(n3, t3) { + return r2($n, function(r3) { + var e3 = "_." + r3[0]; + t3 & r3[1] && !o2(n3, e3) && n3.push(e3); + }), n3.sort(); + } + function eo(n3) { + if (n3 instanceof Ct3) + return n3.clone(); + var t3 = new Y3(n3.__wrapped__, n3.__chain__); + return t3.__actions__ = Tu(n3.__actions__), t3.__index__ = n3.__index__, t3.__values__ = n3.__values__, t3; + } + function uo(n3, t3, r3) { + t3 = (r3 ? Ui(n3, t3, r3) : t3 === X3) ? 1 : Gl(kc(t3), 0); + var e3 = null == n3 ? 0 : n3.length; + if (!e3 || t3 < 1) + return []; + for (var u3 = 0, i3 = 0, o3 = il(Fl(e3 / t3)); u3 < e3; ) + o3[i3++] = au(n3, u3, u3 += t3); + return o3; + } + function io(n3) { + for (var t3 = -1, r3 = null == n3 ? 0 : n3.length, e3 = 0, u3 = []; ++t3 < r3; ) { + var i3 = n3[t3]; + i3 && (u3[e3++] = i3); + } + return u3; + } + function oo() { + var n3 = arguments.length; + if (!n3) + return []; + for (var t3 = il(n3 - 1), r3 = arguments[0], e3 = n3; e3--; ) + t3[e3 - 1] = arguments[e3]; + return a2(bh(r3) ? Tu(r3) : [r3], ee2(t3, 1)); + } + function fo(n3, t3, r3) { + var e3 = null == n3 ? 0 : n3.length; + return e3 ? (t3 = r3 || t3 === X3 ? 1 : kc(t3), au(n3, t3 < 0 ? 0 : t3, e3)) : []; + } + function co(n3, t3, r3) { + var e3 = null == n3 ? 0 : n3.length; + return e3 ? (t3 = r3 || t3 === X3 ? 1 : kc(t3), t3 = e3 - t3, au(n3, 0, t3 < 0 ? 0 : t3)) : []; + } + function ao(n3, t3) { + return n3 && n3.length ? bu(n3, mi(t3, 3), true, true) : []; + } + function lo(n3, t3) { + return n3 && n3.length ? bu(n3, mi(t3, 3), true) : []; + } + function so(n3, t3, r3, e3) { + var u3 = null == n3 ? 0 : n3.length; + return u3 ? (r3 && "number" != typeof r3 && Ui(n3, t3, r3) && (r3 = 0, e3 = u3), ne2(n3, t3, r3, e3)) : []; + } + function ho(n3, t3, r3) { + var e3 = null == n3 ? 0 : n3.length; + if (!e3) + return -1; + var u3 = null == r3 ? 0 : kc(r3); + return u3 < 0 && (u3 = Gl(e3 + u3, 0)), g2(n3, mi(t3, 3), u3); + } + function po(n3, t3, r3) { + var e3 = null == n3 ? 0 : n3.length; + if (!e3) + return -1; + var u3 = e3 - 1; + return r3 !== X3 && (u3 = kc(r3), u3 = r3 < 0 ? Gl(e3 + u3, 0) : Hl(u3, e3 - 1)), g2(n3, mi(t3, 3), u3, true); + } + function _o(n3) { + return (null == n3 ? 0 : n3.length) ? ee2(n3, 1) : []; + } + function vo(n3) { + return (null == n3 ? 0 : n3.length) ? ee2(n3, Sn) : []; + } + function go(n3, t3) { + return (null == n3 ? 0 : n3.length) ? (t3 = t3 === X3 ? 1 : kc(t3), ee2(n3, t3)) : []; + } + function yo(n3) { + for (var t3 = -1, r3 = null == n3 ? 0 : n3.length, e3 = {}; ++t3 < r3; ) { + var u3 = n3[t3]; + e3[u3[0]] = u3[1]; + } + return e3; + } + function bo(n3) { + return n3 && n3.length ? n3[0] : X3; + } + function wo(n3, t3, r3) { + var e3 = null == n3 ? 0 : n3.length; + if (!e3) + return -1; + var u3 = null == r3 ? 0 : kc(r3); + return u3 < 0 && (u3 = Gl(e3 + u3, 0)), y2(n3, t3, u3); + } + function mo(n3) { + return (null == n3 ? 0 : n3.length) ? au(n3, 0, -1) : []; + } + function xo(n3, t3) { + return null == n3 ? "" : Kl.call(n3, t3); + } + function jo(n3) { + var t3 = null == n3 ? 0 : n3.length; + return t3 ? n3[t3 - 1] : X3; + } + function Ao(n3, t3, r3) { + var e3 = null == n3 ? 0 : n3.length; + if (!e3) + return -1; + var u3 = e3; + return r3 !== X3 && (u3 = kc(r3), u3 = u3 < 0 ? Gl(e3 + u3, 0) : Hl(u3, e3 - 1)), t3 === t3 ? K2(n3, t3, u3) : g2(n3, b2, u3, true); + } + function ko(n3, t3) { + return n3 && n3.length ? Ge(n3, kc(t3)) : X3; + } + function Oo(n3, t3) { + return n3 && n3.length && t3 && t3.length ? Xe(n3, t3) : n3; + } + function Io(n3, t3, r3) { + return n3 && n3.length && t3 && t3.length ? Xe(n3, t3, mi(r3, 2)) : n3; + } + function Ro(n3, t3, r3) { + return n3 && n3.length && t3 && t3.length ? Xe(n3, t3, X3, r3) : n3; + } + function zo(n3, t3) { + var r3 = []; + if (!n3 || !n3.length) + return r3; + var e3 = -1, u3 = [], i3 = n3.length; + for (t3 = mi(t3, 3); ++e3 < i3; ) { + var o3 = n3[e3]; + t3(o3, e3, n3) && (r3.push(o3), u3.push(e3)); + } + return nu(n3, u3), r3; + } + function Eo(n3) { + return null == n3 ? n3 : Xl.call(n3); + } + function So(n3, t3, r3) { + var e3 = null == n3 ? 0 : n3.length; + return e3 ? (r3 && "number" != typeof r3 && Ui(n3, t3, r3) ? (t3 = 0, r3 = e3) : (t3 = null == t3 ? 0 : kc(t3), r3 = r3 === X3 ? e3 : kc(r3)), au(n3, t3, r3)) : []; + } + function Wo(n3, t3) { + return su(n3, t3); + } + function Lo(n3, t3, r3) { + return hu(n3, t3, mi(r3, 2)); + } + function Co(n3, t3) { + var r3 = null == n3 ? 0 : n3.length; + if (r3) { + var e3 = su(n3, t3); + if (e3 < r3 && Gf(n3[e3], t3)) + return e3; + } + return -1; + } + function Uo(n3, t3) { + return su(n3, t3, true); + } + function Bo(n3, t3, r3) { + return hu(n3, t3, mi(r3, 2), true); + } + function To(n3, t3) { + if (null == n3 ? 0 : n3.length) { + var r3 = su(n3, t3, true) - 1; + if (Gf(n3[r3], t3)) + return r3; + } + return -1; + } + function $o(n3) { + return n3 && n3.length ? pu(n3) : []; + } + function Do(n3, t3) { + return n3 && n3.length ? pu(n3, mi(t3, 2)) : []; + } + function Mo(n3) { + var t3 = null == n3 ? 0 : n3.length; + return t3 ? au(n3, 1, t3) : []; + } + function Fo(n3, t3, r3) { + return n3 && n3.length ? (t3 = r3 || t3 === X3 ? 1 : kc(t3), au(n3, 0, t3 < 0 ? 0 : t3)) : []; + } + function No(n3, t3, r3) { + var e3 = null == n3 ? 0 : n3.length; + return e3 ? (t3 = r3 || t3 === X3 ? 1 : kc(t3), t3 = e3 - t3, au(n3, t3 < 0 ? 0 : t3, e3)) : []; + } + function Po(n3, t3) { + return n3 && n3.length ? bu(n3, mi(t3, 3), false, true) : []; + } + function qo(n3, t3) { + return n3 && n3.length ? bu(n3, mi(t3, 3)) : []; + } + function Zo(n3) { + return n3 && n3.length ? gu(n3) : []; + } + function Ko(n3, t3) { + return n3 && n3.length ? gu(n3, mi(t3, 2)) : []; + } + function Vo(n3, t3) { + return t3 = "function" == typeof t3 ? t3 : X3, n3 && n3.length ? gu(n3, X3, t3) : []; + } + function Go(n3) { + if (!n3 || !n3.length) + return []; + var t3 = 0; + return n3 = i2(n3, function(n4) { + if (Jf(n4)) + return t3 = Gl(n4.length, t3), true; + }), O2(t3, function(t4) { + return c2(n3, m2(t4)); + }); + } + function Ho(t3, r3) { + if (!t3 || !t3.length) + return []; + var e3 = Go(t3); + return null == r3 ? e3 : c2(e3, function(t4) { + return n2(r3, X3, t4); + }); + } + function Jo(n3, t3) { + return xu(n3 || [], t3 || [], Sr2); + } + function Yo(n3, t3) { + return xu(n3 || [], t3 || [], fu); + } + function Qo(n3) { + var t3 = Z3(n3); + return t3.__chain__ = true, t3; + } + function Xo(n3, t3) { + return t3(n3), n3; + } + function nf(n3, t3) { + return t3(n3); + } + function tf() { + return Qo(this); + } + function rf() { + return new Y3(this.value(), this.__chain__); + } + function ef() { + this.__values__ === X3 && (this.__values__ = jc(this.value())); + var n3 = this.__index__ >= this.__values__.length; + return { done: n3, value: n3 ? X3 : this.__values__[this.__index__++] }; + } + function uf() { + return this; + } + function of(n3) { + for (var t3, r3 = this; r3 instanceof J3; ) { + var e3 = eo(r3); + e3.__index__ = 0, e3.__values__ = X3, t3 ? u3.__wrapped__ = e3 : t3 = e3; + var u3 = e3; + r3 = r3.__wrapped__; + } + return u3.__wrapped__ = n3, t3; + } + function ff() { + var n3 = this.__wrapped__; + if (n3 instanceof Ct3) { + var t3 = n3; + return this.__actions__.length && (t3 = new Ct3(this)), t3 = t3.reverse(), t3.__actions__.push({ func: nf, args: [Eo], thisArg: X3 }), new Y3(t3, this.__chain__); + } + return this.thru(Eo); + } + function cf() { + return wu(this.__wrapped__, this.__actions__); + } + function af(n3, t3, r3) { + var e3 = bh(n3) ? u2 : Jr2; + return r3 && Ui(n3, t3, r3) && (t3 = X3), e3(n3, mi(t3, 3)); + } + function lf(n3, t3) { + return (bh(n3) ? i2 : te2)(n3, mi(t3, 3)); + } + function sf(n3, t3) { + return ee2(yf(n3, t3), 1); + } + function hf(n3, t3) { + return ee2(yf(n3, t3), Sn); + } + function pf(n3, t3, r3) { + return r3 = r3 === X3 ? 1 : kc(r3), ee2(yf(n3, t3), r3); + } + function _f(n3, t3) { + return (bh(n3) ? r2 : ys)(n3, mi(t3, 3)); + } + function vf(n3, t3) { + return (bh(n3) ? e2 : ds)(n3, mi(t3, 3)); + } + function gf(n3, t3, r3, e3) { + n3 = Hf(n3) ? n3 : ra(n3), r3 = r3 && !e3 ? kc(r3) : 0; + var u3 = n3.length; + return r3 < 0 && (r3 = Gl(u3 + r3, 0)), dc(n3) ? r3 <= u3 && n3.indexOf(t3, r3) > -1 : !!u3 && y2(n3, t3, r3) > -1; + } + function yf(n3, t3) { + return (bh(n3) ? c2 : Pe)(n3, mi(t3, 3)); + } + function df(n3, t3, r3, e3) { + return null == n3 ? [] : (bh(t3) || (t3 = null == t3 ? [] : [t3]), r3 = e3 ? X3 : r3, bh(r3) || (r3 = null == r3 ? [] : [r3]), He(n3, t3, r3)); + } + function bf(n3, t3, r3) { + var e3 = bh(n3) ? l2 : j2, u3 = arguments.length < 3; + return e3(n3, mi(t3, 4), r3, u3, ys); + } + function wf(n3, t3, r3) { + var e3 = bh(n3) ? s2 : j2, u3 = arguments.length < 3; + return e3(n3, mi(t3, 4), r3, u3, ds); + } + function mf(n3, t3) { + return (bh(n3) ? i2 : te2)(n3, Uf(mi(t3, 3))); + } + function xf(n3) { + return (bh(n3) ? Ir2 : iu)(n3); + } + function jf(n3, t3, r3) { + return t3 = (r3 ? Ui(n3, t3, r3) : t3 === X3) ? 1 : kc(t3), (bh(n3) ? Rr2 : ou)(n3, t3); + } + function Af(n3) { + return (bh(n3) ? zr2 : cu)(n3); + } + function kf(n3) { + if (null == n3) + return 0; + if (Hf(n3)) + return dc(n3) ? V2(n3) : n3.length; + var t3 = zs(n3); + return t3 == Gn || t3 == tt2 ? n3.size : Me(n3).length; + } + function Of(n3, t3, r3) { + var e3 = bh(n3) ? h2 : lu; + return r3 && Ui(n3, t3, r3) && (t3 = X3), e3(n3, mi(t3, 3)); + } + function If(n3, t3) { + if ("function" != typeof t3) + throw new pl(en); + return n3 = kc(n3), function() { + if (--n3 < 1) + return t3.apply(this, arguments); + }; + } + function Rf(n3, t3, r3) { + return t3 = r3 ? X3 : t3, t3 = n3 && null == t3 ? n3.length : t3, ai(n3, mn, X3, X3, X3, X3, t3); + } + function zf(n3, t3) { + var r3; + if ("function" != typeof t3) + throw new pl(en); + return n3 = kc(n3), function() { + return --n3 > 0 && (r3 = t3.apply(this, arguments)), n3 <= 1 && (t3 = X3), r3; + }; + } + function Ef(n3, t3, r3) { + t3 = r3 ? X3 : t3; + var e3 = ai(n3, yn, X3, X3, X3, X3, X3, t3); + return e3.placeholder = Ef.placeholder, e3; + } + function Sf(n3, t3, r3) { + t3 = r3 ? X3 : t3; + var e3 = ai(n3, dn, X3, X3, X3, X3, X3, t3); + return e3.placeholder = Sf.placeholder, e3; + } + function Wf(n3, t3, r3) { + function e3(t4) { + var r4 = h3, e4 = p4; + return h3 = p4 = X3, d3 = t4, v3 = n3.apply(e4, r4); + } + function u3(n4) { + return d3 = n4, g3 = Ws(f3, t3), b3 ? e3(n4) : v3; + } + function i3(n4) { + var r4 = n4 - y3, e4 = n4 - d3, u4 = t3 - r4; + return w3 ? Hl(u4, _3 - e4) : u4; + } + function o3(n4) { + var r4 = n4 - y3, e4 = n4 - d3; + return y3 === X3 || r4 >= t3 || r4 < 0 || w3 && e4 >= _3; + } + function f3() { + var n4 = fh(); + return o3(n4) ? c3(n4) : (g3 = Ws(f3, i3(n4)), X3); + } + function c3(n4) { + return g3 = X3, m3 && h3 ? e3(n4) : (h3 = p4 = X3, v3); + } + function a3() { + g3 !== X3 && As(g3), d3 = 0, h3 = y3 = p4 = g3 = X3; + } + function l3() { + return g3 === X3 ? v3 : c3(fh()); + } + function s3() { + var n4 = fh(), r4 = o3(n4); + if (h3 = arguments, p4 = this, y3 = n4, r4) { + if (g3 === X3) + return u3(y3); + if (w3) + return As(g3), g3 = Ws(f3, t3), e3(y3); + } + return g3 === X3 && (g3 = Ws(f3, t3)), v3; + } + var h3, p4, _3, v3, g3, y3, d3 = 0, b3 = false, w3 = false, m3 = true; + if ("function" != typeof n3) + throw new pl(en); + return t3 = Ic(t3) || 0, fc(r3) && (b3 = !!r3.leading, w3 = "maxWait" in r3, _3 = w3 ? Gl(Ic(r3.maxWait) || 0, t3) : _3, m3 = "trailing" in r3 ? !!r3.trailing : m3), s3.cancel = a3, s3.flush = l3, s3; + } + function Lf(n3) { + return ai(n3, jn); + } + function Cf(n3, t3) { + if ("function" != typeof n3 || null != t3 && "function" != typeof t3) + throw new pl(en); + var r3 = function() { + var e3 = arguments, u3 = t3 ? t3.apply(this, e3) : e3[0], i3 = r3.cache; + if (i3.has(u3)) + return i3.get(u3); + var o3 = n3.apply(this, e3); + return r3.cache = i3.set(u3, o3) || i3, o3; + }; + return r3.cache = new (Cf.Cache || sr2)(), r3; + } + function Uf(n3) { + if ("function" != typeof n3) + throw new pl(en); + return function() { + var t3 = arguments; + switch (t3.length) { + case 0: + return !n3.call(this); + case 1: + return !n3.call(this, t3[0]); + case 2: + return !n3.call(this, t3[0], t3[1]); + case 3: + return !n3.call(this, t3[0], t3[1], t3[2]); + } + return !n3.apply(this, t3); + }; + } + function Bf(n3) { + return zf(2, n3); + } + function Tf(n3, t3) { + if ("function" != typeof n3) + throw new pl(en); + return t3 = t3 === X3 ? t3 : kc(t3), uu(n3, t3); + } + function $f(t3, r3) { + if ("function" != typeof t3) + throw new pl(en); + return r3 = null == r3 ? 0 : Gl(kc(r3), 0), uu(function(e3) { + var u3 = e3[r3], i3 = Ou(e3, 0, r3); + return u3 && a2(i3, u3), n2(t3, this, i3); + }); + } + function Df(n3, t3, r3) { + var e3 = true, u3 = true; + if ("function" != typeof n3) + throw new pl(en); + return fc(r3) && (e3 = "leading" in r3 ? !!r3.leading : e3, u3 = "trailing" in r3 ? !!r3.trailing : u3), Wf(n3, t3, { leading: e3, maxWait: t3, trailing: u3 }); + } + function Mf(n3) { + return Rf(n3, 1); + } + function Ff(n3, t3) { + return ph(Au(t3), n3); + } + function Nf() { + if (!arguments.length) + return []; + var n3 = arguments[0]; + return bh(n3) ? n3 : [n3]; + } + function Pf(n3) { + return Fr2(n3, sn); + } + function qf(n3, t3) { + return t3 = "function" == typeof t3 ? t3 : X3, Fr2(n3, sn, t3); + } + function Zf(n3) { + return Fr2(n3, an | sn); + } + function Kf(n3, t3) { + return t3 = "function" == typeof t3 ? t3 : X3, Fr2(n3, an | sn, t3); + } + function Vf(n3, t3) { + return null == t3 || Pr2(n3, t3, Pc(t3)); + } + function Gf(n3, t3) { + return n3 === t3 || n3 !== n3 && t3 !== t3; + } + function Hf(n3) { + return null != n3 && oc(n3.length) && !uc(n3); + } + function Jf(n3) { + return cc(n3) && Hf(n3); + } + function Yf(n3) { + return n3 === true || n3 === false || cc(n3) && we(n3) == Nn; + } + function Qf(n3) { + return cc(n3) && 1 === n3.nodeType && !gc(n3); + } + function Xf(n3) { + if (null == n3) + return true; + if (Hf(n3) && (bh(n3) || "string" == typeof n3 || "function" == typeof n3.splice || mh(n3) || Oh(n3) || dh(n3))) + return !n3.length; + var t3 = zs(n3); + if (t3 == Gn || t3 == tt2) + return !n3.size; + if (Mi(n3)) + return !Me(n3).length; + for (var r3 in n3) + if (bl.call(n3, r3)) + return false; + return true; + } + function nc(n3, t3) { + return Se(n3, t3); + } + function tc(n3, t3, r3) { + r3 = "function" == typeof r3 ? r3 : X3; + var e3 = r3 ? r3(n3, t3) : X3; + return e3 === X3 ? Se(n3, t3, X3, r3) : !!e3; + } + function rc(n3) { + if (!cc(n3)) + return false; + var t3 = we(n3); + return t3 == Zn || t3 == qn || "string" == typeof n3.message && "string" == typeof n3.name && !gc(n3); + } + function ec(n3) { + return "number" == typeof n3 && Zl(n3); + } + function uc(n3) { + if (!fc(n3)) + return false; + var t3 = we(n3); + return t3 == Kn || t3 == Vn || t3 == Fn || t3 == Xn; + } + function ic(n3) { + return "number" == typeof n3 && n3 == kc(n3); + } + function oc(n3) { + return "number" == typeof n3 && n3 > -1 && n3 % 1 == 0 && n3 <= Wn; + } + function fc(n3) { + var t3 = typeof n3; + return null != n3 && ("object" == t3 || "function" == t3); + } + function cc(n3) { + return null != n3 && "object" == typeof n3; + } + function ac(n3, t3) { + return n3 === t3 || Ce(n3, t3, ji(t3)); + } + function lc(n3, t3, r3) { + return r3 = "function" == typeof r3 ? r3 : X3, Ce(n3, t3, ji(t3), r3); + } + function sc(n3) { + return vc(n3) && n3 != +n3; + } + function hc(n3) { + if (Es(n3)) + throw new fl(rn); + return Ue(n3); + } + function pc(n3) { + return null === n3; + } + function _c(n3) { + return null == n3; + } + function vc(n3) { + return "number" == typeof n3 || cc(n3) && we(n3) == Hn; + } + function gc(n3) { + if (!cc(n3) || we(n3) != Yn) + return false; + var t3 = El(n3); + if (null === t3) + return true; + var r3 = bl.call(t3, "constructor") && t3.constructor; + return "function" == typeof r3 && r3 instanceof r3 && dl.call(r3) == jl; + } + function yc(n3) { + return ic(n3) && n3 >= -Wn && n3 <= Wn; + } + function dc(n3) { + return "string" == typeof n3 || !bh(n3) && cc(n3) && we(n3) == rt2; + } + function bc(n3) { + return "symbol" == typeof n3 || cc(n3) && we(n3) == et2; + } + function wc(n3) { + return n3 === X3; + } + function mc(n3) { + return cc(n3) && zs(n3) == it2; + } + function xc(n3) { + return cc(n3) && we(n3) == ot2; + } + function jc(n3) { + if (!n3) + return []; + if (Hf(n3)) + return dc(n3) ? G2(n3) : Tu(n3); + if (Ul && n3[Ul]) + return D2(n3[Ul]()); + var t3 = zs(n3); + return (t3 == Gn ? M2 : t3 == tt2 ? P2 : ra)(n3); + } + function Ac(n3) { + if (!n3) + return 0 === n3 ? n3 : 0; + if (n3 = Ic(n3), n3 === Sn || n3 === -Sn) { + return (n3 < 0 ? -1 : 1) * Ln; + } + return n3 === n3 ? n3 : 0; + } + function kc(n3) { + var t3 = Ac(n3), r3 = t3 % 1; + return t3 === t3 ? r3 ? t3 - r3 : t3 : 0; + } + function Oc(n3) { + return n3 ? Mr2(kc(n3), 0, Un) : 0; + } + function Ic(n3) { + if ("number" == typeof n3) + return n3; + if (bc(n3)) + return Cn; + if (fc(n3)) { + var t3 = "function" == typeof n3.valueOf ? n3.valueOf() : n3; + n3 = fc(t3) ? t3 + "" : t3; + } + if ("string" != typeof n3) + return 0 === n3 ? n3 : +n3; + n3 = R2(n3); + var r3 = qt.test(n3); + return r3 || Kt.test(n3) ? Xr(n3.slice(2), r3 ? 2 : 8) : Pt.test(n3) ? Cn : +n3; + } + function Rc(n3) { + return $u(n3, qc(n3)); + } + function zc(n3) { + return n3 ? Mr2(kc(n3), -Wn, Wn) : 0 === n3 ? n3 : 0; + } + function Ec(n3) { + return null == n3 ? "" : vu(n3); + } + function Sc(n3, t3) { + var r3 = gs(n3); + return null == t3 ? r3 : Cr2(r3, t3); + } + function Wc(n3, t3) { + return v2(n3, mi(t3, 3), ue2); + } + function Lc(n3, t3) { + return v2(n3, mi(t3, 3), oe2); + } + function Cc(n3, t3) { + return null == n3 ? n3 : bs(n3, mi(t3, 3), qc); + } + function Uc(n3, t3) { + return null == n3 ? n3 : ws(n3, mi(t3, 3), qc); + } + function Bc(n3, t3) { + return n3 && ue2(n3, mi(t3, 3)); + } + function Tc(n3, t3) { + return n3 && oe2(n3, mi(t3, 3)); + } + function $c(n3) { + return null == n3 ? [] : fe2(n3, Pc(n3)); + } + function Dc(n3) { + return null == n3 ? [] : fe2(n3, qc(n3)); + } + function Mc(n3, t3, r3) { + var e3 = null == n3 ? X3 : _e2(n3, t3); + return e3 === X3 ? r3 : e3; + } + function Fc(n3, t3) { + return null != n3 && Ri(n3, t3, xe); + } + function Nc(n3, t3) { + return null != n3 && Ri(n3, t3, je); + } + function Pc(n3) { + return Hf(n3) ? Or2(n3) : Me(n3); + } + function qc(n3) { + return Hf(n3) ? Or2(n3, true) : Fe(n3); + } + function Zc(n3, t3) { + var r3 = {}; + return t3 = mi(t3, 3), ue2(n3, function(n4, e3, u3) { + Br2(r3, t3(n4, e3, u3), n4); + }), r3; + } + function Kc(n3, t3) { + var r3 = {}; + return t3 = mi(t3, 3), ue2(n3, function(n4, e3, u3) { + Br2(r3, e3, t3(n4, e3, u3)); + }), r3; + } + function Vc(n3, t3) { + return Gc(n3, Uf(mi(t3))); + } + function Gc(n3, t3) { + if (null == n3) + return {}; + var r3 = c2(di(n3), function(n4) { + return [n4]; + }); + return t3 = mi(t3), Ye(n3, r3, function(n4, r4) { + return t3(n4, r4[0]); + }); + } + function Hc(n3, t3, r3) { + t3 = ku(t3, n3); + var e3 = -1, u3 = t3.length; + for (u3 || (u3 = 1, n3 = X3); ++e3 < u3; ) { + var i3 = null == n3 ? X3 : n3[no(t3[e3])]; + i3 === X3 && (e3 = u3, i3 = r3), n3 = uc(i3) ? i3.call(n3) : i3; + } + return n3; + } + function Jc(n3, t3, r3) { + return null == n3 ? n3 : fu(n3, t3, r3); + } + function Yc(n3, t3, r3, e3) { + return e3 = "function" == typeof e3 ? e3 : X3, null == n3 ? n3 : fu(n3, t3, r3, e3); + } + function Qc(n3, t3, e3) { + var u3 = bh(n3), i3 = u3 || mh(n3) || Oh(n3); + if (t3 = mi(t3, 4), null == e3) { + var o3 = n3 && n3.constructor; + e3 = i3 ? u3 ? new o3() : [] : fc(n3) && uc(o3) ? gs(El(n3)) : {}; + } + return (i3 ? r2 : ue2)(n3, function(n4, r3, u4) { + return t3(e3, n4, r3, u4); + }), e3; + } + function Xc(n3, t3) { + return null == n3 || yu(n3, t3); + } + function na(n3, t3, r3) { + return null == n3 ? n3 : du(n3, t3, Au(r3)); + } + function ta(n3, t3, r3, e3) { + return e3 = "function" == typeof e3 ? e3 : X3, null == n3 ? n3 : du(n3, t3, Au(r3), e3); + } + function ra(n3) { + return null == n3 ? [] : E2(n3, Pc(n3)); + } + function ea(n3) { + return null == n3 ? [] : E2(n3, qc(n3)); + } + function ua(n3, t3, r3) { + return r3 === X3 && (r3 = t3, t3 = X3), r3 !== X3 && (r3 = Ic(r3), r3 = r3 === r3 ? r3 : 0), t3 !== X3 && (t3 = Ic(t3), t3 = t3 === t3 ? t3 : 0), Mr2(Ic(n3), t3, r3); + } + function ia(n3, t3, r3) { + return t3 = Ac(t3), r3 === X3 ? (r3 = t3, t3 = 0) : r3 = Ac(r3), n3 = Ic(n3), Ae(n3, t3, r3); + } + function oa(n3, t3, r3) { + if (r3 && "boolean" != typeof r3 && Ui(n3, t3, r3) && (t3 = r3 = X3), r3 === X3 && ("boolean" == typeof t3 ? (r3 = t3, t3 = X3) : "boolean" == typeof n3 && (r3 = n3, n3 = X3)), n3 === X3 && t3 === X3 ? (n3 = 0, t3 = 1) : (n3 = Ac(n3), t3 === X3 ? (t3 = n3, n3 = 0) : t3 = Ac(t3)), n3 > t3) { + var e3 = n3; + n3 = t3, t3 = e3; + } + if (r3 || n3 % 1 || t3 % 1) { + var u3 = Ql(); + return Hl(n3 + u3 * (t3 - n3 + Qr("1e-" + ((u3 + "").length - 1))), t3); + } + return tu(n3, t3); + } + function fa(n3) { + return Qh(Ec(n3).toLowerCase()); + } + function ca(n3) { + return n3 = Ec(n3), n3 && n3.replace(Gt, ve).replace(Dr, ""); + } + function aa(n3, t3, r3) { + n3 = Ec(n3), t3 = vu(t3); + var e3 = n3.length; + r3 = r3 === X3 ? e3 : Mr2(kc(r3), 0, e3); + var u3 = r3; + return r3 -= t3.length, r3 >= 0 && n3.slice(r3, u3) == t3; + } + function la(n3) { + return n3 = Ec(n3), n3 && At2.test(n3) ? n3.replace(xt2, ge) : n3; + } + function sa(n3) { + return n3 = Ec(n3), n3 && Wt.test(n3) ? n3.replace(St2, "\\$&") : n3; + } + function ha(n3, t3, r3) { + n3 = Ec(n3), t3 = kc(t3); + var e3 = t3 ? V2(n3) : 0; + if (!t3 || e3 >= t3) + return n3; + var u3 = (t3 - e3) / 2; + return ri(Nl(u3), r3) + n3 + ri(Fl(u3), r3); + } + function pa(n3, t3, r3) { + n3 = Ec(n3), t3 = kc(t3); + var e3 = t3 ? V2(n3) : 0; + return t3 && e3 < t3 ? n3 + ri(t3 - e3, r3) : n3; + } + function _a(n3, t3, r3) { + n3 = Ec(n3), t3 = kc(t3); + var e3 = t3 ? V2(n3) : 0; + return t3 && e3 < t3 ? ri(t3 - e3, r3) + n3 : n3; + } + function va(n3, t3, r3) { + return r3 || null == t3 ? t3 = 0 : t3 && (t3 = +t3), Yl(Ec(n3).replace(Lt, ""), t3 || 0); + } + function ga(n3, t3, r3) { + return t3 = (r3 ? Ui(n3, t3, r3) : t3 === X3) ? 1 : kc(t3), eu(Ec(n3), t3); + } + function ya() { + var n3 = arguments, t3 = Ec(n3[0]); + return n3.length < 3 ? t3 : t3.replace(n3[1], n3[2]); + } + function da(n3, t3, r3) { + return r3 && "number" != typeof r3 && Ui(n3, t3, r3) && (t3 = r3 = X3), (r3 = r3 === X3 ? Un : r3 >>> 0) ? (n3 = Ec(n3), n3 && ("string" == typeof t3 || null != t3 && !Ah(t3)) && (t3 = vu(t3), !t3 && T2(n3)) ? Ou(G2(n3), 0, r3) : n3.split(t3, r3)) : []; + } + function ba(n3, t3, r3) { + return n3 = Ec(n3), r3 = null == r3 ? 0 : Mr2(kc(r3), 0, n3.length), t3 = vu(t3), n3.slice(r3, r3 + t3.length) == t3; + } + function wa(n3, t3, r3) { + var e3 = Z3.templateSettings; + r3 && Ui(n3, t3, r3) && (t3 = X3), n3 = Ec(n3), t3 = Sh({}, t3, e3, li); + var u3, i3, o3 = Sh({}, t3.imports, e3.imports, li), f3 = Pc(o3), c3 = E2(o3, f3), a3 = 0, l3 = t3.interpolate || Ht2, s3 = "__p += '", h3 = sl((t3.escape || Ht2).source + "|" + l3.source + "|" + (l3 === It ? Ft : Ht2).source + "|" + (t3.evaluate || Ht2).source + "|$", "g"), p4 = "//# sourceURL=" + (bl.call(t3, "sourceURL") ? (t3.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++Zr + "]") + "\n"; + n3.replace(h3, function(t4, r4, e4, o4, f4, c4) { + return e4 || (e4 = o4), s3 += n3.slice(a3, c4).replace(Jt, U2), r4 && (u3 = true, s3 += "' +\n__e(" + r4 + ") +\n'"), f4 && (i3 = true, s3 += "';\n" + f4 + ";\n__p += '"), e4 && (s3 += "' +\n((__t = (" + e4 + ")) == null ? '' : __t) +\n'"), a3 = c4 + t4.length, t4; + }), s3 += "';\n"; + var _3 = bl.call(t3, "variable") && t3.variable; + if (_3) { + if (Dt.test(_3)) + throw new fl(un); + } else + s3 = "with (obj) {\n" + s3 + "\n}\n"; + s3 = (i3 ? s3.replace(dt2, "") : s3).replace(bt2, "$1").replace(wt2, "$1;"), s3 = "function(" + (_3 || "obj") + ") {\n" + (_3 ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (u3 ? ", __e = _.escape" : "") + (i3 ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + s3 + "return __p\n}"; + var v3 = Xh(function() { + return cl(f3, p4 + "return " + s3).apply(X3, c3); + }); + if (v3.source = s3, rc(v3)) + throw v3; + return v3; + } + function ma(n3) { + return Ec(n3).toLowerCase(); + } + function xa(n3) { + return Ec(n3).toUpperCase(); + } + function ja(n3, t3, r3) { + if (n3 = Ec(n3), n3 && (r3 || t3 === X3)) + return R2(n3); + if (!n3 || !(t3 = vu(t3))) + return n3; + var e3 = G2(n3), u3 = G2(t3); + return Ou(e3, W2(e3, u3), L2(e3, u3) + 1).join(""); + } + function Aa(n3, t3, r3) { + if (n3 = Ec(n3), n3 && (r3 || t3 === X3)) + return n3.slice(0, H2(n3) + 1); + if (!n3 || !(t3 = vu(t3))) + return n3; + var e3 = G2(n3); + return Ou(e3, 0, L2(e3, G2(t3)) + 1).join(""); + } + function ka(n3, t3, r3) { + if (n3 = Ec(n3), n3 && (r3 || t3 === X3)) + return n3.replace(Lt, ""); + if (!n3 || !(t3 = vu(t3))) + return n3; + var e3 = G2(n3); + return Ou(e3, W2(e3, G2(t3))).join(""); + } + function Oa(n3, t3) { + var r3 = An, e3 = kn; + if (fc(t3)) { + var u3 = "separator" in t3 ? t3.separator : u3; + r3 = "length" in t3 ? kc(t3.length) : r3, e3 = "omission" in t3 ? vu(t3.omission) : e3; + } + n3 = Ec(n3); + var i3 = n3.length; + if (T2(n3)) { + var o3 = G2(n3); + i3 = o3.length; + } + if (r3 >= i3) + return n3; + var f3 = r3 - V2(e3); + if (f3 < 1) + return e3; + var c3 = o3 ? Ou(o3, 0, f3).join("") : n3.slice(0, f3); + if (u3 === X3) + return c3 + e3; + if (o3 && (f3 += c3.length - f3), Ah(u3)) { + if (n3.slice(f3).search(u3)) { + var a3, l3 = c3; + for (u3.global || (u3 = sl(u3.source, Ec(Nt.exec(u3)) + "g")), u3.lastIndex = 0; a3 = u3.exec(l3); ) + var s3 = a3.index; + c3 = c3.slice(0, s3 === X3 ? f3 : s3); + } + } else if (n3.indexOf(vu(u3), f3) != f3) { + var h3 = c3.lastIndexOf(u3); + h3 > -1 && (c3 = c3.slice(0, h3)); + } + return c3 + e3; + } + function Ia(n3) { + return n3 = Ec(n3), n3 && jt.test(n3) ? n3.replace(mt2, ye) : n3; + } + function Ra(n3, t3, r3) { + return n3 = Ec(n3), t3 = r3 ? X3 : t3, t3 === X3 ? $2(n3) ? Q2(n3) : _2(n3) : n3.match(t3) || []; + } + function za(t3) { + var r3 = null == t3 ? 0 : t3.length, e3 = mi(); + return t3 = r3 ? c2(t3, function(n3) { + if ("function" != typeof n3[1]) + throw new pl(en); + return [e3(n3[0]), n3[1]]; + }) : [], uu(function(e4) { + for (var u3 = -1; ++u3 < r3; ) { + var i3 = t3[u3]; + if (n2(i3[0], this, e4)) + return n2(i3[1], this, e4); + } + }); + } + function Ea(n3) { + return Nr2(Fr2(n3, an)); + } + function Sa(n3) { + return function() { + return n3; + }; + } + function Wa(n3, t3) { + return null == n3 || n3 !== n3 ? t3 : n3; + } + function La(n3) { + return n3; + } + function Ca(n3) { + return De("function" == typeof n3 ? n3 : Fr2(n3, an)); + } + function Ua(n3) { + return qe(Fr2(n3, an)); + } + function Ba(n3, t3) { + return Ze(n3, Fr2(t3, an)); + } + function Ta(n3, t3, e3) { + var u3 = Pc(t3), i3 = fe2(t3, u3); + null != e3 || fc(t3) && (i3.length || !u3.length) || (e3 = t3, t3 = n3, n3 = this, i3 = fe2(t3, Pc(t3))); + var o3 = !(fc(e3) && "chain" in e3 && !e3.chain), f3 = uc(n3); + return r2(i3, function(r3) { + var e4 = t3[r3]; + n3[r3] = e4, f3 && (n3.prototype[r3] = function() { + var t4 = this.__chain__; + if (o3 || t4) { + var r4 = n3(this.__wrapped__); + return (r4.__actions__ = Tu(this.__actions__)).push({ func: e4, args: arguments, thisArg: n3 }), r4.__chain__ = t4, r4; + } + return e4.apply(n3, a2([this.value()], arguments)); + }); + }), n3; + } + function $a() { + return re._ === this && (re._ = Al), this; + } + function Da() { + } + function Ma(n3) { + return n3 = kc(n3), uu(function(t3) { + return Ge(t3, n3); + }); + } + function Fa(n3) { + return Bi(n3) ? m2(no(n3)) : Qe(n3); + } + function Na(n3) { + return function(t3) { + return null == n3 ? X3 : _e2(n3, t3); + }; + } + function Pa() { + return []; + } + function qa() { + return false; + } + function Za() { + return {}; + } + function Ka() { + return ""; + } + function Va() { + return true; + } + function Ga(n3, t3) { + if (n3 = kc(n3), n3 < 1 || n3 > Wn) + return []; + var r3 = Un, e3 = Hl(n3, Un); + t3 = mi(t3), n3 -= Un; + for (var u3 = O2(e3, t3); ++r3 < n3; ) + t3(r3); + return u3; + } + function Ha(n3) { + return bh(n3) ? c2(n3, no) : bc(n3) ? [n3] : Tu(Cs(Ec(n3))); + } + function Ja(n3) { + var t3 = ++wl; + return Ec(n3) + t3; + } + function Ya(n3) { + return n3 && n3.length ? Yr2(n3, La, me) : X3; + } + function Qa(n3, t3) { + return n3 && n3.length ? Yr2(n3, mi(t3, 2), me) : X3; + } + function Xa(n3) { + return w2(n3, La); + } + function nl(n3, t3) { + return w2(n3, mi(t3, 2)); + } + function tl(n3) { + return n3 && n3.length ? Yr2(n3, La, Ne) : X3; + } + function rl(n3, t3) { + return n3 && n3.length ? Yr2(n3, mi(t3, 2), Ne) : X3; + } + function el(n3) { + return n3 && n3.length ? k2(n3, La) : 0; + } + function ul(n3, t3) { + return n3 && n3.length ? k2(n3, mi(t3, 2)) : 0; + } + x3 = null == x3 ? re : be.defaults(re.Object(), x3, be.pick(re, qr)); + var il = x3.Array, ol = x3.Date, fl = x3.Error, cl = x3.Function, al = x3.Math, ll = x3.Object, sl = x3.RegExp, hl = x3.String, pl = x3.TypeError, _l = il.prototype, vl = cl.prototype, gl = ll.prototype, yl = x3["__core-js_shared__"], dl = vl.toString, bl = gl.hasOwnProperty, wl = 0, ml = function() { + var n3 = /[^.]+$/.exec(yl && yl.keys && yl.keys.IE_PROTO || ""); + return n3 ? "Symbol(src)_1." + n3 : ""; + }(), xl = gl.toString, jl = dl.call(ll), Al = re._, kl = sl("^" + dl.call(bl).replace(St2, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), Ol = ie ? x3.Buffer : X3, Il = x3.Symbol, Rl = x3.Uint8Array, zl = Ol ? Ol.allocUnsafe : X3, El = F2(ll.getPrototypeOf, ll), Sl = ll.create, Wl = gl.propertyIsEnumerable, Ll = _l.splice, Cl = Il ? Il.isConcatSpreadable : X3, Ul = Il ? Il.iterator : X3, Bl = Il ? Il.toStringTag : X3, Tl = function() { + try { + var n3 = Ai(ll, "defineProperty"); + return n3({}, "", {}), n3; + } catch (n4) { + } + }(), $l = x3.clearTimeout !== re.clearTimeout && x3.clearTimeout, Dl = ol && ol.now !== re.Date.now && ol.now, Ml = x3.setTimeout !== re.setTimeout && x3.setTimeout, Fl = al.ceil, Nl = al.floor, Pl = ll.getOwnPropertySymbols, ql = Ol ? Ol.isBuffer : X3, Zl = x3.isFinite, Kl = _l.join, Vl = F2(ll.keys, ll), Gl = al.max, Hl = al.min, Jl = ol.now, Yl = x3.parseInt, Ql = al.random, Xl = _l.reverse, ns = Ai(x3, "DataView"), ts = Ai(x3, "Map"), rs = Ai(x3, "Promise"), es = Ai(x3, "Set"), us = Ai(x3, "WeakMap"), is3 = Ai(ll, "create"), os = us && new us(), fs = {}, cs = to(ns), as = to(ts), ls = to(rs), ss = to(es), hs = to(us), ps = Il ? Il.prototype : X3, _s = ps ? ps.valueOf : X3, vs = ps ? ps.toString : X3, gs = function() { + function n3() { + } + return function(t3) { + if (!fc(t3)) + return {}; + if (Sl) + return Sl(t3); + n3.prototype = t3; + var r3 = new n3(); + return n3.prototype = X3, r3; + }; + }(); + Z3.templateSettings = { escape: kt, evaluate: Ot2, interpolate: It, variable: "", imports: { _: Z3 } }, Z3.prototype = J3.prototype, Z3.prototype.constructor = Z3, Y3.prototype = gs(J3.prototype), Y3.prototype.constructor = Y3, Ct3.prototype = gs(J3.prototype), Ct3.prototype.constructor = Ct3, Xt2.prototype.clear = nr2, Xt2.prototype.delete = tr2, Xt2.prototype.get = rr2, Xt2.prototype.has = er2, Xt2.prototype.set = ur2, ir2.prototype.clear = or2, ir2.prototype.delete = fr2, ir2.prototype.get = cr2, ir2.prototype.has = ar2, ir2.prototype.set = lr2, sr2.prototype.clear = hr2, sr2.prototype.delete = pr2, sr2.prototype.get = _r2, sr2.prototype.has = vr2, sr2.prototype.set = gr2, yr2.prototype.add = yr2.prototype.push = dr2, yr2.prototype.has = br2, wr2.prototype.clear = mr2, wr2.prototype.delete = xr2, wr2.prototype.get = jr2, wr2.prototype.has = Ar2, wr2.prototype.set = kr2; + var ys = Pu(ue2), ds = Pu(oe2, true), bs = qu(), ws = qu(true), ms = os ? function(n3, t3) { + return os.set(n3, t3), n3; + } : La, xs = Tl ? function(n3, t3) { + return Tl(n3, "toString", { + configurable: true, + enumerable: false, + value: Sa(t3), + writable: true + }); + } : La, js = uu, As = $l || function(n3) { + return re.clearTimeout(n3); + }, ks = es && 1 / P2(new es([, -0]))[1] == Sn ? function(n3) { + return new es(n3); + } : Da, Os = os ? function(n3) { + return os.get(n3); + } : Da, Is = Pl ? function(n3) { + return null == n3 ? [] : (n3 = ll(n3), i2(Pl(n3), function(t3) { + return Wl.call(n3, t3); + })); + } : Pa, Rs = Pl ? function(n3) { + for (var t3 = []; n3; ) + a2(t3, Is(n3)), n3 = El(n3); + return t3; + } : Pa, zs = we; + (ns && zs(new ns(new ArrayBuffer(1))) != ct2 || ts && zs(new ts()) != Gn || rs && zs(rs.resolve()) != Qn || es && zs(new es()) != tt2 || us && zs(new us()) != it2) && (zs = function(n3) { + var t3 = we(n3), r3 = t3 == Yn ? n3.constructor : X3, e3 = r3 ? to(r3) : ""; + if (e3) + switch (e3) { + case cs: + return ct2; + case as: + return Gn; + case ls: + return Qn; + case ss: + return tt2; + case hs: + return it2; + } + return t3; + }); + var Es = yl ? uc : qa, Ss = Qi(ms), Ws = Ml || function(n3, t3) { + return re.setTimeout(n3, t3); + }, Ls = Qi(xs), Cs = Pi(function(n3) { + var t3 = []; + return 46 === n3.charCodeAt(0) && t3.push(""), n3.replace(Et, function(n4, r3, e3, u3) { + t3.push(e3 ? u3.replace(Mt, "$1") : r3 || n4); + }), t3; + }), Us = uu(function(n3, t3) { + return Jf(n3) ? Hr2(n3, ee2(t3, 1, Jf, true)) : []; + }), Bs = uu(function(n3, t3) { + var r3 = jo(t3); + return Jf(r3) && (r3 = X3), Jf(n3) ? Hr2(n3, ee2(t3, 1, Jf, true), mi(r3, 2)) : []; + }), Ts = uu(function(n3, t3) { + var r3 = jo(t3); + return Jf(r3) && (r3 = X3), Jf(n3) ? Hr2(n3, ee2(t3, 1, Jf, true), X3, r3) : []; + }), $s = uu(function(n3) { + var t3 = c2(n3, ju); + return t3.length && t3[0] === n3[0] ? ke(t3) : []; + }), Ds = uu(function(n3) { + var t3 = jo(n3), r3 = c2(n3, ju); + return t3 === jo(r3) ? t3 = X3 : r3.pop(), r3.length && r3[0] === n3[0] ? ke(r3, mi(t3, 2)) : []; + }), Ms = uu(function(n3) { + var t3 = jo(n3), r3 = c2(n3, ju); + return t3 = "function" == typeof t3 ? t3 : X3, t3 && r3.pop(), r3.length && r3[0] === n3[0] ? ke(r3, X3, t3) : []; + }), Fs = uu(Oo), Ns = gi(function(n3, t3) { + var r3 = null == n3 ? 0 : n3.length, e3 = Tr2(n3, t3); + return nu(n3, c2(t3, function(n4) { + return Ci(n4, r3) ? +n4 : n4; + }).sort(Lu)), e3; + }), Ps = uu(function(n3) { + return gu(ee2(n3, 1, Jf, true)); + }), qs = uu(function(n3) { + var t3 = jo(n3); + return Jf(t3) && (t3 = X3), gu(ee2(n3, 1, Jf, true), mi(t3, 2)); + }), Zs = uu(function(n3) { + var t3 = jo(n3); + return t3 = "function" == typeof t3 ? t3 : X3, gu(ee2(n3, 1, Jf, true), X3, t3); + }), Ks = uu(function(n3, t3) { + return Jf(n3) ? Hr2(n3, t3) : []; + }), Vs = uu(function(n3) { + return mu(i2(n3, Jf)); + }), Gs = uu(function(n3) { + var t3 = jo(n3); + return Jf(t3) && (t3 = X3), mu(i2(n3, Jf), mi(t3, 2)); + }), Hs = uu(function(n3) { + var t3 = jo(n3); + return t3 = "function" == typeof t3 ? t3 : X3, mu(i2(n3, Jf), X3, t3); + }), Js = uu(Go), Ys = uu(function(n3) { + var t3 = n3.length, r3 = t3 > 1 ? n3[t3 - 1] : X3; + return r3 = "function" == typeof r3 ? (n3.pop(), r3) : X3, Ho(n3, r3); + }), Qs = gi(function(n3) { + var t3 = n3.length, r3 = t3 ? n3[0] : 0, e3 = this.__wrapped__, u3 = function(t4) { + return Tr2(t4, n3); + }; + return !(t3 > 1 || this.__actions__.length) && e3 instanceof Ct3 && Ci(r3) ? (e3 = e3.slice(r3, +r3 + (t3 ? 1 : 0)), e3.__actions__.push({ func: nf, args: [u3], thisArg: X3 }), new Y3(e3, this.__chain__).thru(function(n4) { + return t3 && !n4.length && n4.push(X3), n4; + })) : this.thru(u3); + }), Xs = Fu(function(n3, t3, r3) { + bl.call(n3, r3) ? ++n3[r3] : Br2(n3, r3, 1); + }), nh = Ju(ho), th = Ju(po), rh = Fu(function(n3, t3, r3) { + bl.call(n3, r3) ? n3[r3].push(t3) : Br2(n3, r3, [t3]); + }), eh = uu(function(t3, r3, e3) { + var u3 = -1, i3 = "function" == typeof r3, o3 = Hf(t3) ? il(t3.length) : []; + return ys(t3, function(t4) { + o3[++u3] = i3 ? n2(r3, t4, e3) : Ie(t4, r3, e3); + }), o3; + }), uh = Fu(function(n3, t3, r3) { + Br2(n3, r3, t3); + }), ih = Fu(function(n3, t3, r3) { + n3[r3 ? 0 : 1].push(t3); + }, function() { + return [[], []]; + }), oh = uu(function(n3, t3) { + if (null == n3) + return []; + var r3 = t3.length; + return r3 > 1 && Ui(n3, t3[0], t3[1]) ? t3 = [] : r3 > 2 && Ui(t3[0], t3[1], t3[2]) && (t3 = [t3[0]]), He(n3, ee2(t3, 1), []); + }), fh = Dl || function() { + return re.Date.now(); + }, ch = uu(function(n3, t3, r3) { + var e3 = _n; + if (r3.length) { + var u3 = N2(r3, wi(ch)); + e3 |= bn; + } + return ai(n3, e3, t3, r3, u3); + }), ah = uu(function(n3, t3, r3) { + var e3 = _n | vn; + if (r3.length) { + var u3 = N2(r3, wi(ah)); + e3 |= bn; + } + return ai(t3, e3, n3, r3, u3); + }), lh = uu(function(n3, t3) { + return Gr2(n3, 1, t3); + }), sh = uu(function(n3, t3, r3) { + return Gr2(n3, Ic(t3) || 0, r3); + }); + Cf.Cache = sr2; + var hh = js(function(t3, r3) { + r3 = 1 == r3.length && bh(r3[0]) ? c2(r3[0], z2(mi())) : c2(ee2(r3, 1), z2(mi())); + var e3 = r3.length; + return uu(function(u3) { + for (var i3 = -1, o3 = Hl(u3.length, e3); ++i3 < o3; ) + u3[i3] = r3[i3].call(this, u3[i3]); + return n2(t3, this, u3); + }); + }), ph = uu(function(n3, t3) { + return ai(n3, bn, X3, t3, N2(t3, wi(ph))); + }), _h = uu(function(n3, t3) { + return ai(n3, wn, X3, t3, N2(t3, wi(_h))); + }), vh = gi(function(n3, t3) { + return ai(n3, xn, X3, X3, X3, t3); + }), gh = ii(me), yh = ii(function(n3, t3) { + return n3 >= t3; + }), dh = Re(function() { + return arguments; + }()) ? Re : function(n3) { + return cc(n3) && bl.call(n3, "callee") && !Wl.call(n3, "callee"); + }, bh = il.isArray, wh = ce ? z2(ce) : ze, mh = ql || qa, xh = ae ? z2(ae) : Ee, jh = le ? z2(le) : Le, Ah = se ? z2(se) : Be, kh = he ? z2(he) : Te, Oh = pe ? z2(pe) : $e, Ih = ii(Ne), Rh = ii(function(n3, t3) { + return n3 <= t3; + }), zh = Nu(function(n3, t3) { + if (Mi(t3) || Hf(t3)) + return $u(t3, Pc(t3), n3), X3; + for (var r3 in t3) + bl.call(t3, r3) && Sr2(n3, r3, t3[r3]); + }), Eh = Nu(function(n3, t3) { + $u(t3, qc(t3), n3); + }), Sh = Nu(function(n3, t3, r3, e3) { + $u(t3, qc(t3), n3, e3); + }), Wh = Nu(function(n3, t3, r3, e3) { + $u(t3, Pc(t3), n3, e3); + }), Lh = gi(Tr2), Ch = uu(function(n3, t3) { + n3 = ll(n3); + var r3 = -1, e3 = t3.length, u3 = e3 > 2 ? t3[2] : X3; + for (u3 && Ui(t3[0], t3[1], u3) && (e3 = 1); ++r3 < e3; ) + for (var i3 = t3[r3], o3 = qc(i3), f3 = -1, c3 = o3.length; ++f3 < c3; ) { + var a3 = o3[f3], l3 = n3[a3]; + (l3 === X3 || Gf(l3, gl[a3]) && !bl.call(n3, a3)) && (n3[a3] = i3[a3]); + } + return n3; + }), Uh = uu(function(t3) { + return t3.push(X3, si), n2(Mh, X3, t3); + }), Bh = Xu(function(n3, t3, r3) { + null != t3 && "function" != typeof t3.toString && (t3 = xl.call(t3)), n3[t3] = r3; + }, Sa(La)), Th = Xu(function(n3, t3, r3) { + null != t3 && "function" != typeof t3.toString && (t3 = xl.call(t3)), bl.call(n3, t3) ? n3[t3].push(r3) : n3[t3] = [r3]; + }, mi), $h = uu(Ie), Dh = Nu(function(n3, t3, r3) { + Ke(n3, t3, r3); + }), Mh = Nu(function(n3, t3, r3, e3) { + Ke(n3, t3, r3, e3); + }), Fh = gi(function(n3, t3) { + var r3 = {}; + if (null == n3) + return r3; + var e3 = false; + t3 = c2(t3, function(t4) { + return t4 = ku(t4, n3), e3 || (e3 = t4.length > 1), t4; + }), $u(n3, di(n3), r3), e3 && (r3 = Fr2(r3, an | ln | sn, hi)); + for (var u3 = t3.length; u3--; ) + yu(r3, t3[u3]); + return r3; + }), Nh = gi(function(n3, t3) { + return null == n3 ? {} : Je(n3, t3); + }), Ph = ci(Pc), qh = ci(qc), Zh = Vu(function(n3, t3, r3) { + return t3 = t3.toLowerCase(), n3 + (r3 ? fa(t3) : t3); + }), Kh = Vu(function(n3, t3, r3) { + return n3 + (r3 ? "-" : "") + t3.toLowerCase(); + }), Vh = Vu(function(n3, t3, r3) { + return n3 + (r3 ? " " : "") + t3.toLowerCase(); + }), Gh = Ku("toLowerCase"), Hh = Vu(function(n3, t3, r3) { + return n3 + (r3 ? "_" : "") + t3.toLowerCase(); + }), Jh = Vu(function(n3, t3, r3) { + return n3 + (r3 ? " " : "") + Qh(t3); + }), Yh = Vu(function(n3, t3, r3) { + return n3 + (r3 ? " " : "") + t3.toUpperCase(); + }), Qh = Ku("toUpperCase"), Xh = uu(function(t3, r3) { + try { + return n2(t3, X3, r3); + } catch (n3) { + return rc(n3) ? n3 : new fl(n3); + } + }), np = gi(function(n3, t3) { + return r2(t3, function(t4) { + t4 = no(t4), Br2(n3, t4, ch(n3[t4], n3)); + }), n3; + }), tp = Yu(), rp = Yu(true), ep = uu(function(n3, t3) { + return function(r3) { + return Ie(r3, n3, t3); + }; + }), up = uu(function(n3, t3) { + return function(r3) { + return Ie(n3, r3, t3); + }; + }), ip = ti(c2), op = ti(u2), fp = ti(h2), cp = ui(), ap = ui(true), lp = ni(function(n3, t3) { + return n3 + t3; + }, 0), sp = fi("ceil"), hp = ni(function(n3, t3) { + return n3 / t3; + }, 1), pp = fi("floor"), _p = ni(function(n3, t3) { + return n3 * t3; + }, 1), vp = fi("round"), gp = ni(function(n3, t3) { + return n3 - t3; + }, 0); + return Z3.after = If, Z3.ary = Rf, Z3.assign = zh, Z3.assignIn = Eh, Z3.assignInWith = Sh, Z3.assignWith = Wh, Z3.at = Lh, Z3.before = zf, Z3.bind = ch, Z3.bindAll = np, Z3.bindKey = ah, Z3.castArray = Nf, Z3.chain = Qo, Z3.chunk = uo, Z3.compact = io, Z3.concat = oo, Z3.cond = za, Z3.conforms = Ea, Z3.constant = Sa, Z3.countBy = Xs, Z3.create = Sc, Z3.curry = Ef, Z3.curryRight = Sf, Z3.debounce = Wf, Z3.defaults = Ch, Z3.defaultsDeep = Uh, Z3.defer = lh, Z3.delay = sh, Z3.difference = Us, Z3.differenceBy = Bs, Z3.differenceWith = Ts, Z3.drop = fo, Z3.dropRight = co, Z3.dropRightWhile = ao, Z3.dropWhile = lo, Z3.fill = so, Z3.filter = lf, Z3.flatMap = sf, Z3.flatMapDeep = hf, Z3.flatMapDepth = pf, Z3.flatten = _o, Z3.flattenDeep = vo, Z3.flattenDepth = go, Z3.flip = Lf, Z3.flow = tp, Z3.flowRight = rp, Z3.fromPairs = yo, Z3.functions = $c, Z3.functionsIn = Dc, Z3.groupBy = rh, Z3.initial = mo, Z3.intersection = $s, Z3.intersectionBy = Ds, Z3.intersectionWith = Ms, Z3.invert = Bh, Z3.invertBy = Th, Z3.invokeMap = eh, Z3.iteratee = Ca, Z3.keyBy = uh, Z3.keys = Pc, Z3.keysIn = qc, Z3.map = yf, Z3.mapKeys = Zc, Z3.mapValues = Kc, Z3.matches = Ua, Z3.matchesProperty = Ba, Z3.memoize = Cf, Z3.merge = Dh, Z3.mergeWith = Mh, Z3.method = ep, Z3.methodOf = up, Z3.mixin = Ta, Z3.negate = Uf, Z3.nthArg = Ma, Z3.omit = Fh, Z3.omitBy = Vc, Z3.once = Bf, Z3.orderBy = df, Z3.over = ip, Z3.overArgs = hh, Z3.overEvery = op, Z3.overSome = fp, Z3.partial = ph, Z3.partialRight = _h, Z3.partition = ih, Z3.pick = Nh, Z3.pickBy = Gc, Z3.property = Fa, Z3.propertyOf = Na, Z3.pull = Fs, Z3.pullAll = Oo, Z3.pullAllBy = Io, Z3.pullAllWith = Ro, Z3.pullAt = Ns, Z3.range = cp, Z3.rangeRight = ap, Z3.rearg = vh, Z3.reject = mf, Z3.remove = zo, Z3.rest = Tf, Z3.reverse = Eo, Z3.sampleSize = jf, Z3.set = Jc, Z3.setWith = Yc, Z3.shuffle = Af, Z3.slice = So, Z3.sortBy = oh, Z3.sortedUniq = $o, Z3.sortedUniqBy = Do, Z3.split = da, Z3.spread = $f, Z3.tail = Mo, Z3.take = Fo, Z3.takeRight = No, Z3.takeRightWhile = Po, Z3.takeWhile = qo, Z3.tap = Xo, Z3.throttle = Df, Z3.thru = nf, Z3.toArray = jc, Z3.toPairs = Ph, Z3.toPairsIn = qh, Z3.toPath = Ha, Z3.toPlainObject = Rc, Z3.transform = Qc, Z3.unary = Mf, Z3.union = Ps, Z3.unionBy = qs, Z3.unionWith = Zs, Z3.uniq = Zo, Z3.uniqBy = Ko, Z3.uniqWith = Vo, Z3.unset = Xc, Z3.unzip = Go, Z3.unzipWith = Ho, Z3.update = na, Z3.updateWith = ta, Z3.values = ra, Z3.valuesIn = ea, Z3.without = Ks, Z3.words = Ra, Z3.wrap = Ff, Z3.xor = Vs, Z3.xorBy = Gs, Z3.xorWith = Hs, Z3.zip = Js, Z3.zipObject = Jo, Z3.zipObjectDeep = Yo, Z3.zipWith = Ys, Z3.entries = Ph, Z3.entriesIn = qh, Z3.extend = Eh, Z3.extendWith = Sh, Ta(Z3, Z3), Z3.add = lp, Z3.attempt = Xh, Z3.camelCase = Zh, Z3.capitalize = fa, Z3.ceil = sp, Z3.clamp = ua, Z3.clone = Pf, Z3.cloneDeep = Zf, Z3.cloneDeepWith = Kf, Z3.cloneWith = qf, Z3.conformsTo = Vf, Z3.deburr = ca, Z3.defaultTo = Wa, Z3.divide = hp, Z3.endsWith = aa, Z3.eq = Gf, Z3.escape = la, Z3.escapeRegExp = sa, Z3.every = af, Z3.find = nh, Z3.findIndex = ho, Z3.findKey = Wc, Z3.findLast = th, Z3.findLastIndex = po, Z3.findLastKey = Lc, Z3.floor = pp, Z3.forEach = _f, Z3.forEachRight = vf, Z3.forIn = Cc, Z3.forInRight = Uc, Z3.forOwn = Bc, Z3.forOwnRight = Tc, Z3.get = Mc, Z3.gt = gh, Z3.gte = yh, Z3.has = Fc, Z3.hasIn = Nc, Z3.head = bo, Z3.identity = La, Z3.includes = gf, Z3.indexOf = wo, Z3.inRange = ia, Z3.invoke = $h, Z3.isArguments = dh, Z3.isArray = bh, Z3.isArrayBuffer = wh, Z3.isArrayLike = Hf, Z3.isArrayLikeObject = Jf, Z3.isBoolean = Yf, Z3.isBuffer = mh, Z3.isDate = xh, Z3.isElement = Qf, Z3.isEmpty = Xf, Z3.isEqual = nc, Z3.isEqualWith = tc, Z3.isError = rc, Z3.isFinite = ec, Z3.isFunction = uc, Z3.isInteger = ic, Z3.isLength = oc, Z3.isMap = jh, Z3.isMatch = ac, Z3.isMatchWith = lc, Z3.isNaN = sc, Z3.isNative = hc, Z3.isNil = _c, Z3.isNull = pc, Z3.isNumber = vc, Z3.isObject = fc, Z3.isObjectLike = cc, Z3.isPlainObject = gc, Z3.isRegExp = Ah, Z3.isSafeInteger = yc, Z3.isSet = kh, Z3.isString = dc, Z3.isSymbol = bc, Z3.isTypedArray = Oh, Z3.isUndefined = wc, Z3.isWeakMap = mc, Z3.isWeakSet = xc, Z3.join = xo, Z3.kebabCase = Kh, Z3.last = jo, Z3.lastIndexOf = Ao, Z3.lowerCase = Vh, Z3.lowerFirst = Gh, Z3.lt = Ih, Z3.lte = Rh, Z3.max = Ya, Z3.maxBy = Qa, Z3.mean = Xa, Z3.meanBy = nl, Z3.min = tl, Z3.minBy = rl, Z3.stubArray = Pa, Z3.stubFalse = qa, Z3.stubObject = Za, Z3.stubString = Ka, Z3.stubTrue = Va, Z3.multiply = _p, Z3.nth = ko, Z3.noConflict = $a, Z3.noop = Da, Z3.now = fh, Z3.pad = ha, Z3.padEnd = pa, Z3.padStart = _a, Z3.parseInt = va, Z3.random = oa, Z3.reduce = bf, Z3.reduceRight = wf, Z3.repeat = ga, Z3.replace = ya, Z3.result = Hc, Z3.round = vp, Z3.runInContext = p3, Z3.sample = xf, Z3.size = kf, Z3.snakeCase = Hh, Z3.some = Of, Z3.sortedIndex = Wo, Z3.sortedIndexBy = Lo, Z3.sortedIndexOf = Co, Z3.sortedLastIndex = Uo, Z3.sortedLastIndexBy = Bo, Z3.sortedLastIndexOf = To, Z3.startCase = Jh, Z3.startsWith = ba, Z3.subtract = gp, Z3.sum = el, Z3.sumBy = ul, Z3.template = wa, Z3.times = Ga, Z3.toFinite = Ac, Z3.toInteger = kc, Z3.toLength = Oc, Z3.toLower = ma, Z3.toNumber = Ic, Z3.toSafeInteger = zc, Z3.toString = Ec, Z3.toUpper = xa, Z3.trim = ja, Z3.trimEnd = Aa, Z3.trimStart = ka, Z3.truncate = Oa, Z3.unescape = Ia, Z3.uniqueId = Ja, Z3.upperCase = Yh, Z3.upperFirst = Qh, Z3.each = _f, Z3.eachRight = vf, Z3.first = bo, Ta(Z3, function() { + var n3 = {}; + return ue2(Z3, function(t3, r3) { + bl.call(Z3.prototype, r3) || (n3[r3] = t3); + }), n3; + }(), { chain: false }), Z3.VERSION = nn, r2(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(n3) { + Z3[n3].placeholder = Z3; + }), r2(["drop", "take"], function(n3, t3) { + Ct3.prototype[n3] = function(r3) { + r3 = r3 === X3 ? 1 : Gl(kc(r3), 0); + var e3 = this.__filtered__ && !t3 ? new Ct3(this) : this.clone(); + return e3.__filtered__ ? e3.__takeCount__ = Hl(r3, e3.__takeCount__) : e3.__views__.push({ size: Hl(r3, Un), type: n3 + (e3.__dir__ < 0 ? "Right" : "") }), e3; + }, Ct3.prototype[n3 + "Right"] = function(t4) { + return this.reverse()[n3](t4).reverse(); + }; + }), r2(["filter", "map", "takeWhile"], function(n3, t3) { + var r3 = t3 + 1, e3 = r3 == Rn || r3 == En; + Ct3.prototype[n3] = function(n4) { + var t4 = this.clone(); + return t4.__iteratees__.push({ iteratee: mi(n4, 3), type: r3 }), t4.__filtered__ = t4.__filtered__ || e3, t4; + }; + }), r2(["head", "last"], function(n3, t3) { + var r3 = "take" + (t3 ? "Right" : ""); + Ct3.prototype[n3] = function() { + return this[r3](1).value()[0]; + }; + }), r2(["initial", "tail"], function(n3, t3) { + var r3 = "drop" + (t3 ? "" : "Right"); + Ct3.prototype[n3] = function() { + return this.__filtered__ ? new Ct3(this) : this[r3](1); + }; + }), Ct3.prototype.compact = function() { + return this.filter(La); + }, Ct3.prototype.find = function(n3) { + return this.filter(n3).head(); + }, Ct3.prototype.findLast = function(n3) { + return this.reverse().find(n3); + }, Ct3.prototype.invokeMap = uu(function(n3, t3) { + return "function" == typeof n3 ? new Ct3(this) : this.map(function(r3) { + return Ie(r3, n3, t3); + }); + }), Ct3.prototype.reject = function(n3) { + return this.filter(Uf(mi(n3))); + }, Ct3.prototype.slice = function(n3, t3) { + n3 = kc(n3); + var r3 = this; + return r3.__filtered__ && (n3 > 0 || t3 < 0) ? new Ct3(r3) : (n3 < 0 ? r3 = r3.takeRight(-n3) : n3 && (r3 = r3.drop(n3)), t3 !== X3 && (t3 = kc(t3), r3 = t3 < 0 ? r3.dropRight(-t3) : r3.take(t3 - n3)), r3); + }, Ct3.prototype.takeRightWhile = function(n3) { + return this.reverse().takeWhile(n3).reverse(); + }, Ct3.prototype.toArray = function() { + return this.take(Un); + }, ue2(Ct3.prototype, function(n3, t3) { + var r3 = /^(?:filter|find|map|reject)|While$/.test(t3), e3 = /^(?:head|last)$/.test(t3), u3 = Z3[e3 ? "take" + ("last" == t3 ? "Right" : "") : t3], i3 = e3 || /^find/.test(t3); + u3 && (Z3.prototype[t3] = function() { + var t4 = this.__wrapped__, o3 = e3 ? [1] : arguments, f3 = t4 instanceof Ct3, c3 = o3[0], l3 = f3 || bh(t4), s3 = function(n4) { + var t5 = u3.apply(Z3, a2([n4], o3)); + return e3 && h3 ? t5[0] : t5; + }; + l3 && r3 && "function" == typeof c3 && 1 != c3.length && (f3 = l3 = false); + var h3 = this.__chain__, p4 = !!this.__actions__.length, _3 = i3 && !h3, v3 = f3 && !p4; + if (!i3 && l3) { + t4 = v3 ? t4 : new Ct3(this); + var g3 = n3.apply(t4, o3); + return g3.__actions__.push({ func: nf, args: [s3], thisArg: X3 }), new Y3(g3, h3); + } + return _3 && v3 ? n3.apply(this, o3) : (g3 = this.thru(s3), _3 ? e3 ? g3.value()[0] : g3.value() : g3); + }); + }), r2(["pop", "push", "shift", "sort", "splice", "unshift"], function(n3) { + var t3 = _l[n3], r3 = /^(?:push|sort|unshift)$/.test(n3) ? "tap" : "thru", e3 = /^(?:pop|shift)$/.test(n3); + Z3.prototype[n3] = function() { + var n4 = arguments; + if (e3 && !this.__chain__) { + var u3 = this.value(); + return t3.apply(bh(u3) ? u3 : [], n4); + } + return this[r3](function(r4) { + return t3.apply(bh(r4) ? r4 : [], n4); + }); + }; + }), ue2(Ct3.prototype, function(n3, t3) { + var r3 = Z3[t3]; + if (r3) { + var e3 = r3.name + ""; + bl.call(fs, e3) || (fs[e3] = []), fs[e3].push({ name: t3, func: r3 }); + } + }), fs[Qu(X3, vn).name] = [{ name: "wrapper", func: X3 }], Ct3.prototype.clone = $t3, Ct3.prototype.reverse = Yt2, Ct3.prototype.value = Qt2, Z3.prototype.at = Qs, Z3.prototype.chain = tf, Z3.prototype.commit = rf, Z3.prototype.next = ef, Z3.prototype.plant = of, Z3.prototype.reverse = ff, Z3.prototype.toJSON = Z3.prototype.valueOf = Z3.prototype.value = cf, Z3.prototype.first = Z3.prototype.head, Ul && (Z3.prototype[Ul] = uf), Z3; + }, be = de(); + "function" == typeof define && "object" == typeof define.amd && define.amd ? (re._ = be, define(function() { + return be; + })) : ue ? ((ue.exports = be)._ = be, ee._ = be) : re._ = be; + }).call(exports); + } +}); + +// node_modules/lodash/fp/_mapping.js +var require_mapping = __commonJS({ + "node_modules/lodash/fp/_mapping.js"(exports) { + exports.aliasToReal = { + // Lodash aliases. + "each": "forEach", + "eachRight": "forEachRight", + "entries": "toPairs", + "entriesIn": "toPairsIn", + "extend": "assignIn", + "extendAll": "assignInAll", + "extendAllWith": "assignInAllWith", + "extendWith": "assignInWith", + "first": "head", + // Methods that are curried variants of others. + "conforms": "conformsTo", + "matches": "isMatch", + "property": "get", + // Ramda aliases. + "__": "placeholder", + "F": "stubFalse", + "T": "stubTrue", + "all": "every", + "allPass": "overEvery", + "always": "constant", + "any": "some", + "anyPass": "overSome", + "apply": "spread", + "assoc": "set", + "assocPath": "set", + "complement": "negate", + "compose": "flowRight", + "contains": "includes", + "dissoc": "unset", + "dissocPath": "unset", + "dropLast": "dropRight", + "dropLastWhile": "dropRightWhile", + "equals": "isEqual", + "identical": "eq", + "indexBy": "keyBy", + "init": "initial", + "invertObj": "invert", + "juxt": "over", + "omitAll": "omit", + "nAry": "ary", + "path": "get", + "pathEq": "matchesProperty", + "pathOr": "getOr", + "paths": "at", + "pickAll": "pick", + "pipe": "flow", + "pluck": "map", + "prop": "get", + "propEq": "matchesProperty", + "propOr": "getOr", + "props": "at", + "symmetricDifference": "xor", + "symmetricDifferenceBy": "xorBy", + "symmetricDifferenceWith": "xorWith", + "takeLast": "takeRight", + "takeLastWhile": "takeRightWhile", + "unapply": "rest", + "unnest": "flatten", + "useWith": "overArgs", + "where": "conformsTo", + "whereEq": "isMatch", + "zipObj": "zipObject" + }; + exports.aryMethod = { + "1": [ + "assignAll", + "assignInAll", + "attempt", + "castArray", + "ceil", + "create", + "curry", + "curryRight", + "defaultsAll", + "defaultsDeepAll", + "floor", + "flow", + "flowRight", + "fromPairs", + "invert", + "iteratee", + "memoize", + "method", + "mergeAll", + "methodOf", + "mixin", + "nthArg", + "over", + "overEvery", + "overSome", + "rest", + "reverse", + "round", + "runInContext", + "spread", + "template", + "trim", + "trimEnd", + "trimStart", + "uniqueId", + "words", + "zipAll" + ], + "2": [ + "add", + "after", + "ary", + "assign", + "assignAllWith", + "assignIn", + "assignInAllWith", + "at", + "before", + "bind", + "bindAll", + "bindKey", + "chunk", + "cloneDeepWith", + "cloneWith", + "concat", + "conformsTo", + "countBy", + "curryN", + "curryRightN", + "debounce", + "defaults", + "defaultsDeep", + "defaultTo", + "delay", + "difference", + "divide", + "drop", + "dropRight", + "dropRightWhile", + "dropWhile", + "endsWith", + "eq", + "every", + "filter", + "find", + "findIndex", + "findKey", + "findLast", + "findLastIndex", + "findLastKey", + "flatMap", + "flatMapDeep", + "flattenDepth", + "forEach", + "forEachRight", + "forIn", + "forInRight", + "forOwn", + "forOwnRight", + "get", + "groupBy", + "gt", + "gte", + "has", + "hasIn", + "includes", + "indexOf", + "intersection", + "invertBy", + "invoke", + "invokeMap", + "isEqual", + "isMatch", + "join", + "keyBy", + "lastIndexOf", + "lt", + "lte", + "map", + "mapKeys", + "mapValues", + "matchesProperty", + "maxBy", + "meanBy", + "merge", + "mergeAllWith", + "minBy", + "multiply", + "nth", + "omit", + "omitBy", + "overArgs", + "pad", + "padEnd", + "padStart", + "parseInt", + "partial", + "partialRight", + "partition", + "pick", + "pickBy", + "propertyOf", + "pull", + "pullAll", + "pullAt", + "random", + "range", + "rangeRight", + "rearg", + "reject", + "remove", + "repeat", + "restFrom", + "result", + "sampleSize", + "some", + "sortBy", + "sortedIndex", + "sortedIndexOf", + "sortedLastIndex", + "sortedLastIndexOf", + "sortedUniqBy", + "split", + "spreadFrom", + "startsWith", + "subtract", + "sumBy", + "take", + "takeRight", + "takeRightWhile", + "takeWhile", + "tap", + "throttle", + "thru", + "times", + "trimChars", + "trimCharsEnd", + "trimCharsStart", + "truncate", + "union", + "uniqBy", + "uniqWith", + "unset", + "unzipWith", + "without", + "wrap", + "xor", + "zip", + "zipObject", + "zipObjectDeep" + ], + "3": [ + "assignInWith", + "assignWith", + "clamp", + "differenceBy", + "differenceWith", + "findFrom", + "findIndexFrom", + "findLastFrom", + "findLastIndexFrom", + "getOr", + "includesFrom", + "indexOfFrom", + "inRange", + "intersectionBy", + "intersectionWith", + "invokeArgs", + "invokeArgsMap", + "isEqualWith", + "isMatchWith", + "flatMapDepth", + "lastIndexOfFrom", + "mergeWith", + "orderBy", + "padChars", + "padCharsEnd", + "padCharsStart", + "pullAllBy", + "pullAllWith", + "rangeStep", + "rangeStepRight", + "reduce", + "reduceRight", + "replace", + "set", + "slice", + "sortedIndexBy", + "sortedLastIndexBy", + "transform", + "unionBy", + "unionWith", + "update", + "xorBy", + "xorWith", + "zipWith" + ], + "4": [ + "fill", + "setWith", + "updateWith" + ] + }; + exports.aryRearg = { + "2": [1, 0], + "3": [2, 0, 1], + "4": [3, 2, 0, 1] + }; + exports.iterateeAry = { + "dropRightWhile": 1, + "dropWhile": 1, + "every": 1, + "filter": 1, + "find": 1, + "findFrom": 1, + "findIndex": 1, + "findIndexFrom": 1, + "findKey": 1, + "findLast": 1, + "findLastFrom": 1, + "findLastIndex": 1, + "findLastIndexFrom": 1, + "findLastKey": 1, + "flatMap": 1, + "flatMapDeep": 1, + "flatMapDepth": 1, + "forEach": 1, + "forEachRight": 1, + "forIn": 1, + "forInRight": 1, + "forOwn": 1, + "forOwnRight": 1, + "map": 1, + "mapKeys": 1, + "mapValues": 1, + "partition": 1, + "reduce": 2, + "reduceRight": 2, + "reject": 1, + "remove": 1, + "some": 1, + "takeRightWhile": 1, + "takeWhile": 1, + "times": 1, + "transform": 2 + }; + exports.iterateeRearg = { + "mapKeys": [1], + "reduceRight": [1, 0] + }; + exports.methodRearg = { + "assignInAllWith": [1, 0], + "assignInWith": [1, 2, 0], + "assignAllWith": [1, 0], + "assignWith": [1, 2, 0], + "differenceBy": [1, 2, 0], + "differenceWith": [1, 2, 0], + "getOr": [2, 1, 0], + "intersectionBy": [1, 2, 0], + "intersectionWith": [1, 2, 0], + "isEqualWith": [1, 2, 0], + "isMatchWith": [2, 1, 0], + "mergeAllWith": [1, 0], + "mergeWith": [1, 2, 0], + "padChars": [2, 1, 0], + "padCharsEnd": [2, 1, 0], + "padCharsStart": [2, 1, 0], + "pullAllBy": [2, 1, 0], + "pullAllWith": [2, 1, 0], + "rangeStep": [1, 2, 0], + "rangeStepRight": [1, 2, 0], + "setWith": [3, 1, 2, 0], + "sortedIndexBy": [2, 1, 0], + "sortedLastIndexBy": [2, 1, 0], + "unionBy": [1, 2, 0], + "unionWith": [1, 2, 0], + "updateWith": [3, 1, 2, 0], + "xorBy": [1, 2, 0], + "xorWith": [1, 2, 0], + "zipWith": [1, 2, 0] + }; + exports.methodSpread = { + "assignAll": { "start": 0 }, + "assignAllWith": { "start": 0 }, + "assignInAll": { "start": 0 }, + "assignInAllWith": { "start": 0 }, + "defaultsAll": { "start": 0 }, + "defaultsDeepAll": { "start": 0 }, + "invokeArgs": { "start": 2 }, + "invokeArgsMap": { "start": 2 }, + "mergeAll": { "start": 0 }, + "mergeAllWith": { "start": 0 }, + "partial": { "start": 1 }, + "partialRight": { "start": 1 }, + "without": { "start": 1 }, + "zipAll": { "start": 0 } + }; + exports.mutate = { + "array": { + "fill": true, + "pull": true, + "pullAll": true, + "pullAllBy": true, + "pullAllWith": true, + "pullAt": true, + "remove": true, + "reverse": true + }, + "object": { + "assign": true, + "assignAll": true, + "assignAllWith": true, + "assignIn": true, + "assignInAll": true, + "assignInAllWith": true, + "assignInWith": true, + "assignWith": true, + "defaults": true, + "defaultsAll": true, + "defaultsDeep": true, + "defaultsDeepAll": true, + "merge": true, + "mergeAll": true, + "mergeAllWith": true, + "mergeWith": true + }, + "set": { + "set": true, + "setWith": true, + "unset": true, + "update": true, + "updateWith": true + } + }; + exports.realToAlias = function() { + var hasOwnProperty2 = Object.prototype.hasOwnProperty, object = exports.aliasToReal, result = {}; + for (var key in object) { + var value = object[key]; + if (hasOwnProperty2.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + } + return result; + }(); + exports.remap = { + "assignAll": "assign", + "assignAllWith": "assignWith", + "assignInAll": "assignIn", + "assignInAllWith": "assignInWith", + "curryN": "curry", + "curryRightN": "curryRight", + "defaultsAll": "defaults", + "defaultsDeepAll": "defaultsDeep", + "findFrom": "find", + "findIndexFrom": "findIndex", + "findLastFrom": "findLast", + "findLastIndexFrom": "findLastIndex", + "getOr": "get", + "includesFrom": "includes", + "indexOfFrom": "indexOf", + "invokeArgs": "invoke", + "invokeArgsMap": "invokeMap", + "lastIndexOfFrom": "lastIndexOf", + "mergeAll": "merge", + "mergeAllWith": "mergeWith", + "padChars": "pad", + "padCharsEnd": "padEnd", + "padCharsStart": "padStart", + "propertyOf": "get", + "rangeStep": "range", + "rangeStepRight": "rangeRight", + "restFrom": "rest", + "spreadFrom": "spread", + "trimChars": "trim", + "trimCharsEnd": "trimEnd", + "trimCharsStart": "trimStart", + "zipAll": "zip" + }; + exports.skipFixed = { + "castArray": true, + "flow": true, + "flowRight": true, + "iteratee": true, + "mixin": true, + "rearg": true, + "runInContext": true + }; + exports.skipRearg = { + "add": true, + "assign": true, + "assignIn": true, + "bind": true, + "bindKey": true, + "concat": true, + "difference": true, + "divide": true, + "eq": true, + "gt": true, + "gte": true, + "isEqual": true, + "lt": true, + "lte": true, + "matchesProperty": true, + "merge": true, + "multiply": true, + "overArgs": true, + "partial": true, + "partialRight": true, + "propertyOf": true, + "random": true, + "range": true, + "rangeRight": true, + "subtract": true, + "zip": true, + "zipObject": true, + "zipObjectDeep": true + }; + } +}); + +// node_modules/lodash/fp/placeholder.js +var require_placeholder = __commonJS({ + "node_modules/lodash/fp/placeholder.js"(exports, module2) { + module2.exports = {}; + } +}); + +// node_modules/lodash/fp/_baseConvert.js +var require_baseConvert = __commonJS({ + "node_modules/lodash/fp/_baseConvert.js"(exports, module2) { + var mapping = require_mapping(); + var fallbackHolder = require_placeholder(); + var push2 = Array.prototype.push; + function baseArity(func, n2) { + return n2 == 2 ? function(a2, b2) { + return func.apply(void 0, arguments); + } : function(a2) { + return func.apply(void 0, arguments); + }; + } + function baseAry(func, n2) { + return n2 == 2 ? function(a2, b2) { + return func(a2, b2); + } : function(a2) { + return func(a2); + }; + } + function cloneArray(array) { + var length = array ? array.length : 0, result = Array(length); + while (length--) { + result[length] = array[length]; + } + return result; + } + function createCloner(func) { + return function(object) { + return func({}, object); + }; + } + function flatSpread(func, start) { + return function() { + var length = arguments.length, lastIndex = length - 1, args = Array(length); + while (length--) { + args[length] = arguments[length]; + } + var array = args[start], otherArgs = args.slice(0, start); + if (array) { + push2.apply(otherArgs, array); + } + if (start != lastIndex) { + push2.apply(otherArgs, args.slice(start + 1)); + } + return func.apply(this, otherArgs); + }; + } + function wrapImmutable(func, cloner) { + return function() { + var length = arguments.length; + if (!length) { + return; + } + var args = Array(length); + while (length--) { + args[length] = arguments[length]; + } + var result = args[0] = cloner.apply(void 0, args); + func.apply(void 0, args); + return result; + }; + } + function baseConvert(util, name, func, options) { + var isLib = typeof name == "function", isObj = name === Object(name); + if (isObj) { + options = func; + func = name; + name = void 0; + } + if (func == null) { + throw new TypeError(); + } + options || (options = {}); + var config = { + "cap": "cap" in options ? options.cap : true, + "curry": "curry" in options ? options.curry : true, + "fixed": "fixed" in options ? options.fixed : true, + "immutable": "immutable" in options ? options.immutable : true, + "rearg": "rearg" in options ? options.rearg : true + }; + var defaultHolder = isLib ? func : fallbackHolder, forceCurry = "curry" in options && options.curry, forceFixed = "fixed" in options && options.fixed, forceRearg = "rearg" in options && options.rearg, pristine = isLib ? func.runInContext() : void 0; + var helpers = isLib ? func : { + "ary": util.ary, + "assign": util.assign, + "clone": util.clone, + "curry": util.curry, + "forEach": util.forEach, + "isArray": util.isArray, + "isError": util.isError, + "isFunction": util.isFunction, + "isWeakMap": util.isWeakMap, + "iteratee": util.iteratee, + "keys": util.keys, + "rearg": util.rearg, + "toInteger": util.toInteger, + "toPath": util.toPath + }; + var ary = helpers.ary, assign2 = helpers.assign, clone = helpers.clone, curry = helpers.curry, each3 = helpers.forEach, isArray2 = helpers.isArray, isError = helpers.isError, isFunction2 = helpers.isFunction, isWeakMap = helpers.isWeakMap, keys2 = helpers.keys, rearg = helpers.rearg, toInteger = helpers.toInteger, toPath = helpers.toPath; + var aryMethodKeys = keys2(mapping.aryMethod); + var wrappers = { + "castArray": function(castArray) { + return function() { + var value = arguments[0]; + return isArray2(value) ? castArray(cloneArray(value)) : castArray.apply(void 0, arguments); + }; + }, + "iteratee": function(iteratee) { + return function() { + var func2 = arguments[0], arity = arguments[1], result = iteratee(func2, arity), length = result.length; + if (config.cap && typeof arity == "number") { + arity = arity > 2 ? arity - 2 : 1; + return length && length <= arity ? result : baseAry(result, arity); + } + return result; + }; + }, + "mixin": function(mixin) { + return function(source) { + var func2 = this; + if (!isFunction2(func2)) { + return mixin(func2, Object(source)); + } + var pairs2 = []; + each3(keys2(source), function(key) { + if (isFunction2(source[key])) { + pairs2.push([key, func2.prototype[key]]); + } + }); + mixin(func2, Object(source)); + each3(pairs2, function(pair) { + var value = pair[1]; + if (isFunction2(value)) { + func2.prototype[pair[0]] = value; + } else { + delete func2.prototype[pair[0]]; + } + }); + return func2; + }; + }, + "nthArg": function(nthArg) { + return function(n2) { + var arity = n2 < 0 ? 1 : toInteger(n2) + 1; + return curry(nthArg(n2), arity); + }; + }, + "rearg": function(rearg2) { + return function(func2, indexes) { + var arity = indexes ? indexes.length : 0; + return curry(rearg2(func2, indexes), arity); + }; + }, + "runInContext": function(runInContext) { + return function(context) { + return baseConvert(util, runInContext(context), options); + }; + } + }; + function castCap(name2, func2) { + if (config.cap) { + var indexes = mapping.iterateeRearg[name2]; + if (indexes) { + return iterateeRearg(func2, indexes); + } + var n2 = !isLib && mapping.iterateeAry[name2]; + if (n2) { + return iterateeAry(func2, n2); + } + } + return func2; + } + function castCurry(name2, func2, n2) { + return forceCurry || config.curry && n2 > 1 ? curry(func2, n2) : func2; + } + function castFixed(name2, func2, n2) { + if (config.fixed && (forceFixed || !mapping.skipFixed[name2])) { + var data = mapping.methodSpread[name2], start = data && data.start; + return start === void 0 ? ary(func2, n2) : flatSpread(func2, start); + } + return func2; + } + function castRearg(name2, func2, n2) { + return config.rearg && n2 > 1 && (forceRearg || !mapping.skipRearg[name2]) ? rearg(func2, mapping.methodRearg[name2] || mapping.aryRearg[n2]) : func2; + } + function cloneByPath(object, path) { + path = toPath(path); + var index = -1, length = path.length, lastIndex = length - 1, result = clone(Object(object)), nested = result; + while (nested != null && ++index < length) { + var key = path[index], value = nested[key]; + if (value != null && !(isFunction2(value) || isError(value) || isWeakMap(value))) { + nested[key] = clone(index == lastIndex ? value : Object(value)); + } + nested = nested[key]; + } + return result; + } + function convertLib(options2) { + return _2.runInContext.convert(options2)(void 0); + } + function createConverter(name2, func2) { + var realName = mapping.aliasToReal[name2] || name2, methodName = mapping.remap[realName] || realName, oldOptions = options; + return function(options2) { + var newUtil = isLib ? pristine : helpers, newFunc = isLib ? pristine[methodName] : func2, newOptions = assign2(assign2({}, oldOptions), options2); + return baseConvert(newUtil, realName, newFunc, newOptions); + }; + } + function iterateeAry(func2, n2) { + return overArg(func2, function(func3) { + return typeof func3 == "function" ? baseAry(func3, n2) : func3; + }); + } + function iterateeRearg(func2, indexes) { + return overArg(func2, function(func3) { + var n2 = indexes.length; + return baseArity(rearg(baseAry(func3, n2), indexes), n2); + }); + } + function overArg(func2, transform2) { + return function() { + var length = arguments.length; + if (!length) { + return func2(); + } + var args = Array(length); + while (length--) { + args[length] = arguments[length]; + } + var index = config.rearg ? 0 : length - 1; + args[index] = transform2(args[index]); + return func2.apply(void 0, args); + }; + } + function wrap(name2, func2, placeholder) { + var result, realName = mapping.aliasToReal[name2] || name2, wrapped = func2, wrapper = wrappers[realName]; + if (wrapper) { + wrapped = wrapper(func2); + } else if (config.immutable) { + if (mapping.mutate.array[realName]) { + wrapped = wrapImmutable(func2, cloneArray); + } else if (mapping.mutate.object[realName]) { + wrapped = wrapImmutable(func2, createCloner(func2)); + } else if (mapping.mutate.set[realName]) { + wrapped = wrapImmutable(func2, cloneByPath); + } + } + each3(aryMethodKeys, function(aryKey) { + each3(mapping.aryMethod[aryKey], function(otherName) { + if (realName == otherName) { + var data = mapping.methodSpread[realName], afterRearg = data && data.afterRearg; + result = afterRearg ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey) : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey); + result = castCap(realName, result); + result = castCurry(realName, result, aryKey); + return false; + } + }); + return !result; + }); + result || (result = wrapped); + if (result == func2) { + result = forceCurry ? curry(result, 1) : function() { + return func2.apply(this, arguments); + }; + } + result.convert = createConverter(realName, func2); + result.placeholder = func2.placeholder = placeholder; + return result; + } + if (!isObj) { + return wrap(name, func, defaultHolder); + } + var _2 = func; + var pairs = []; + each3(aryMethodKeys, function(aryKey) { + each3(mapping.aryMethod[aryKey], function(key) { + var func2 = _2[mapping.remap[key] || key]; + if (func2) { + pairs.push([key, wrap(key, func2, _2)]); + } + }); + }); + each3(keys2(_2), function(key) { + var func2 = _2[key]; + if (typeof func2 == "function") { + var length = pairs.length; + while (length--) { + if (pairs[length][0] == key) { + return; + } + } + func2.convert = createConverter(key, func2); + pairs.push([key, func2]); + } + }); + each3(pairs, function(pair) { + _2[pair[0]] = pair[1]; + }); + _2.convert = convertLib; + _2.placeholder = _2; + each3(keys2(_2), function(key) { + each3(mapping.realToAlias[key] || [], function(alias) { + _2[alias] = _2[key]; + }); + }); + return _2; + } + module2.exports = baseConvert; + } +}); + +// node_modules/lodash/fp.js +var require_fp = __commonJS({ + "node_modules/lodash/fp.js"(exports, module2) { + var _2 = require_lodash_min().runInContext(); + module2.exports = require_baseConvert()(_2, _2); + } +}); + +// node_modules/moment/moment.js +var require_moment = __commonJS({ + "node_modules/moment/moment.js"(exports, module2) { + (function(global2, factory) { + typeof exports === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global2.moment = factory(); + })(exports, function() { + "use strict"; + var hookCallback; + function hooks() { + return hookCallback.apply(null, arguments); + } + function setHookCallback(callback) { + hookCallback = callback; + } + function isArray2(input) { + return input instanceof Array || Object.prototype.toString.call(input) === "[object Array]"; + } + function isObject2(input) { + return input != null && Object.prototype.toString.call(input) === "[object Object]"; + } + function hasOwnProp(a2, b2) { + return Object.prototype.hasOwnProperty.call(a2, b2); + } + function isObjectEmpty(obj) { + if (Object.getOwnPropertyNames) { + return Object.getOwnPropertyNames(obj).length === 0; + } else { + var k2; + for (k2 in obj) { + if (hasOwnProp(obj, k2)) { + return false; + } + } + return true; + } + } + function isUndefined2(input) { + return input === void 0; + } + function isNumber2(input) { + return typeof input === "number" || Object.prototype.toString.call(input) === "[object Number]"; + } + function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === "[object Date]"; + } + function map2(arr, fn) { + var res = [], i2, arrLen = arr.length; + for (i2 = 0; i2 < arrLen; ++i2) { + res.push(fn(arr[i2], i2)); + } + return res; + } + function extend(a2, b2) { + for (var i2 in b2) { + if (hasOwnProp(b2, i2)) { + a2[i2] = b2[i2]; + } + } + if (hasOwnProp(b2, "toString")) { + a2.toString = b2.toString; + } + if (hasOwnProp(b2, "valueOf")) { + a2.valueOf = b2.valueOf; + } + return a2; + } + function createUTC(input, format2, locale2, strict) { + return createLocalOrUTC(input, format2, locale2, strict, true).utc(); + } + function defaultParsingFlags() { + return { + empty: false, + unusedTokens: [], + unusedInput: [], + overflow: -2, + charsLeftOver: 0, + nullInput: false, + invalidEra: null, + invalidMonth: null, + invalidFormat: false, + userInvalidated: false, + iso: false, + parsedDateParts: [], + era: null, + meridiem: null, + rfc2822: false, + weekdayMismatch: false + }; + } + function getParsingFlags(m2) { + if (m2._pf == null) { + m2._pf = defaultParsingFlags(); + } + return m2._pf; + } + var some; + if (Array.prototype.some) { + some = Array.prototype.some; + } else { + some = function(fun) { + var t2 = Object(this), len = t2.length >>> 0, i2; + for (i2 = 0; i2 < len; i2++) { + if (i2 in t2 && fun.call(this, t2[i2], i2, t2)) { + return true; + } + } + return false; + }; + } + function isValid(m2) { + if (m2._isValid == null) { + var flags = getParsingFlags(m2), parsedParts = some.call(flags.parsedDateParts, function(i2) { + return i2 != null; + }), isNowValid = !isNaN(m2._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts); + if (m2._strict) { + isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === void 0; + } + if (Object.isFrozen == null || !Object.isFrozen(m2)) { + m2._isValid = isNowValid; + } else { + return isNowValid; + } + } + return m2._isValid; + } + function createInvalid(flags) { + var m2 = createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m2), flags); + } else { + getParsingFlags(m2).userInvalidated = true; + } + return m2; + } + var momentProperties = hooks.momentProperties = [], updateInProgress = false; + function copyConfig(to2, from3) { + var i2, prop, val, momentPropertiesLen = momentProperties.length; + if (!isUndefined2(from3._isAMomentObject)) { + to2._isAMomentObject = from3._isAMomentObject; + } + if (!isUndefined2(from3._i)) { + to2._i = from3._i; + } + if (!isUndefined2(from3._f)) { + to2._f = from3._f; + } + if (!isUndefined2(from3._l)) { + to2._l = from3._l; + } + if (!isUndefined2(from3._strict)) { + to2._strict = from3._strict; + } + if (!isUndefined2(from3._tzm)) { + to2._tzm = from3._tzm; + } + if (!isUndefined2(from3._isUTC)) { + to2._isUTC = from3._isUTC; + } + if (!isUndefined2(from3._offset)) { + to2._offset = from3._offset; + } + if (!isUndefined2(from3._pf)) { + to2._pf = getParsingFlags(from3); + } + if (!isUndefined2(from3._locale)) { + to2._locale = from3._locale; + } + if (momentPropertiesLen > 0) { + for (i2 = 0; i2 < momentPropertiesLen; i2++) { + prop = momentProperties[i2]; + val = from3[prop]; + if (!isUndefined2(val)) { + to2[prop] = val; + } + } + } + return to2; + } + function Moment2(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + if (!this.isValid()) { + this._d = /* @__PURE__ */ new Date(NaN); + } + if (updateInProgress === false) { + updateInProgress = true; + hooks.updateOffset(this); + updateInProgress = false; + } + } + function isMoment(obj) { + return obj instanceof Moment2 || obj != null && obj._isAMomentObject != null; + } + function warn(msg) { + if (hooks.suppressDeprecationWarnings === false && typeof console !== "undefined" && console.warn) { + console.warn("Deprecation warning: " + msg); + } + } + function deprecate(msg, fn) { + var firstTime = true; + return extend(function() { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = [], arg, i2, key, argLen = arguments.length; + for (i2 = 0; i2 < argLen; i2++) { + arg = ""; + if (typeof arguments[i2] === "object") { + arg += "\n[" + i2 + "] "; + for (key in arguments[0]) { + if (hasOwnProp(arguments[0], key)) { + arg += key + ": " + arguments[0][key] + ", "; + } + } + arg = arg.slice(0, -2); + } else { + arg = arguments[i2]; + } + args.push(arg); + } + warn( + msg + "\nArguments: " + Array.prototype.slice.call(args).join("") + "\n" + new Error().stack + ); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + var deprecations = {}; + function deprecateSimple(name, msg) { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } + } + hooks.suppressDeprecationWarnings = false; + hooks.deprecationHandler = null; + function isFunction2(input) { + return typeof Function !== "undefined" && input instanceof Function || Object.prototype.toString.call(input) === "[object Function]"; + } + function set2(config) { + var prop, i2; + for (i2 in config) { + if (hasOwnProp(config, i2)) { + prop = config[i2]; + if (isFunction2(prop)) { + this[i2] = prop; + } else { + this["_" + i2] = prop; + } + } + } + this._config = config; + this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source + ); + } + function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject2(parentConfig[prop]) && isObject2(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject2(parentConfig[prop])) { + res[prop] = extend({}, res[prop]); + } + } + return res; + } + function Locale(config) { + if (config != null) { + this.set(config); + } + } + var keys2; + if (Object.keys) { + keys2 = Object.keys; + } else { + keys2 = function(obj) { + var i2, res = []; + for (i2 in obj) { + if (hasOwnProp(obj, i2)) { + res.push(i2); + } + } + return res; + }; + } + var defaultCalendar = { + sameDay: "[Today at] LT", + nextDay: "[Tomorrow at] LT", + nextWeek: "dddd [at] LT", + lastDay: "[Yesterday at] LT", + lastWeek: "[Last] dddd [at] LT", + sameElse: "L" + }; + function calendar(key, mom, now3) { + var output = this._calendar[key] || this._calendar["sameElse"]; + return isFunction2(output) ? output.call(mom, now3) : output; + } + function zeroFill(number, targetLength, forceSign) { + var absNumber = "" + Math.abs(number), zerosToFill = targetLength - absNumber.length, sign2 = number >= 0; + return (sign2 ? forceSign ? "+" : "" : "-") + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + } + var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, formatFunctions = {}, formatTokenFunctions = {}; + function addFormatToken(token2, padded, ordinal2, callback) { + var func = callback; + if (typeof callback === "string") { + func = function() { + return this[callback](); + }; + } + if (token2) { + formatTokenFunctions[token2] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function() { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal2) { + formatTokenFunctions[ordinal2] = function() { + return this.localeData().ordinal( + func.apply(this, arguments), + token2 + ); + }; + } + } + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ""); + } + return input.replace(/\\/g, ""); + } + function makeFormatFunction(format2) { + var array = format2.match(formattingTokens), i2, length; + for (i2 = 0, length = array.length; i2 < length; i2++) { + if (formatTokenFunctions[array[i2]]) { + array[i2] = formatTokenFunctions[array[i2]]; + } else { + array[i2] = removeFormattingTokens(array[i2]); + } + } + return function(mom) { + var output = "", i3; + for (i3 = 0; i3 < length; i3++) { + output += isFunction2(array[i3]) ? array[i3].call(mom, format2) : array[i3]; + } + return output; + }; + } + function formatMoment(m2, format2) { + if (!m2.isValid()) { + return m2.localeData().invalidDate(); + } + format2 = expandFormat(format2, m2.localeData()); + formatFunctions[format2] = formatFunctions[format2] || makeFormatFunction(format2); + return formatFunctions[format2](m2); + } + function expandFormat(format2, locale2) { + var i2 = 5; + function replaceLongDateFormatTokens(input) { + return locale2.longDateFormat(input) || input; + } + localFormattingTokens.lastIndex = 0; + while (i2 >= 0 && localFormattingTokens.test(format2)) { + format2 = format2.replace( + localFormattingTokens, + replaceLongDateFormatTokens + ); + localFormattingTokens.lastIndex = 0; + i2 -= 1; + } + return format2; + } + var defaultLongDateFormat = { + LTS: "h:mm:ss A", + LT: "h:mm A", + L: "MM/DD/YYYY", + LL: "MMMM D, YYYY", + LLL: "MMMM D, YYYY h:mm A", + LLLL: "dddd, MMMM D, YYYY h:mm A" + }; + function longDateFormat(key) { + var format2 = this._longDateFormat[key], formatUpper = this._longDateFormat[key.toUpperCase()]; + if (format2 || !formatUpper) { + return format2; + } + this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function(tok) { + if (tok === "MMMM" || tok === "MM" || tok === "DD" || tok === "dddd") { + return tok.slice(1); + } + return tok; + }).join(""); + return this._longDateFormat[key]; + } + var defaultInvalidDate = "Invalid date"; + function invalidDate() { + return this._invalidDate; + } + var defaultOrdinal = "%d", defaultDayOfMonthOrdinalParse = /\d{1,2}/; + function ordinal(number) { + return this._ordinal.replace("%d", number); + } + var defaultRelativeTime = { + future: "in %s", + past: "%s ago", + s: "a few seconds", + ss: "%d seconds", + m: "a minute", + mm: "%d minutes", + h: "an hour", + hh: "%d hours", + d: "a day", + dd: "%d days", + w: "a week", + ww: "%d weeks", + M: "a month", + MM: "%d months", + y: "a year", + yy: "%d years" + }; + function relativeTime(number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return isFunction2(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number); + } + function pastFuture(diff2, output) { + var format2 = this._relativeTime[diff2 > 0 ? "future" : "past"]; + return isFunction2(format2) ? format2(output) : format2.replace(/%s/i, output); + } + var aliases = {}; + function addUnitAlias(unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + "s"] = aliases[shorthand] = unit; + } + function normalizeUnits(units) { + return typeof units === "string" ? aliases[units] || aliases[units.toLowerCase()] : void 0; + } + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, normalizedProp, prop; + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + return normalizedInput; + } + var priorities = {}; + function addUnitPriority(unit, priority) { + priorities[unit] = priority; + } + function getPrioritizedUnits(unitsObj) { + var units = [], u2; + for (u2 in unitsObj) { + if (hasOwnProp(unitsObj, u2)) { + units.push({ unit: u2, priority: priorities[u2] }); + } + } + units.sort(function(a2, b2) { + return a2.priority - b2.priority; + }); + return units; + } + function isLeapYear(year) { + return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; + } + function absFloor(number) { + if (number < 0) { + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, value = 0; + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + return value; + } + function makeGetSet(unit, keepTime) { + return function(value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; + } + function get(mom, unit) { + return mom.isValid() ? mom._d["get" + (mom._isUTC ? "UTC" : "") + unit]() : NaN; + } + function set$1(mom, unit, value) { + if (mom.isValid() && !isNaN(value)) { + if (unit === "FullYear" && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { + value = toInt(value); + mom._d["set" + (mom._isUTC ? "UTC" : "") + unit]( + value, + mom.month(), + daysInMonth(value, mom.month()) + ); + } else { + mom._d["set" + (mom._isUTC ? "UTC" : "") + unit](value); + } + } + } + function stringGet(units) { + units = normalizeUnits(units); + if (isFunction2(this[units])) { + return this[units](); + } + return this; + } + function stringSet(units, value) { + if (typeof units === "object") { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units), i2, prioritizedLen = prioritized.length; + for (i2 = 0; i2 < prioritizedLen; i2++) { + this[prioritized[i2].unit](units[prioritized[i2].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction2(this[units])) { + return this[units](value); + } + } + return this; + } + var match1 = /\d/, match2 = /\d\d/, match3 = /\d{3}/, match4 = /\d{4}/, match6 = /[+-]?\d{6}/, match1to2 = /\d\d?/, match3to4 = /\d\d\d\d?/, match5to6 = /\d\d\d\d\d\d?/, match1to3 = /\d{1,3}/, match1to4 = /\d{1,4}/, match1to6 = /[+-]?\d{1,6}/, matchUnsigned = /\d+/, matchSigned = /[+-]?\d+/, matchOffset = /Z|[+-]\d\d:?\d\d/gi, matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, regexes; + regexes = {}; + function addRegexToken(token2, regex, strictRegex) { + regexes[token2] = isFunction2(regex) ? regex : function(isStrict, localeData2) { + return isStrict && strictRegex ? strictRegex : regex; + }; + } + function getParseRegexForToken(token2, config) { + if (!hasOwnProp(regexes, token2)) { + return new RegExp(unescapeFormat(token2)); + } + return regexes[token2](config._strict, config._locale); + } + function unescapeFormat(s2) { + return regexEscape( + s2.replace("\\", "").replace( + /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, + function(matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + } + ) + ); + } + function regexEscape(s2) { + return s2.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); + } + var tokens = {}; + function addParseToken(token2, callback) { + var i2, func = callback, tokenLen; + if (typeof token2 === "string") { + token2 = [token2]; + } + if (isNumber2(callback)) { + func = function(input, array) { + array[callback] = toInt(input); + }; + } + tokenLen = token2.length; + for (i2 = 0; i2 < tokenLen; i2++) { + tokens[token2[i2]] = func; + } + } + function addWeekParseToken(token2, callback) { + addParseToken(token2, function(input, array, config, token3) { + config._w = config._w || {}; + callback(input, config._w, config, token3); + }); + } + function addTimeToArrayFromToken(token2, input, config) { + if (input != null && hasOwnProp(tokens, token2)) { + tokens[token2](input, config._a, config, token2); + } + } + var YEAR = 0, MONTH = 1, DATE = 2, HOUR = 3, MINUTE = 4, SECOND = 5, MILLISECOND = 6, WEEK = 7, WEEKDAY = 8; + function mod(n2, x2) { + return (n2 % x2 + x2) % x2; + } + var indexOf; + if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; + } else { + indexOf = function(o2) { + var i2; + for (i2 = 0; i2 < this.length; ++i2) { + if (this[i2] === o2) { + return i2; + } + } + return -1; + }; + } + function daysInMonth(year, month) { + if (isNaN(year) || isNaN(month)) { + return NaN; + } + var modMonth = mod(month, 12); + year += (month - modMonth) / 12; + return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2; + } + addFormatToken("M", ["MM", 2], "Mo", function() { + return this.month() + 1; + }); + addFormatToken("MMM", 0, 0, function(format2) { + return this.localeData().monthsShort(this, format2); + }); + addFormatToken("MMMM", 0, 0, function(format2) { + return this.localeData().months(this, format2); + }); + addUnitAlias("month", "M"); + addUnitPriority("month", 8); + addRegexToken("M", match1to2); + addRegexToken("MM", match1to2, match2); + addRegexToken("MMM", function(isStrict, locale2) { + return locale2.monthsShortRegex(isStrict); + }); + addRegexToken("MMMM", function(isStrict, locale2) { + return locale2.monthsRegex(isStrict); + }); + addParseToken(["M", "MM"], function(input, array) { + array[MONTH] = toInt(input) - 1; + }); + addParseToken(["MMM", "MMMM"], function(input, array, config, token2) { + var month = config._locale.monthsParse(input, token2, config._strict); + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } + }); + var defaultLocaleMonths = "January_February_March_April_May_June_July_August_September_October_November_December".split( + "_" + ), defaultLocaleMonthsShort = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, defaultMonthsShortRegex = matchWord, defaultMonthsRegex = matchWord; + function localeMonths(m2, format2) { + if (!m2) { + return isArray2(this._months) ? this._months : this._months["standalone"]; + } + return isArray2(this._months) ? this._months[m2.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format2) ? "format" : "standalone"][m2.month()]; + } + function localeMonthsShort(m2, format2) { + if (!m2) { + return isArray2(this._monthsShort) ? this._monthsShort : this._monthsShort["standalone"]; + } + return isArray2(this._monthsShort) ? this._monthsShort[m2.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format2) ? "format" : "standalone"][m2.month()]; + } + function handleStrictParse(monthName, format2, strict) { + var i2, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i2 = 0; i2 < 12; ++i2) { + mom = createUTC([2e3, i2]); + this._shortMonthsParse[i2] = this.monthsShort( + mom, + "" + ).toLocaleLowerCase(); + this._longMonthsParse[i2] = this.months(mom, "").toLocaleLowerCase(); + } + } + if (strict) { + if (format2 === "MMM") { + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format2 === "MMM") { + ii = indexOf.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } + } + function localeMonthsParse(monthName, format2, strict) { + var i2, mom, regex; + if (this._monthsParseExact) { + return handleStrictParse.call(this, monthName, format2, strict); + } + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + for (i2 = 0; i2 < 12; i2++) { + mom = createUTC([2e3, i2]); + if (strict && !this._longMonthsParse[i2]) { + this._longMonthsParse[i2] = new RegExp( + "^" + this.months(mom, "").replace(".", "") + "$", + "i" + ); + this._shortMonthsParse[i2] = new RegExp( + "^" + this.monthsShort(mom, "").replace(".", "") + "$", + "i" + ); + } + if (!strict && !this._monthsParse[i2]) { + regex = "^" + this.months(mom, "") + "|^" + this.monthsShort(mom, ""); + this._monthsParse[i2] = new RegExp(regex.replace(".", ""), "i"); + } + if (strict && format2 === "MMMM" && this._longMonthsParse[i2].test(monthName)) { + return i2; + } else if (strict && format2 === "MMM" && this._shortMonthsParse[i2].test(monthName)) { + return i2; + } else if (!strict && this._monthsParse[i2].test(monthName)) { + return i2; + } + } + } + function setMonth(mom, value) { + var dayOfMonth; + if (!mom.isValid()) { + return mom; + } + if (typeof value === "string") { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + if (!isNumber2(value)) { + return mom; + } + } + } + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d["set" + (mom._isUTC ? "UTC" : "") + "Month"](value, dayOfMonth); + return mom; + } + function getSetMonth(value) { + if (value != null) { + setMonth(this, value); + hooks.updateOffset(this, true); + return this; + } else { + return get(this, "Month"); + } + } + function getDaysInMonth() { + return daysInMonth(this.year(), this.month()); + } + function monthsShortRegex(isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, "_monthsRegex")) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, "_monthsShortRegex")) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex; + } + } + function monthsRegex(isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, "_monthsRegex")) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, "_monthsRegex")) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex; + } + } + function computeMonthsParse() { + function cmpLenRev(a2, b2) { + return b2.length - a2.length; + } + var shortPieces = [], longPieces = [], mixedPieces = [], i2, mom; + for (i2 = 0; i2 < 12; i2++) { + mom = createUTC([2e3, i2]); + shortPieces.push(this.monthsShort(mom, "")); + longPieces.push(this.months(mom, "")); + mixedPieces.push(this.months(mom, "")); + mixedPieces.push(this.monthsShort(mom, "")); + } + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i2 = 0; i2 < 12; i2++) { + shortPieces[i2] = regexEscape(shortPieces[i2]); + longPieces[i2] = regexEscape(longPieces[i2]); + } + for (i2 = 0; i2 < 24; i2++) { + mixedPieces[i2] = regexEscape(mixedPieces[i2]); + } + this._monthsRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i"); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp( + "^(" + longPieces.join("|") + ")", + "i" + ); + this._monthsShortStrictRegex = new RegExp( + "^(" + shortPieces.join("|") + ")", + "i" + ); + } + addFormatToken("Y", 0, 0, function() { + var y2 = this.year(); + return y2 <= 9999 ? zeroFill(y2, 4) : "+" + y2; + }); + addFormatToken(0, ["YY", 2], 0, function() { + return this.year() % 100; + }); + addFormatToken(0, ["YYYY", 4], 0, "year"); + addFormatToken(0, ["YYYYY", 5], 0, "year"); + addFormatToken(0, ["YYYYYY", 6, true], 0, "year"); + addUnitAlias("year", "y"); + addUnitPriority("year", 1); + addRegexToken("Y", matchSigned); + addRegexToken("YY", match1to2, match2); + addRegexToken("YYYY", match1to4, match4); + addRegexToken("YYYYY", match1to6, match6); + addRegexToken("YYYYYY", match1to6, match6); + addParseToken(["YYYYY", "YYYYYY"], YEAR); + addParseToken("YYYY", function(input, array) { + array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken("YY", function(input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); + }); + addParseToken("Y", function(input, array) { + array[YEAR] = parseInt(input, 10); + }); + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + hooks.parseTwoDigitYear = function(input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2e3); + }; + var getSetYear = makeGetSet("FullYear", true); + function getIsLeapYear() { + return isLeapYear(this.year()); + } + function createDate(y2, m2, d2, h2, M2, s2, ms) { + var date2; + if (y2 < 100 && y2 >= 0) { + date2 = new Date(y2 + 400, m2, d2, h2, M2, s2, ms); + if (isFinite(date2.getFullYear())) { + date2.setFullYear(y2); + } + } else { + date2 = new Date(y2, m2, d2, h2, M2, s2, ms); + } + return date2; + } + function createUTCDate(y2) { + var date2, args; + if (y2 < 100 && y2 >= 0) { + args = Array.prototype.slice.call(arguments); + args[0] = y2 + 400; + date2 = new Date(Date.UTC.apply(null, args)); + if (isFinite(date2.getUTCFullYear())) { + date2.setUTCFullYear(y2); + } + } else { + date2 = new Date(Date.UTC.apply(null, arguments)); + } + return date2; + } + function firstWeekOffset(year, dow, doy) { + var fwd = 7 + dow - doy, fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + return -fwdlw + fwd - 1; + } + function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, weekOffset = firstWeekOffset(year, dow, doy), dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, resYear, resDayOfYear; + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } + return { + year: resYear, + dayOfYear: resDayOfYear + }; + } + function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, resWeek, resYear; + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + return { + week: resWeek, + year: resYear + }; + } + function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; + } + addFormatToken("w", ["ww", 2], "wo", "week"); + addFormatToken("W", ["WW", 2], "Wo", "isoWeek"); + addUnitAlias("week", "w"); + addUnitAlias("isoWeek", "W"); + addUnitPriority("week", 5); + addUnitPriority("isoWeek", 5); + addRegexToken("w", match1to2); + addRegexToken("ww", match1to2, match2); + addRegexToken("W", match1to2); + addRegexToken("WW", match1to2, match2); + addWeekParseToken( + ["w", "ww", "W", "WW"], + function(input, week, config, token2) { + week[token2.substr(0, 1)] = toInt(input); + } + ); + function localeWeek(mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + } + var defaultLocaleWeek = { + dow: 0, + // Sunday is the first day of the week. + doy: 6 + // The week that contains Jan 6th is the first week of the year. + }; + function localeFirstDayOfWeek() { + return this._week.dow; + } + function localeFirstDayOfYear() { + return this._week.doy; + } + function getSetWeek(input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, "d"); + } + function getSetISOWeek(input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, "d"); + } + addFormatToken("d", 0, "do", "day"); + addFormatToken("dd", 0, 0, function(format2) { + return this.localeData().weekdaysMin(this, format2); + }); + addFormatToken("ddd", 0, 0, function(format2) { + return this.localeData().weekdaysShort(this, format2); + }); + addFormatToken("dddd", 0, 0, function(format2) { + return this.localeData().weekdays(this, format2); + }); + addFormatToken("e", 0, 0, "weekday"); + addFormatToken("E", 0, 0, "isoWeekday"); + addUnitAlias("day", "d"); + addUnitAlias("weekday", "e"); + addUnitAlias("isoWeekday", "E"); + addUnitPriority("day", 11); + addUnitPriority("weekday", 11); + addUnitPriority("isoWeekday", 11); + addRegexToken("d", match1to2); + addRegexToken("e", match1to2); + addRegexToken("E", match1to2); + addRegexToken("dd", function(isStrict, locale2) { + return locale2.weekdaysMinRegex(isStrict); + }); + addRegexToken("ddd", function(isStrict, locale2) { + return locale2.weekdaysShortRegex(isStrict); + }); + addRegexToken("dddd", function(isStrict, locale2) { + return locale2.weekdaysRegex(isStrict); + }); + addWeekParseToken(["dd", "ddd", "dddd"], function(input, week, config, token2) { + var weekday = config._locale.weekdaysParse(input, token2, config._strict); + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } + }); + addWeekParseToken(["d", "e", "E"], function(input, week, config, token2) { + week[token2] = toInt(input); + }); + function parseWeekday(input, locale2) { + if (typeof input !== "string") { + return input; + } + if (!isNaN(input)) { + return parseInt(input, 10); + } + input = locale2.weekdaysParse(input); + if (typeof input === "number") { + return input; + } + return null; + } + function parseIsoWeekday(input, locale2) { + if (typeof input === "string") { + return locale2.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; + } + function shiftWeekdays(ws, n2) { + return ws.slice(n2, 7).concat(ws.slice(0, n2)); + } + var defaultLocaleWeekdays = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), defaultLocaleWeekdaysShort = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), defaultLocaleWeekdaysMin = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), defaultWeekdaysRegex = matchWord, defaultWeekdaysShortRegex = matchWord, defaultWeekdaysMinRegex = matchWord; + function localeWeekdays(m2, format2) { + var weekdays = isArray2(this._weekdays) ? this._weekdays : this._weekdays[m2 && m2 !== true && this._weekdays.isFormat.test(format2) ? "format" : "standalone"]; + return m2 === true ? shiftWeekdays(weekdays, this._week.dow) : m2 ? weekdays[m2.day()] : weekdays; + } + function localeWeekdaysShort(m2) { + return m2 === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m2 ? this._weekdaysShort[m2.day()] : this._weekdaysShort; + } + function localeWeekdaysMin(m2) { + return m2 === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m2 ? this._weekdaysMin[m2.day()] : this._weekdaysMin; + } + function handleStrictParse$1(weekdayName, format2, strict) { + var i2, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + for (i2 = 0; i2 < 7; ++i2) { + mom = createUTC([2e3, 1]).day(i2); + this._minWeekdaysParse[i2] = this.weekdaysMin( + mom, + "" + ).toLocaleLowerCase(); + this._shortWeekdaysParse[i2] = this.weekdaysShort( + mom, + "" + ).toLocaleLowerCase(); + this._weekdaysParse[i2] = this.weekdays(mom, "").toLocaleLowerCase(); + } + } + if (strict) { + if (format2 === "dddd") { + ii = indexOf.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format2 === "ddd") { + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format2 === "dddd") { + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format2 === "ddd") { + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } + } + function localeWeekdaysParse(weekdayName, format2, strict) { + var i2, mom, regex; + if (this._weekdaysParseExact) { + return handleStrictParse$1.call(this, weekdayName, format2, strict); + } + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } + for (i2 = 0; i2 < 7; i2++) { + mom = createUTC([2e3, 1]).day(i2); + if (strict && !this._fullWeekdaysParse[i2]) { + this._fullWeekdaysParse[i2] = new RegExp( + "^" + this.weekdays(mom, "").replace(".", "\\.?") + "$", + "i" + ); + this._shortWeekdaysParse[i2] = new RegExp( + "^" + this.weekdaysShort(mom, "").replace(".", "\\.?") + "$", + "i" + ); + this._minWeekdaysParse[i2] = new RegExp( + "^" + this.weekdaysMin(mom, "").replace(".", "\\.?") + "$", + "i" + ); + } + if (!this._weekdaysParse[i2]) { + regex = "^" + this.weekdays(mom, "") + "|^" + this.weekdaysShort(mom, "") + "|^" + this.weekdaysMin(mom, ""); + this._weekdaysParse[i2] = new RegExp(regex.replace(".", ""), "i"); + } + if (strict && format2 === "dddd" && this._fullWeekdaysParse[i2].test(weekdayName)) { + return i2; + } else if (strict && format2 === "ddd" && this._shortWeekdaysParse[i2].test(weekdayName)) { + return i2; + } else if (strict && format2 === "dd" && this._minWeekdaysParse[i2].test(weekdayName)) { + return i2; + } else if (!strict && this._weekdaysParse[i2].test(weekdayName)) { + return i2; + } + } + } + function getSetDayOfWeek(input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, "d"); + } else { + return day; + } + } + function getSetLocaleDayOfWeek(input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, "d"); + } + function getSetISODayOfWeek(input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } + } + function weekdaysRegex(isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, "_weekdaysRegex")) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, "_weekdaysRegex")) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex; + } + } + function weekdaysShortRegex(isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, "_weekdaysRegex")) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, "_weekdaysShortRegex")) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } + } + function weekdaysMinRegex(isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, "_weekdaysRegex")) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, "_weekdaysMinRegex")) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } + } + function computeWeekdaysParse() { + function cmpLenRev(a2, b2) { + return b2.length - a2.length; + } + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], i2, mom, minp, shortp, longp; + for (i2 = 0; i2 < 7; i2++) { + mom = createUTC([2e3, 1]).day(i2); + minp = regexEscape(this.weekdaysMin(mom, "")); + shortp = regexEscape(this.weekdaysShort(mom, "")); + longp = regexEscape(this.weekdays(mom, "")); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + this._weekdaysRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i"); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + this._weekdaysStrictRegex = new RegExp( + "^(" + longPieces.join("|") + ")", + "i" + ); + this._weekdaysShortStrictRegex = new RegExp( + "^(" + shortPieces.join("|") + ")", + "i" + ); + this._weekdaysMinStrictRegex = new RegExp( + "^(" + minPieces.join("|") + ")", + "i" + ); + } + function hFormat() { + return this.hours() % 12 || 12; + } + function kFormat() { + return this.hours() || 24; + } + addFormatToken("H", ["HH", 2], 0, "hour"); + addFormatToken("h", ["hh", 2], 0, hFormat); + addFormatToken("k", ["kk", 2], 0, kFormat); + addFormatToken("hmm", 0, 0, function() { + return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2); + }); + addFormatToken("hmmss", 0, 0, function() { + return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2); + }); + addFormatToken("Hmm", 0, 0, function() { + return "" + this.hours() + zeroFill(this.minutes(), 2); + }); + addFormatToken("Hmmss", 0, 0, function() { + return "" + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2); + }); + function meridiem(token2, lowercase) { + addFormatToken(token2, 0, 0, function() { + return this.localeData().meridiem( + this.hours(), + this.minutes(), + lowercase + ); + }); + } + meridiem("a", true); + meridiem("A", false); + addUnitAlias("hour", "h"); + addUnitPriority("hour", 13); + function matchMeridiem(isStrict, locale2) { + return locale2._meridiemParse; + } + addRegexToken("a", matchMeridiem); + addRegexToken("A", matchMeridiem); + addRegexToken("H", match1to2); + addRegexToken("h", match1to2); + addRegexToken("k", match1to2); + addRegexToken("HH", match1to2, match2); + addRegexToken("hh", match1to2, match2); + addRegexToken("kk", match1to2, match2); + addRegexToken("hmm", match3to4); + addRegexToken("hmmss", match5to6); + addRegexToken("Hmm", match3to4); + addRegexToken("Hmmss", match5to6); + addParseToken(["H", "HH"], HOUR); + addParseToken(["k", "kk"], function(input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; + }); + addParseToken(["a", "A"], function(input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(["h", "hh"], function(input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + addParseToken("hmm", function(input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; + }); + addParseToken("hmmss", function(input, array, config) { + var pos1 = input.length - 4, pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; + }); + addParseToken("Hmm", function(input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + }); + addParseToken("Hmmss", function(input, array, config) { + var pos1 = input.length - 4, pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + }); + function localeIsPM(input) { + return (input + "").toLowerCase().charAt(0) === "p"; + } + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, getSetHour = makeGetSet("Hours", true); + function localeMeridiem(hours3, minutes3, isLower) { + if (hours3 > 11) { + return isLower ? "pm" : "PM"; + } else { + return isLower ? "am" : "AM"; + } + } + var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, + relativeTime: defaultRelativeTime, + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, + week: defaultLocaleWeek, + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, + meridiemParse: defaultLocaleMeridiemParse + }; + var locales = {}, localeFamilies = {}, globalLocale; + function commonPrefix(arr1, arr2) { + var i2, minl = Math.min(arr1.length, arr2.length); + for (i2 = 0; i2 < minl; i2 += 1) { + if (arr1[i2] !== arr2[i2]) { + return i2; + } + } + return minl; + } + function normalizeLocale(key) { + return key ? key.toLowerCase().replace("_", "-") : key; + } + function chooseLocale(names) { + var i2 = 0, j2, next, locale2, split; + while (i2 < names.length) { + split = normalizeLocale(names[i2]).split("-"); + j2 = split.length; + next = normalizeLocale(names[i2 + 1]); + next = next ? next.split("-") : null; + while (j2 > 0) { + locale2 = loadLocale(split.slice(0, j2).join("-")); + if (locale2) { + return locale2; + } + if (next && next.length >= j2 && commonPrefix(split, next) >= j2 - 1) { + break; + } + j2--; + } + i2++; + } + return globalLocale; + } + function isLocaleNameSane(name) { + return name.match("^[^/\\\\]*$") != null; + } + function loadLocale(name) { + var oldLocale = null, aliasedRequire; + if (locales[name] === void 0 && typeof module2 !== "undefined" && module2 && module2.exports && isLocaleNameSane(name)) { + try { + oldLocale = globalLocale._abbr; + aliasedRequire = require; + aliasedRequire("./locale/" + name); + getSetGlobalLocale(oldLocale); + } catch (e2) { + locales[name] = null; + } + } + return locales[name]; + } + function getSetGlobalLocale(key, values) { + var data; + if (key) { + if (isUndefined2(values)) { + data = getLocale(key); + } else { + data = defineLocale(key, values); + } + if (data) { + globalLocale = data; + } else { + if (typeof console !== "undefined" && console.warn) { + console.warn( + "Locale " + key + " not found. Did you forget to load it?" + ); + } + } + } + return globalLocale._abbr; + } + function defineLocale(name, config) { + if (config !== null) { + var locale2, parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple( + "defineLocaleOverride", + "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info." + ); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + locale2 = loadLocale(config.parentLocale); + if (locale2 != null) { + parentConfig = locale2._config; + } else { + if (!localeFamilies[config.parentLocale]) { + localeFamilies[config.parentLocale] = []; + } + localeFamilies[config.parentLocale].push({ + name, + config + }); + return null; + } + } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); + if (localeFamilies[name]) { + localeFamilies[name].forEach(function(x2) { + defineLocale(x2.name, x2.config); + }); + } + getSetGlobalLocale(name); + return locales[name]; + } else { + delete locales[name]; + return null; + } + } + function updateLocale(name, config) { + if (config != null) { + var locale2, tmpLocale, parentConfig = baseConfig; + if (locales[name] != null && locales[name].parentLocale != null) { + locales[name].set(mergeConfigs(locales[name]._config, config)); + } else { + tmpLocale = loadLocale(name); + if (tmpLocale != null) { + parentConfig = tmpLocale._config; + } + config = mergeConfigs(parentConfig, config); + if (tmpLocale == null) { + config.abbr = name; + } + locale2 = new Locale(config); + locale2.parentLocale = locales[name]; + locales[name] = locale2; + } + getSetGlobalLocale(name); + } else { + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + if (name === getSetGlobalLocale()) { + getSetGlobalLocale(name); + } + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; + } + function getLocale(key) { + var locale2; + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + if (!key) { + return globalLocale; + } + if (!isArray2(key)) { + locale2 = loadLocale(key); + if (locale2) { + return locale2; + } + key = [key]; + } + return chooseLocale(key); + } + function listLocales() { + return keys2(locales); + } + function checkOverflow(m2) { + var overflow, a2 = m2._a; + if (a2 && getParsingFlags(m2).overflow === -2) { + overflow = a2[MONTH] < 0 || a2[MONTH] > 11 ? MONTH : a2[DATE] < 1 || a2[DATE] > daysInMonth(a2[YEAR], a2[MONTH]) ? DATE : a2[HOUR] < 0 || a2[HOUR] > 24 || a2[HOUR] === 24 && (a2[MINUTE] !== 0 || a2[SECOND] !== 0 || a2[MILLISECOND] !== 0) ? HOUR : a2[MINUTE] < 0 || a2[MINUTE] > 59 ? MINUTE : a2[SECOND] < 0 || a2[SECOND] > 59 ? SECOND : a2[MILLISECOND] < 0 || a2[MILLISECOND] > 999 ? MILLISECOND : -1; + if (getParsingFlags(m2)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m2)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m2)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + getParsingFlags(m2).overflow = overflow; + } + return m2; + } + var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, isoDates = [ + ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/], + ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/], + ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/], + ["GGGG-[W]WW", /\d{4}-W\d\d/, false], + ["YYYY-DDD", /\d{4}-\d{3}/], + ["YYYY-MM", /\d{4}-\d\d/, false], + ["YYYYYYMMDD", /[+-]\d{10}/], + ["YYYYMMDD", /\d{8}/], + ["GGGG[W]WWE", /\d{4}W\d{3}/], + ["GGGG[W]WW", /\d{4}W\d{2}/, false], + ["YYYYDDD", /\d{7}/], + ["YYYYMM", /\d{6}/, false], + ["YYYY", /\d{4}/, false] + ], isoTimes = [ + ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/], + ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/], + ["HH:mm:ss", /\d\d:\d\d:\d\d/], + ["HH:mm", /\d\d:\d\d/], + ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/], + ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/], + ["HHmmss", /\d\d\d\d\d\d/], + ["HHmm", /\d\d\d\d/], + ["HH", /\d\d/] + ], aspNetJsonRegex = /^\/?Date\((-?\d+)/i, rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, obsOffsets = { + UT: 0, + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60 + }; + function configFromISO(config) { + var i2, l2, string = config._i, match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), allowTime, dateFormat, timeFormat, tzFormat, isoDatesLen = isoDates.length, isoTimesLen = isoTimes.length; + if (match) { + getParsingFlags(config).iso = true; + for (i2 = 0, l2 = isoDatesLen; i2 < l2; i2++) { + if (isoDates[i2][1].exec(match[1])) { + dateFormat = isoDates[i2][0]; + allowTime = isoDates[i2][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i2 = 0, l2 = isoTimesLen; i2 < l2; i2++) { + if (isoTimes[i2][1].exec(match[3])) { + timeFormat = (match[2] || " ") + isoTimes[i2][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = "Z"; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || "") + (tzFormat || ""); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + var result = [ + untruncateYear(yearStr), + defaultLocaleMonthsShort.indexOf(monthStr), + parseInt(dayStr, 10), + parseInt(hourStr, 10), + parseInt(minuteStr, 10) + ]; + if (secondStr) { + result.push(parseInt(secondStr, 10)); + } + return result; + } + function untruncateYear(yearStr) { + var year = parseInt(yearStr, 10); + if (year <= 49) { + return 2e3 + year; + } else if (year <= 999) { + return 1900 + year; + } + return year; + } + function preprocessRFC2822(s2) { + return s2.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, ""); + } + function checkWeekday(weekdayStr, parsedInput, config) { + if (weekdayStr) { + var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), weekdayActual = new Date( + parsedInput[0], + parsedInput[1], + parsedInput[2] + ).getDay(); + if (weekdayProvided !== weekdayActual) { + getParsingFlags(config).weekdayMismatch = true; + config._isValid = false; + return false; + } + } + return true; + } + function calculateOffset(obsOffset, militaryOffset, numOffset) { + if (obsOffset) { + return obsOffsets[obsOffset]; + } else if (militaryOffset) { + return 0; + } else { + var hm = parseInt(numOffset, 10), m2 = hm % 100, h2 = (hm - m2) / 100; + return h2 * 60 + m2; + } + } + function configFromRFC2822(config) { + var match = rfc2822.exec(preprocessRFC2822(config._i)), parsedArray; + if (match) { + parsedArray = extractFromRFC2822Strings( + match[4], + match[3], + match[2], + match[5], + match[6], + match[7] + ); + if (!checkWeekday(match[1], parsedArray, config)) { + return; + } + config._a = parsedArray; + config._tzm = calculateOffset(match[8], match[9], match[10]); + config._d = createUTCDate.apply(null, config._a); + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + getParsingFlags(config).rfc2822 = true; + } else { + config._isValid = false; + } + } + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + if (matched !== null) { + config._d = /* @__PURE__ */ new Date(+matched[1]); + return; + } + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + configFromRFC2822(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + if (config._strict) { + config._isValid = false; + } else { + hooks.createFromInputFallback(config); + } + } + hooks.createFromInputFallback = deprecate( + "value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", + function(config) { + config._d = /* @__PURE__ */ new Date(config._i + (config._useUTC ? " UTC" : "")); + } + ); + function defaults(a2, b2, c2) { + if (a2 != null) { + return a2; + } + if (b2 != null) { + return b2; + } + return c2; + } + function currentDateArray(config) { + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [ + nowValue.getUTCFullYear(), + nowValue.getUTCMonth(), + nowValue.getUTCDate() + ]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; + } + function configFromArray(config) { + var i2, date2, input = [], currentDate, expectedWeekday, yearToUse; + if (config._d) { + return; + } + currentDate = currentDateArray(config); + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { + getParsingFlags(config)._overflowDayOfYear = true; + } + date2 = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date2.getUTCMonth(); + config._a[DATE] = date2.getUTCDate(); + } + for (i2 = 0; i2 < 3 && config._a[i2] == null; ++i2) { + config._a[i2] = input[i2] = currentDate[i2]; + } + for (; i2 < 7; i2++) { + config._a[i2] = input[i2] = config._a[i2] == null ? i2 === 2 ? 1 : 0 : config._a[i2]; + } + if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + config._d = (config._useUTC ? createUTCDate : createDate).apply( + null, + input + ); + expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + if (config._nextDay) { + config._a[HOUR] = 24; + } + if (config._w && typeof config._w.d !== "undefined" && config._w.d !== expectedWeekday) { + getParsingFlags(config).weekdayMismatch = true; + } + } + function dayOfYearFromWeekInfo(config) { + var w2, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; + w2 = config._w; + if (w2.GG != null || w2.W != null || w2.E != null) { + dow = 1; + doy = 4; + weekYear = defaults( + w2.GG, + config._a[YEAR], + weekOfYear(createLocal(), 1, 4).year + ); + week = defaults(w2.W, 1); + weekday = defaults(w2.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + curWeek = weekOfYear(createLocal(), dow, doy); + weekYear = defaults(w2.gg, config._a[YEAR], curWeek.year); + week = defaults(w2.w, curWeek.week); + if (w2.d != null) { + weekday = w2.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w2.e != null) { + weekday = w2.e + dow; + if (w2.e < 0 || w2.e > 6) { + weekdayOverflow = true; + } + } else { + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + } + hooks.ISO_8601 = function() { + }; + hooks.RFC_2822 = function() { + }; + function configFromStringAndFormat(config) { + if (config._f === hooks.ISO_8601) { + configFromISO(config); + return; + } + if (config._f === hooks.RFC_2822) { + configFromRFC2822(config); + return; + } + config._a = []; + getParsingFlags(config).empty = true; + var string = "" + config._i, i2, parsedInput, tokens2, token2, skipped, stringLength = string.length, totalParsedInputLength = 0, era, tokenLen; + tokens2 = expandFormat(config._f, config._locale).match(formattingTokens) || []; + tokenLen = tokens2.length; + for (i2 = 0; i2 < tokenLen; i2++) { + token2 = tokens2[i2]; + parsedInput = (string.match(getParseRegexForToken(token2, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice( + string.indexOf(parsedInput) + parsedInput.length + ); + totalParsedInputLength += parsedInput.length; + } + if (formatTokenFunctions[token2]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } else { + getParsingFlags(config).unusedTokens.push(token2); + } + addTimeToArrayFromToken(token2, parsedInput, config); + } else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token2); + } + } + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = void 0; + } + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + config._a[HOUR] = meridiemFixWrap( + config._locale, + config._a[HOUR], + config._meridiem + ); + era = getParsingFlags(config).era; + if (era !== null) { + config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]); + } + configFromArray(config); + checkOverflow(config); + } + function meridiemFixWrap(locale2, hour, meridiem2) { + var isPm; + if (meridiem2 == null) { + return hour; + } + if (locale2.meridiemHour != null) { + return locale2.meridiemHour(hour, meridiem2); + } else if (locale2.isPM != null) { + isPm = locale2.isPM(meridiem2); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + return hour; + } + } + function configFromStringAndArray(config) { + var tempConfig, bestMoment, scoreToBeat, i2, currentScore, validFormatFound, bestFormatIsValid = false, configfLen = config._f.length; + if (configfLen === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = /* @__PURE__ */ new Date(NaN); + return; + } + for (i2 = 0; i2 < configfLen; i2++) { + currentScore = 0; + validFormatFound = false; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i2]; + configFromStringAndFormat(tempConfig); + if (isValid(tempConfig)) { + validFormatFound = true; + } + currentScore += getParsingFlags(tempConfig).charsLeftOver; + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + getParsingFlags(tempConfig).score = currentScore; + if (!bestFormatIsValid) { + if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + if (validFormatFound) { + bestFormatIsValid = true; + } + } + } else { + if (currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + } + extend(config, bestMoment || tempConfig); + } + function configFromObject(config) { + if (config._d) { + return; + } + var i2 = normalizeObjectUnits(config._i), dayOrDate = i2.day === void 0 ? i2.date : i2.day; + config._a = map2( + [i2.year, i2.month, dayOrDate, i2.hour, i2.minute, i2.second, i2.millisecond], + function(obj) { + return obj && parseInt(obj, 10); + } + ); + configFromArray(config); + } + function createFromConfig(config) { + var res = new Moment2(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + res.add(1, "d"); + res._nextDay = void 0; + } + return res; + } + function prepareConfig(config) { + var input = config._i, format2 = config._f; + config._locale = config._locale || getLocale(config._l); + if (input === null || format2 === void 0 && input === "") { + return createInvalid({ nullInput: true }); + } + if (typeof input === "string") { + config._i = input = config._locale.preparse(input); + } + if (isMoment(input)) { + return new Moment2(checkOverflow(input)); + } else if (isDate(input)) { + config._d = input; + } else if (isArray2(format2)) { + configFromStringAndArray(config); + } else if (format2) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + if (!isValid(config)) { + config._d = null; + } + return config; + } + function configFromInput(config) { + var input = config._i; + if (isUndefined2(input)) { + config._d = new Date(hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === "string") { + configFromString(config); + } else if (isArray2(input)) { + config._a = map2(input.slice(0), function(obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (isObject2(input)) { + configFromObject(config); + } else if (isNumber2(input)) { + config._d = new Date(input); + } else { + hooks.createFromInputFallback(config); + } + } + function createLocalOrUTC(input, format2, locale2, strict, isUTC) { + var c2 = {}; + if (format2 === true || format2 === false) { + strict = format2; + format2 = void 0; + } + if (locale2 === true || locale2 === false) { + strict = locale2; + locale2 = void 0; + } + if (isObject2(input) && isObjectEmpty(input) || isArray2(input) && input.length === 0) { + input = void 0; + } + c2._isAMomentObject = true; + c2._useUTC = c2._isUTC = isUTC; + c2._l = locale2; + c2._i = input; + c2._f = format2; + c2._strict = strict; + return createFromConfig(c2); + } + function createLocal(input, format2, locale2, strict) { + return createLocalOrUTC(input, format2, locale2, strict, false); + } + var prototypeMin = deprecate( + "moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", + function() { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } + } + ), prototypeMax = deprecate( + "moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", + function() { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } + } + ); + function pickBy(fn, moments) { + var res, i2; + if (moments.length === 1 && isArray2(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return createLocal(); + } + res = moments[0]; + for (i2 = 1; i2 < moments.length; ++i2) { + if (!moments[i2].isValid() || moments[i2][fn](res)) { + res = moments[i2]; + } + } + return res; + } + function min2() { + var args = [].slice.call(arguments, 0); + return pickBy("isBefore", args); + } + function max2() { + var args = [].slice.call(arguments, 0); + return pickBy("isAfter", args); + } + var now2 = function() { + return Date.now ? Date.now() : +/* @__PURE__ */ new Date(); + }; + var ordering = [ + "year", + "quarter", + "month", + "week", + "day", + "hour", + "minute", + "second", + "millisecond" + ]; + function isDurationValid(m2) { + var key, unitHasDecimal = false, i2, orderLen = ordering.length; + for (key in m2) { + if (hasOwnProp(m2, key) && !(indexOf.call(ordering, key) !== -1 && (m2[key] == null || !isNaN(m2[key])))) { + return false; + } + } + for (i2 = 0; i2 < orderLen; ++i2) { + if (m2[ordering[i2]]) { + if (unitHasDecimal) { + return false; + } + if (parseFloat(m2[ordering[i2]]) !== toInt(m2[ordering[i2]])) { + unitHasDecimal = true; + } + } + } + return true; + } + function isValid$1() { + return this._isValid; + } + function createInvalid$1() { + return createDuration(NaN); + } + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), years2 = normalizedInput.year || 0, quarters = normalizedInput.quarter || 0, months2 = normalizedInput.month || 0, weeks2 = normalizedInput.week || normalizedInput.isoWeek || 0, days2 = normalizedInput.day || 0, hours3 = normalizedInput.hour || 0, minutes3 = normalizedInput.minute || 0, seconds2 = normalizedInput.second || 0, milliseconds2 = normalizedInput.millisecond || 0; + this._isValid = isDurationValid(normalizedInput); + this._milliseconds = +milliseconds2 + seconds2 * 1e3 + // 1000 + minutes3 * 6e4 + // 1000 * 60 + hours3 * 1e3 * 60 * 60; + this._days = +days2 + weeks2 * 7; + this._months = +months2 + quarters * 3 + years2 * 12; + this._data = {}; + this._locale = getLocale(); + this._bubble(); + } + function isDuration(obj) { + return obj instanceof Duration; + } + function absRound(number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } + } + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), diffs = 0, i2; + for (i2 = 0; i2 < len; i2++) { + if (dontConvert && array1[i2] !== array2[i2] || !dontConvert && toInt(array1[i2]) !== toInt(array2[i2])) { + diffs++; + } + } + return diffs + lengthDiff; + } + function offset3(token2, separator) { + addFormatToken(token2, 0, 0, function() { + var offset4 = this.utcOffset(), sign2 = "+"; + if (offset4 < 0) { + offset4 = -offset4; + sign2 = "-"; + } + return sign2 + zeroFill(~~(offset4 / 60), 2) + separator + zeroFill(~~offset4 % 60, 2); + }); + } + offset3("Z", ":"); + offset3("ZZ", ""); + addRegexToken("Z", matchShortOffset); + addRegexToken("ZZ", matchShortOffset); + addParseToken(["Z", "ZZ"], function(input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); + }); + var chunkOffset = /([\+\-]|\d\d)/gi; + function offsetFromString(matcher, string) { + var matches = (string || "").match(matcher), chunk, parts, minutes3; + if (matches === null) { + return null; + } + chunk = matches[matches.length - 1] || []; + parts = (chunk + "").match(chunkOffset) || ["-", 0, 0]; + minutes3 = +(parts[1] * 60) + toInt(parts[2]); + return minutes3 === 0 ? 0 : parts[0] === "+" ? minutes3 : -minutes3; + } + function cloneWithOffset(input, model) { + var res, diff2; + if (model._isUTC) { + res = model.clone(); + diff2 = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + res._d.setTime(res._d.valueOf() + diff2); + hooks.updateOffset(res, false); + return res; + } else { + return createLocal(input).local(); + } + } + function getDateOffset(m2) { + return -Math.round(m2._d.getTimezoneOffset()); + } + hooks.updateOffset = function() { + }; + function getSetOffset(input, keepLocalTime, keepMinutes) { + var offset4 = this._offset || 0, localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === "string") { + input = offsetFromString(matchShortOffset, input); + if (input === null) { + return this; + } + } else if (Math.abs(input) < 16 && !keepMinutes) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, "m"); + } + if (offset4 !== input) { + if (!keepLocalTime || this._changeInProgress) { + addSubtract( + this, + createDuration(input - offset4, "m"), + 1, + false + ); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset4 : getDateOffset(this); + } + } + function getSetZone(input, keepLocalTime) { + if (input != null) { + if (typeof input !== "string") { + input = -input; + } + this.utcOffset(input, keepLocalTime); + return this; + } else { + return -this.utcOffset(); + } + } + function setOffsetToUTC(keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } + function setOffsetToLocal(keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + if (keepLocalTime) { + this.subtract(getDateOffset(this), "m"); + } + } + return this; + } + function setOffsetToParsedOffset() { + if (this._tzm != null) { + this.utcOffset(this._tzm, false, true); + } else if (typeof this._i === "string") { + var tZone = offsetFromString(matchOffset, this._i); + if (tZone != null) { + this.utcOffset(tZone); + } else { + this.utcOffset(0, true); + } + } + return this; + } + function hasAlignedHourOffset(input) { + if (!this.isValid()) { + return false; + } + input = input ? createLocal(input).utcOffset() : 0; + return (this.utcOffset() - input) % 60 === 0; + } + function isDaylightSavingTime() { + return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset(); + } + function isDaylightSavingTimeShifted() { + if (!isUndefined2(this._isDSTShifted)) { + return this._isDSTShifted; + } + var c2 = {}, other; + copyConfig(c2, this); + c2 = prepareConfig(c2); + if (c2._a) { + other = c2._isUTC ? createUTC(c2._a) : createLocal(c2._a); + this._isDSTShifted = this.isValid() && compareArrays(c2._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + return this._isDSTShifted; + } + function isLocal() { + return this.isValid() ? !this._isUTC : false; + } + function isUtcOffset() { + return this.isValid() ? this._isUTC : false; + } + function isUtc() { + return this.isValid() ? this._isUTC && this._offset === 0 : false; + } + var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; + function createDuration(input, key) { + var duration = input, match = null, sign2, ret, diffRes; + if (isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (isNumber2(input) || !isNaN(+input)) { + duration = {}; + if (key) { + duration[key] = +input; + } else { + duration.milliseconds = +input; + } + } else if (match = aspNetRegex.exec(input)) { + sign2 = match[1] === "-" ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign2, + h: toInt(match[HOUR]) * sign2, + m: toInt(match[MINUTE]) * sign2, + s: toInt(match[SECOND]) * sign2, + ms: toInt(absRound(match[MILLISECOND] * 1e3)) * sign2 + // the millisecond decimal point is included in the match + }; + } else if (match = isoRegex.exec(input)) { + sign2 = match[1] === "-" ? -1 : 1; + duration = { + y: parseIso(match[2], sign2), + M: parseIso(match[3], sign2), + w: parseIso(match[4], sign2), + d: parseIso(match[5], sign2), + h: parseIso(match[6], sign2), + m: parseIso(match[7], sign2), + s: parseIso(match[8], sign2) + }; + } else if (duration == null) { + duration = {}; + } else if (typeof duration === "object" && ("from" in duration || "to" in duration)) { + diffRes = momentsDifference( + createLocal(duration.from), + createLocal(duration.to) + ); + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + ret = new Duration(duration); + if (isDuration(input) && hasOwnProp(input, "_locale")) { + ret._locale = input._locale; + } + if (isDuration(input) && hasOwnProp(input, "_isValid")) { + ret._isValid = input._isValid; + } + return ret; + } + createDuration.fn = Duration.prototype; + createDuration.invalid = createInvalid$1; + function parseIso(inp, sign2) { + var res = inp && parseFloat(inp.replace(",", ".")); + return (isNaN(res) ? 0 : res) * sign2; + } + function positiveMomentsDifference(base, other) { + var res = {}; + res.months = other.month() - base.month() + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, "M").isAfter(other)) { + --res.months; + } + res.milliseconds = +other - +base.clone().add(res.months, "M"); + return res; + } + function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return { milliseconds: 0, months: 0 }; + } + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + return res; + } + function createAdder(direction, name) { + return function(val, period) { + var dur, tmp; + if (period !== null && !isNaN(+period)) { + deprecateSimple( + name, + "moment()." + name + "(period, number) is deprecated. Please use moment()." + name + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info." + ); + tmp = val; + val = period; + period = tmp; + } + dur = createDuration(val, period); + addSubtract(this, dur, direction); + return this; + }; + } + function addSubtract(mom, duration, isAdding, updateOffset) { + var milliseconds2 = duration._milliseconds, days2 = absRound(duration._days), months2 = absRound(duration._months); + if (!mom.isValid()) { + return; + } + updateOffset = updateOffset == null ? true : updateOffset; + if (months2) { + setMonth(mom, get(mom, "Month") + months2 * isAdding); + } + if (days2) { + set$1(mom, "Date", get(mom, "Date") + days2 * isAdding); + } + if (milliseconds2) { + mom._d.setTime(mom._d.valueOf() + milliseconds2 * isAdding); + } + if (updateOffset) { + hooks.updateOffset(mom, days2 || months2); + } + } + var add = createAdder(1, "add"), subtract = createAdder(-1, "subtract"); + function isString2(input) { + return typeof input === "string" || input instanceof String; + } + function isMomentInput(input) { + return isMoment(input) || isDate(input) || isString2(input) || isNumber2(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === void 0; + } + function isMomentInputObject(input) { + var objectTest = isObject2(input) && !isObjectEmpty(input), propertyTest = false, properties = [ + "years", + "year", + "y", + "months", + "month", + "M", + "days", + "day", + "d", + "dates", + "date", + "D", + "hours", + "hour", + "h", + "minutes", + "minute", + "m", + "seconds", + "second", + "s", + "milliseconds", + "millisecond", + "ms" + ], i2, property, propertyLen = properties.length; + for (i2 = 0; i2 < propertyLen; i2 += 1) { + property = properties[i2]; + propertyTest = propertyTest || hasOwnProp(input, property); + } + return objectTest && propertyTest; + } + function isNumberOrStringArray(input) { + var arrayTest = isArray2(input), dataTypeTest = false; + if (arrayTest) { + dataTypeTest = input.filter(function(item) { + return !isNumber2(item) && isString2(input); + }).length === 0; + } + return arrayTest && dataTypeTest; + } + function isCalendarSpec(input) { + var objectTest = isObject2(input) && !isObjectEmpty(input), propertyTest = false, properties = [ + "sameDay", + "nextDay", + "lastDay", + "nextWeek", + "lastWeek", + "sameElse" + ], i2, property; + for (i2 = 0; i2 < properties.length; i2 += 1) { + property = properties[i2]; + propertyTest = propertyTest || hasOwnProp(input, property); + } + return objectTest && propertyTest; + } + function getCalendarFormat(myMoment, now3) { + var diff2 = myMoment.diff(now3, "days", true); + return diff2 < -6 ? "sameElse" : diff2 < -1 ? "lastWeek" : diff2 < 0 ? "lastDay" : diff2 < 1 ? "sameDay" : diff2 < 2 ? "nextDay" : diff2 < 7 ? "nextWeek" : "sameElse"; + } + function calendar$1(time2, formats) { + if (arguments.length === 1) { + if (!arguments[0]) { + time2 = void 0; + formats = void 0; + } else if (isMomentInput(arguments[0])) { + time2 = arguments[0]; + formats = void 0; + } else if (isCalendarSpec(arguments[0])) { + formats = arguments[0]; + time2 = void 0; + } + } + var now3 = time2 || createLocal(), sod = cloneWithOffset(now3, this).startOf("day"), format2 = hooks.calendarFormat(this, sod) || "sameElse", output = formats && (isFunction2(formats[format2]) ? formats[format2].call(this, now3) : formats[format2]); + return this.format( + output || this.localeData().calendar(format2, this, createLocal(now3)) + ); + } + function clone() { + return new Moment2(this); + } + function isAfter(input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || "millisecond"; + if (units === "millisecond") { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } + } + function isBefore(input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || "millisecond"; + if (units === "millisecond") { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } + } + function isBetween(from3, to2, units, inclusivity) { + var localFrom = isMoment(from3) ? from3 : createLocal(from3), localTo = isMoment(to2) ? to2 : createLocal(to2); + if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { + return false; + } + inclusivity = inclusivity || "()"; + return (inclusivity[0] === "(" ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ")" ? this.isBefore(localTo, units) : !this.isAfter(localTo, units)); + } + function isSame(input, units) { + var localInput = isMoment(input) ? input : createLocal(input), inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units) || "millisecond"; + if (units === "millisecond") { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } + } + function isSameOrAfter(input, units) { + return this.isSame(input, units) || this.isAfter(input, units); + } + function isSameOrBefore(input, units) { + return this.isSame(input, units) || this.isBefore(input, units); + } + function diff(input, units, asFloat) { + var that, zoneDelta, output; + if (!this.isValid()) { + return NaN; + } + that = cloneWithOffset(input, this); + if (!that.isValid()) { + return NaN; + } + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + units = normalizeUnits(units); + switch (units) { + case "year": + output = monthDiff(this, that) / 12; + break; + case "month": + output = monthDiff(this, that); + break; + case "quarter": + output = monthDiff(this, that) / 3; + break; + case "second": + output = (this - that) / 1e3; + break; + case "minute": + output = (this - that) / 6e4; + break; + case "hour": + output = (this - that) / 36e5; + break; + case "day": + output = (this - that - zoneDelta) / 864e5; + break; + case "week": + output = (this - that - zoneDelta) / 6048e5; + break; + default: + output = this - that; + } + return asFloat ? output : absFloor(output); + } + function monthDiff(a2, b2) { + if (a2.date() < b2.date()) { + return -monthDiff(b2, a2); + } + var wholeMonthDiff = (b2.year() - a2.year()) * 12 + (b2.month() - a2.month()), anchor = a2.clone().add(wholeMonthDiff, "months"), anchor2, adjust; + if (b2 - anchor < 0) { + anchor2 = a2.clone().add(wholeMonthDiff - 1, "months"); + adjust = (b2 - anchor) / (anchor - anchor2); + } else { + anchor2 = a2.clone().add(wholeMonthDiff + 1, "months"); + adjust = (b2 - anchor) / (anchor2 - anchor); + } + return -(wholeMonthDiff + adjust) || 0; + } + hooks.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ"; + hooks.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]"; + function toString2() { + return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); + } + function toISOString(keepOffset) { + if (!this.isValid()) { + return null; + } + var utc = keepOffset !== true, m2 = utc ? this.clone().utc() : this; + if (m2.year() < 0 || m2.year() > 9999) { + return formatMoment( + m2, + utc ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ" + ); + } + if (isFunction2(Date.prototype.toISOString)) { + if (utc) { + return this.toDate().toISOString(); + } else { + return new Date(this.valueOf() + this.utcOffset() * 60 * 1e3).toISOString().replace("Z", formatMoment(m2, "Z")); + } + } + return formatMoment( + m2, + utc ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ" + ); + } + function inspect() { + if (!this.isValid()) { + return "moment.invalid(/* " + this._i + " */)"; + } + var func = "moment", zone = "", prefix, year, datetime, suffix; + if (!this.isLocal()) { + func = this.utcOffset() === 0 ? "moment.utc" : "moment.parseZone"; + zone = "Z"; + } + prefix = "[" + func + '("]'; + year = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY"; + datetime = "-MM-DD[T]HH:mm:ss.SSS"; + suffix = zone + '[")]'; + return this.format(prefix + year + datetime + suffix); + } + function format(inputString) { + if (!inputString) { + inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); + } + function from2(time2, withoutSuffix) { + if (this.isValid() && (isMoment(time2) && time2.isValid() || createLocal(time2).isValid())) { + return createDuration({ to: this, from: time2 }).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + function fromNow(withoutSuffix) { + return this.from(createLocal(), withoutSuffix); + } + function to(time2, withoutSuffix) { + if (this.isValid() && (isMoment(time2) && time2.isValid() || createLocal(time2).isValid())) { + return createDuration({ from: this, to: time2 }).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + function toNow(withoutSuffix) { + return this.to(createLocal(), withoutSuffix); + } + function locale(key) { + var newLocaleData; + if (key === void 0) { + return this._locale._abbr; + } else { + newLocaleData = getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + } + var lang = deprecate( + "moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", + function(key) { + if (key === void 0) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ); + function localeData() { + return this._locale; + } + var MS_PER_SECOND = 1e3, MS_PER_MINUTE = 60 * MS_PER_SECOND, MS_PER_HOUR = 60 * MS_PER_MINUTE, MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; + function mod$1(dividend, divisor) { + return (dividend % divisor + divisor) % divisor; + } + function localStartOfDate(y2, m2, d2) { + if (y2 < 100 && y2 >= 0) { + return new Date(y2 + 400, m2, d2) - MS_PER_400_YEARS; + } else { + return new Date(y2, m2, d2).valueOf(); + } + } + function utcStartOfDate(y2, m2, d2) { + if (y2 < 100 && y2 >= 0) { + return Date.UTC(y2 + 400, m2, d2) - MS_PER_400_YEARS; + } else { + return Date.UTC(y2, m2, d2); + } + } + function startOf(units) { + var time2, startOfDate; + units = normalizeUnits(units); + if (units === void 0 || units === "millisecond" || !this.isValid()) { + return this; + } + startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; + switch (units) { + case "year": + time2 = startOfDate(this.year(), 0, 1); + break; + case "quarter": + time2 = startOfDate( + this.year(), + this.month() - this.month() % 3, + 1 + ); + break; + case "month": + time2 = startOfDate(this.year(), this.month(), 1); + break; + case "week": + time2 = startOfDate( + this.year(), + this.month(), + this.date() - this.weekday() + ); + break; + case "isoWeek": + time2 = startOfDate( + this.year(), + this.month(), + this.date() - (this.isoWeekday() - 1) + ); + break; + case "day": + case "date": + time2 = startOfDate(this.year(), this.month(), this.date()); + break; + case "hour": + time2 = this._d.valueOf(); + time2 -= mod$1( + time2 + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), + MS_PER_HOUR + ); + break; + case "minute": + time2 = this._d.valueOf(); + time2 -= mod$1(time2, MS_PER_MINUTE); + break; + case "second": + time2 = this._d.valueOf(); + time2 -= mod$1(time2, MS_PER_SECOND); + break; + } + this._d.setTime(time2); + hooks.updateOffset(this, true); + return this; + } + function endOf(units) { + var time2, startOfDate; + units = normalizeUnits(units); + if (units === void 0 || units === "millisecond" || !this.isValid()) { + return this; + } + startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; + switch (units) { + case "year": + time2 = startOfDate(this.year() + 1, 0, 1) - 1; + break; + case "quarter": + time2 = startOfDate( + this.year(), + this.month() - this.month() % 3 + 3, + 1 + ) - 1; + break; + case "month": + time2 = startOfDate(this.year(), this.month() + 1, 1) - 1; + break; + case "week": + time2 = startOfDate( + this.year(), + this.month(), + this.date() - this.weekday() + 7 + ) - 1; + break; + case "isoWeek": + time2 = startOfDate( + this.year(), + this.month(), + this.date() - (this.isoWeekday() - 1) + 7 + ) - 1; + break; + case "day": + case "date": + time2 = startOfDate(this.year(), this.month(), this.date() + 1) - 1; + break; + case "hour": + time2 = this._d.valueOf(); + time2 += MS_PER_HOUR - mod$1( + time2 + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), + MS_PER_HOUR + ) - 1; + break; + case "minute": + time2 = this._d.valueOf(); + time2 += MS_PER_MINUTE - mod$1(time2, MS_PER_MINUTE) - 1; + break; + case "second": + time2 = this._d.valueOf(); + time2 += MS_PER_SECOND - mod$1(time2, MS_PER_SECOND) - 1; + break; + } + this._d.setTime(time2); + hooks.updateOffset(this, true); + return this; + } + function valueOf() { + return this._d.valueOf() - (this._offset || 0) * 6e4; + } + function unix() { + return Math.floor(this.valueOf() / 1e3); + } + function toDate() { + return new Date(this.valueOf()); + } + function toArray() { + var m2 = this; + return [ + m2.year(), + m2.month(), + m2.date(), + m2.hour(), + m2.minute(), + m2.second(), + m2.millisecond() + ]; + } + function toObject() { + var m2 = this; + return { + years: m2.year(), + months: m2.month(), + date: m2.date(), + hours: m2.hours(), + minutes: m2.minutes(), + seconds: m2.seconds(), + milliseconds: m2.milliseconds() + }; + } + function toJSON() { + return this.isValid() ? this.toISOString() : null; + } + function isValid$2() { + return isValid(this); + } + function parsingFlags() { + return extend({}, getParsingFlags(this)); + } + function invalidAt() { + return getParsingFlags(this).overflow; + } + function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; + } + addFormatToken("N", 0, 0, "eraAbbr"); + addFormatToken("NN", 0, 0, "eraAbbr"); + addFormatToken("NNN", 0, 0, "eraAbbr"); + addFormatToken("NNNN", 0, 0, "eraName"); + addFormatToken("NNNNN", 0, 0, "eraNarrow"); + addFormatToken("y", ["y", 1], "yo", "eraYear"); + addFormatToken("y", ["yy", 2], 0, "eraYear"); + addFormatToken("y", ["yyy", 3], 0, "eraYear"); + addFormatToken("y", ["yyyy", 4], 0, "eraYear"); + addRegexToken("N", matchEraAbbr); + addRegexToken("NN", matchEraAbbr); + addRegexToken("NNN", matchEraAbbr); + addRegexToken("NNNN", matchEraName); + addRegexToken("NNNNN", matchEraNarrow); + addParseToken( + ["N", "NN", "NNN", "NNNN", "NNNNN"], + function(input, array, config, token2) { + var era = config._locale.erasParse(input, token2, config._strict); + if (era) { + getParsingFlags(config).era = era; + } else { + getParsingFlags(config).invalidEra = input; + } + } + ); + addRegexToken("y", matchUnsigned); + addRegexToken("yy", matchUnsigned); + addRegexToken("yyy", matchUnsigned); + addRegexToken("yyyy", matchUnsigned); + addRegexToken("yo", matchEraYearOrdinal); + addParseToken(["y", "yy", "yyy", "yyyy"], YEAR); + addParseToken(["yo"], function(input, array, config, token2) { + var match; + if (config._locale._eraYearOrdinalRegex) { + match = input.match(config._locale._eraYearOrdinalRegex); + } + if (config._locale.eraYearOrdinalParse) { + array[YEAR] = config._locale.eraYearOrdinalParse(input, match); + } else { + array[YEAR] = parseInt(input, 10); + } + }); + function localeEras(m2, format2) { + var i2, l2, date2, eras = this._eras || getLocale("en")._eras; + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { + switch (typeof eras[i2].since) { + case "string": + date2 = hooks(eras[i2].since).startOf("day"); + eras[i2].since = date2.valueOf(); + break; + } + switch (typeof eras[i2].until) { + case "undefined": + eras[i2].until = Infinity; + break; + case "string": + date2 = hooks(eras[i2].until).startOf("day").valueOf(); + eras[i2].until = date2.valueOf(); + break; + } + } + return eras; + } + function localeErasParse(eraName, format2, strict) { + var i2, l2, eras = this.eras(), name, abbr, narrow; + eraName = eraName.toUpperCase(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { + name = eras[i2].name.toUpperCase(); + abbr = eras[i2].abbr.toUpperCase(); + narrow = eras[i2].narrow.toUpperCase(); + if (strict) { + switch (format2) { + case "N": + case "NN": + case "NNN": + if (abbr === eraName) { + return eras[i2]; + } + break; + case "NNNN": + if (name === eraName) { + return eras[i2]; + } + break; + case "NNNNN": + if (narrow === eraName) { + return eras[i2]; + } + break; + } + } else if ([name, abbr, narrow].indexOf(eraName) >= 0) { + return eras[i2]; + } + } + } + function localeErasConvertYear(era, year) { + var dir = era.since <= era.until ? 1 : -1; + if (year === void 0) { + return hooks(era.since).year(); + } else { + return hooks(era.since).year() + (year - era.offset) * dir; + } + } + function getEraName() { + var i2, l2, val, eras = this.localeData().eras(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { + val = this.clone().startOf("day").valueOf(); + if (eras[i2].since <= val && val <= eras[i2].until) { + return eras[i2].name; + } + if (eras[i2].until <= val && val <= eras[i2].since) { + return eras[i2].name; + } + } + return ""; + } + function getEraNarrow() { + var i2, l2, val, eras = this.localeData().eras(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { + val = this.clone().startOf("day").valueOf(); + if (eras[i2].since <= val && val <= eras[i2].until) { + return eras[i2].narrow; + } + if (eras[i2].until <= val && val <= eras[i2].since) { + return eras[i2].narrow; + } + } + return ""; + } + function getEraAbbr() { + var i2, l2, val, eras = this.localeData().eras(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { + val = this.clone().startOf("day").valueOf(); + if (eras[i2].since <= val && val <= eras[i2].until) { + return eras[i2].abbr; + } + if (eras[i2].until <= val && val <= eras[i2].since) { + return eras[i2].abbr; + } + } + return ""; + } + function getEraYear() { + var i2, l2, dir, val, eras = this.localeData().eras(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { + dir = eras[i2].since <= eras[i2].until ? 1 : -1; + val = this.clone().startOf("day").valueOf(); + if (eras[i2].since <= val && val <= eras[i2].until || eras[i2].until <= val && val <= eras[i2].since) { + return (this.year() - hooks(eras[i2].since).year()) * dir + eras[i2].offset; + } + } + return this.year(); + } + function erasNameRegex(isStrict) { + if (!hasOwnProp(this, "_erasNameRegex")) { + computeErasParse.call(this); + } + return isStrict ? this._erasNameRegex : this._erasRegex; + } + function erasAbbrRegex(isStrict) { + if (!hasOwnProp(this, "_erasAbbrRegex")) { + computeErasParse.call(this); + } + return isStrict ? this._erasAbbrRegex : this._erasRegex; + } + function erasNarrowRegex(isStrict) { + if (!hasOwnProp(this, "_erasNarrowRegex")) { + computeErasParse.call(this); + } + return isStrict ? this._erasNarrowRegex : this._erasRegex; + } + function matchEraAbbr(isStrict, locale2) { + return locale2.erasAbbrRegex(isStrict); + } + function matchEraName(isStrict, locale2) { + return locale2.erasNameRegex(isStrict); + } + function matchEraNarrow(isStrict, locale2) { + return locale2.erasNarrowRegex(isStrict); + } + function matchEraYearOrdinal(isStrict, locale2) { + return locale2._eraYearOrdinalRegex || matchUnsigned; + } + function computeErasParse() { + var abbrPieces = [], namePieces = [], narrowPieces = [], mixedPieces = [], i2, l2, eras = this.eras(); + for (i2 = 0, l2 = eras.length; i2 < l2; ++i2) { + namePieces.push(regexEscape(eras[i2].name)); + abbrPieces.push(regexEscape(eras[i2].abbr)); + narrowPieces.push(regexEscape(eras[i2].narrow)); + mixedPieces.push(regexEscape(eras[i2].name)); + mixedPieces.push(regexEscape(eras[i2].abbr)); + mixedPieces.push(regexEscape(eras[i2].narrow)); + } + this._erasRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i"); + this._erasNameRegex = new RegExp("^(" + namePieces.join("|") + ")", "i"); + this._erasAbbrRegex = new RegExp("^(" + abbrPieces.join("|") + ")", "i"); + this._erasNarrowRegex = new RegExp( + "^(" + narrowPieces.join("|") + ")", + "i" + ); + } + addFormatToken(0, ["gg", 2], 0, function() { + return this.weekYear() % 100; + }); + addFormatToken(0, ["GG", 2], 0, function() { + return this.isoWeekYear() % 100; + }); + function addWeekYearFormatToken(token2, getter) { + addFormatToken(0, [token2, token2.length], 0, getter); + } + addWeekYearFormatToken("gggg", "weekYear"); + addWeekYearFormatToken("ggggg", "weekYear"); + addWeekYearFormatToken("GGGG", "isoWeekYear"); + addWeekYearFormatToken("GGGGG", "isoWeekYear"); + addUnitAlias("weekYear", "gg"); + addUnitAlias("isoWeekYear", "GG"); + addUnitPriority("weekYear", 1); + addUnitPriority("isoWeekYear", 1); + addRegexToken("G", matchSigned); + addRegexToken("g", matchSigned); + addRegexToken("GG", match1to2, match2); + addRegexToken("gg", match1to2, match2); + addRegexToken("GGGG", match1to4, match4); + addRegexToken("gggg", match1to4, match4); + addRegexToken("GGGGG", match1to6, match6); + addRegexToken("ggggg", match1to6, match6); + addWeekParseToken( + ["gggg", "ggggg", "GGGG", "GGGGG"], + function(input, week, config, token2) { + week[token2.substr(0, 2)] = toInt(input); + } + ); + addWeekParseToken(["gg", "GG"], function(input, week, config, token2) { + week[token2] = hooks.parseTwoDigitYear(input); + }); + function getSetWeekYear(input) { + return getSetWeekYearHelper.call( + this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy + ); + } + function getSetISOWeekYear(input) { + return getSetWeekYearHelper.call( + this, + input, + this.isoWeek(), + this.isoWeekday(), + 1, + 4 + ); + } + function getISOWeeksInYear() { + return weeksInYear(this.year(), 1, 4); + } + function getISOWeeksInISOWeekYear() { + return weeksInYear(this.isoWeekYear(), 1, 4); + } + function getWeeksInYear() { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + function getWeeksInWeekYear() { + var weekInfo = this.localeData()._week; + return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy); + } + function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } + } + function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), date2 = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + this.year(date2.getUTCFullYear()); + this.month(date2.getUTCMonth()); + this.date(date2.getUTCDate()); + return this; + } + addFormatToken("Q", 0, "Qo", "quarter"); + addUnitAlias("quarter", "Q"); + addUnitPriority("quarter", 7); + addRegexToken("Q", match1); + addParseToken("Q", function(input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); + function getSetQuarter(input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } + addFormatToken("D", ["DD", 2], "Do", "date"); + addUnitAlias("date", "D"); + addUnitPriority("date", 9); + addRegexToken("D", match1to2); + addRegexToken("DD", match1to2, match2); + addRegexToken("Do", function(isStrict, locale2) { + return isStrict ? locale2._dayOfMonthOrdinalParse || locale2._ordinalParse : locale2._dayOfMonthOrdinalParseLenient; + }); + addParseToken(["D", "DD"], DATE); + addParseToken("Do", function(input, array) { + array[DATE] = toInt(input.match(match1to2)[0]); + }); + var getSetDayOfMonth = makeGetSet("Date", true); + addFormatToken("DDD", ["DDDD", 3], "DDDo", "dayOfYear"); + addUnitAlias("dayOfYear", "DDD"); + addUnitPriority("dayOfYear", 4); + addRegexToken("DDD", match1to3); + addRegexToken("DDDD", match3); + addParseToken(["DDD", "DDDD"], function(input, array, config) { + config._dayOfYear = toInt(input); + }); + function getSetDayOfYear(input) { + var dayOfYear = Math.round( + (this.clone().startOf("day") - this.clone().startOf("year")) / 864e5 + ) + 1; + return input == null ? dayOfYear : this.add(input - dayOfYear, "d"); + } + addFormatToken("m", ["mm", 2], 0, "minute"); + addUnitAlias("minute", "m"); + addUnitPriority("minute", 14); + addRegexToken("m", match1to2); + addRegexToken("mm", match1to2, match2); + addParseToken(["m", "mm"], MINUTE); + var getSetMinute = makeGetSet("Minutes", false); + addFormatToken("s", ["ss", 2], 0, "second"); + addUnitAlias("second", "s"); + addUnitPriority("second", 15); + addRegexToken("s", match1to2); + addRegexToken("ss", match1to2, match2); + addParseToken(["s", "ss"], SECOND); + var getSetSecond = makeGetSet("Seconds", false); + addFormatToken("S", 0, 0, function() { + return ~~(this.millisecond() / 100); + }); + addFormatToken(0, ["SS", 2], 0, function() { + return ~~(this.millisecond() / 10); + }); + addFormatToken(0, ["SSS", 3], 0, "millisecond"); + addFormatToken(0, ["SSSS", 4], 0, function() { + return this.millisecond() * 10; + }); + addFormatToken(0, ["SSSSS", 5], 0, function() { + return this.millisecond() * 100; + }); + addFormatToken(0, ["SSSSSS", 6], 0, function() { + return this.millisecond() * 1e3; + }); + addFormatToken(0, ["SSSSSSS", 7], 0, function() { + return this.millisecond() * 1e4; + }); + addFormatToken(0, ["SSSSSSSS", 8], 0, function() { + return this.millisecond() * 1e5; + }); + addFormatToken(0, ["SSSSSSSSS", 9], 0, function() { + return this.millisecond() * 1e6; + }); + addUnitAlias("millisecond", "ms"); + addUnitPriority("millisecond", 16); + addRegexToken("S", match1to3, match1); + addRegexToken("SS", match1to3, match2); + addRegexToken("SSS", match1to3, match3); + var token, getSetMillisecond; + for (token = "SSSS"; token.length <= 9; token += "S") { + addRegexToken(token, matchUnsigned); + } + function parseMs(input, array) { + array[MILLISECOND] = toInt(("0." + input) * 1e3); + } + for (token = "S"; token.length <= 9; token += "S") { + addParseToken(token, parseMs); + } + getSetMillisecond = makeGetSet("Milliseconds", false); + addFormatToken("z", 0, 0, "zoneAbbr"); + addFormatToken("zz", 0, 0, "zoneName"); + function getZoneAbbr() { + return this._isUTC ? "UTC" : ""; + } + function getZoneName() { + return this._isUTC ? "Coordinated Universal Time" : ""; + } + var proto = Moment2.prototype; + proto.add = add; + proto.calendar = calendar$1; + proto.clone = clone; + proto.diff = diff; + proto.endOf = endOf; + proto.format = format; + proto.from = from2; + proto.fromNow = fromNow; + proto.to = to; + proto.toNow = toNow; + proto.get = stringGet; + proto.invalidAt = invalidAt; + proto.isAfter = isAfter; + proto.isBefore = isBefore; + proto.isBetween = isBetween; + proto.isSame = isSame; + proto.isSameOrAfter = isSameOrAfter; + proto.isSameOrBefore = isSameOrBefore; + proto.isValid = isValid$2; + proto.lang = lang; + proto.locale = locale; + proto.localeData = localeData; + proto.max = prototypeMax; + proto.min = prototypeMin; + proto.parsingFlags = parsingFlags; + proto.set = stringSet; + proto.startOf = startOf; + proto.subtract = subtract; + proto.toArray = toArray; + proto.toObject = toObject; + proto.toDate = toDate; + proto.toISOString = toISOString; + proto.inspect = inspect; + if (typeof Symbol !== "undefined" && Symbol.for != null) { + proto[Symbol.for("nodejs.util.inspect.custom")] = function() { + return "Moment<" + this.format() + ">"; + }; + } + proto.toJSON = toJSON; + proto.toString = toString2; + proto.unix = unix; + proto.valueOf = valueOf; + proto.creationData = creationData; + proto.eraName = getEraName; + proto.eraNarrow = getEraNarrow; + proto.eraAbbr = getEraAbbr; + proto.eraYear = getEraYear; + proto.year = getSetYear; + proto.isLeapYear = getIsLeapYear; + proto.weekYear = getSetWeekYear; + proto.isoWeekYear = getSetISOWeekYear; + proto.quarter = proto.quarters = getSetQuarter; + proto.month = getSetMonth; + proto.daysInMonth = getDaysInMonth; + proto.week = proto.weeks = getSetWeek; + proto.isoWeek = proto.isoWeeks = getSetISOWeek; + proto.weeksInYear = getWeeksInYear; + proto.weeksInWeekYear = getWeeksInWeekYear; + proto.isoWeeksInYear = getISOWeeksInYear; + proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; + proto.date = getSetDayOfMonth; + proto.day = proto.days = getSetDayOfWeek; + proto.weekday = getSetLocaleDayOfWeek; + proto.isoWeekday = getSetISODayOfWeek; + proto.dayOfYear = getSetDayOfYear; + proto.hour = proto.hours = getSetHour; + proto.minute = proto.minutes = getSetMinute; + proto.second = proto.seconds = getSetSecond; + proto.millisecond = proto.milliseconds = getSetMillisecond; + proto.utcOffset = getSetOffset; + proto.utc = setOffsetToUTC; + proto.local = setOffsetToLocal; + proto.parseZone = setOffsetToParsedOffset; + proto.hasAlignedHourOffset = hasAlignedHourOffset; + proto.isDST = isDaylightSavingTime; + proto.isLocal = isLocal; + proto.isUtcOffset = isUtcOffset; + proto.isUtc = isUtc; + proto.isUTC = isUtc; + proto.zoneAbbr = getZoneAbbr; + proto.zoneName = getZoneName; + proto.dates = deprecate( + "dates accessor is deprecated. Use date instead.", + getSetDayOfMonth + ); + proto.months = deprecate( + "months accessor is deprecated. Use month instead", + getSetMonth + ); + proto.years = deprecate( + "years accessor is deprecated. Use year instead", + getSetYear + ); + proto.zone = deprecate( + "moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", + getSetZone + ); + proto.isDSTShifted = deprecate( + "isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", + isDaylightSavingTimeShifted + ); + function createUnix(input) { + return createLocal(input * 1e3); + } + function createInZone() { + return createLocal.apply(null, arguments).parseZone(); + } + function preParsePostFormat(string) { + return string; + } + var proto$1 = Locale.prototype; + proto$1.calendar = calendar; + proto$1.longDateFormat = longDateFormat; + proto$1.invalidDate = invalidDate; + proto$1.ordinal = ordinal; + proto$1.preparse = preParsePostFormat; + proto$1.postformat = preParsePostFormat; + proto$1.relativeTime = relativeTime; + proto$1.pastFuture = pastFuture; + proto$1.set = set2; + proto$1.eras = localeEras; + proto$1.erasParse = localeErasParse; + proto$1.erasConvertYear = localeErasConvertYear; + proto$1.erasAbbrRegex = erasAbbrRegex; + proto$1.erasNameRegex = erasNameRegex; + proto$1.erasNarrowRegex = erasNarrowRegex; + proto$1.months = localeMonths; + proto$1.monthsShort = localeMonthsShort; + proto$1.monthsParse = localeMonthsParse; + proto$1.monthsRegex = monthsRegex; + proto$1.monthsShortRegex = monthsShortRegex; + proto$1.week = localeWeek; + proto$1.firstDayOfYear = localeFirstDayOfYear; + proto$1.firstDayOfWeek = localeFirstDayOfWeek; + proto$1.weekdays = localeWeekdays; + proto$1.weekdaysMin = localeWeekdaysMin; + proto$1.weekdaysShort = localeWeekdaysShort; + proto$1.weekdaysParse = localeWeekdaysParse; + proto$1.weekdaysRegex = weekdaysRegex; + proto$1.weekdaysShortRegex = weekdaysShortRegex; + proto$1.weekdaysMinRegex = weekdaysMinRegex; + proto$1.isPM = localeIsPM; + proto$1.meridiem = localeMeridiem; + function get$1(format2, index, field, setter) { + var locale2 = getLocale(), utc = createUTC().set(setter, index); + return locale2[field](utc, format2); + } + function listMonthsImpl(format2, index, field) { + if (isNumber2(format2)) { + index = format2; + format2 = void 0; + } + format2 = format2 || ""; + if (index != null) { + return get$1(format2, index, field, "month"); + } + var i2, out = []; + for (i2 = 0; i2 < 12; i2++) { + out[i2] = get$1(format2, i2, field, "month"); + } + return out; + } + function listWeekdaysImpl(localeSorted, format2, index, field) { + if (typeof localeSorted === "boolean") { + if (isNumber2(format2)) { + index = format2; + format2 = void 0; + } + format2 = format2 || ""; + } else { + format2 = localeSorted; + index = format2; + localeSorted = false; + if (isNumber2(format2)) { + index = format2; + format2 = void 0; + } + format2 = format2 || ""; + } + var locale2 = getLocale(), shift2 = localeSorted ? locale2._week.dow : 0, i2, out = []; + if (index != null) { + return get$1(format2, (index + shift2) % 7, field, "day"); + } + for (i2 = 0; i2 < 7; i2++) { + out[i2] = get$1(format2, (i2 + shift2) % 7, field, "day"); + } + return out; + } + function listMonths(format2, index) { + return listMonthsImpl(format2, index, "months"); + } + function listMonthsShort(format2, index) { + return listMonthsImpl(format2, index, "monthsShort"); + } + function listWeekdays(localeSorted, format2, index) { + return listWeekdaysImpl(localeSorted, format2, index, "weekdays"); + } + function listWeekdaysShort(localeSorted, format2, index) { + return listWeekdaysImpl(localeSorted, format2, index, "weekdaysShort"); + } + function listWeekdaysMin(localeSorted, format2, index) { + return listWeekdaysImpl(localeSorted, format2, index, "weekdaysMin"); + } + getSetGlobalLocale("en", { + eras: [ + { + since: "0001-01-01", + until: Infinity, + offset: 1, + name: "Anno Domini", + narrow: "AD", + abbr: "AD" + }, + { + since: "0000-12-31", + until: -Infinity, + offset: 1, + name: "Before Christ", + narrow: "BC", + abbr: "BC" + } + ], + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal: function(number) { + var b2 = number % 10, output = toInt(number % 100 / 10) === 1 ? "th" : b2 === 1 ? "st" : b2 === 2 ? "nd" : b2 === 3 ? "rd" : "th"; + return number + output; + } + }); + hooks.lang = deprecate( + "moment.lang is deprecated. Use moment.locale instead.", + getSetGlobalLocale + ); + hooks.langData = deprecate( + "moment.langData is deprecated. Use moment.localeData instead.", + getLocale + ); + var mathAbs = Math.abs; + function abs() { + var data = this._data; + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + return this; + } + function addSubtract$1(duration, input, value, direction) { + var other = createDuration(input, value); + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + return duration._bubble(); + } + function add$1(input, value) { + return addSubtract$1(this, input, value, 1); + } + function subtract$1(input, value) { + return addSubtract$1(this, input, value, -1); + } + function absCeil(number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } + } + function bubble2() { + var milliseconds2 = this._milliseconds, days2 = this._days, months2 = this._months, data = this._data, seconds2, minutes3, hours3, years2, monthsFromDays; + if (!(milliseconds2 >= 0 && days2 >= 0 && months2 >= 0 || milliseconds2 <= 0 && days2 <= 0 && months2 <= 0)) { + milliseconds2 += absCeil(monthsToDays(months2) + days2) * 864e5; + days2 = 0; + months2 = 0; + } + data.milliseconds = milliseconds2 % 1e3; + seconds2 = absFloor(milliseconds2 / 1e3); + data.seconds = seconds2 % 60; + minutes3 = absFloor(seconds2 / 60); + data.minutes = minutes3 % 60; + hours3 = absFloor(minutes3 / 60); + data.hours = hours3 % 24; + days2 += absFloor(hours3 / 24); + monthsFromDays = absFloor(daysToMonths(days2)); + months2 += monthsFromDays; + days2 -= absCeil(monthsToDays(monthsFromDays)); + years2 = absFloor(months2 / 12); + months2 %= 12; + data.days = days2; + data.months = months2; + data.years = years2; + return this; + } + function daysToMonths(days2) { + return days2 * 4800 / 146097; + } + function monthsToDays(months2) { + return months2 * 146097 / 4800; + } + function as(units) { + if (!this.isValid()) { + return NaN; + } + var days2, months2, milliseconds2 = this._milliseconds; + units = normalizeUnits(units); + if (units === "month" || units === "quarter" || units === "year") { + days2 = this._days + milliseconds2 / 864e5; + months2 = this._months + daysToMonths(days2); + switch (units) { + case "month": + return months2; + case "quarter": + return months2 / 3; + case "year": + return months2 / 12; + } + } else { + days2 = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case "week": + return days2 / 7 + milliseconds2 / 6048e5; + case "day": + return days2 + milliseconds2 / 864e5; + case "hour": + return days2 * 24 + milliseconds2 / 36e5; + case "minute": + return days2 * 1440 + milliseconds2 / 6e4; + case "second": + return days2 * 86400 + milliseconds2 / 1e3; + case "millisecond": + return Math.floor(days2 * 864e5) + milliseconds2; + default: + throw new Error("Unknown unit " + units); + } + } + } + function valueOf$1() { + if (!this.isValid()) { + return NaN; + } + return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6; + } + function makeAs(alias) { + return function() { + return this.as(alias); + }; + } + var asMilliseconds = makeAs("ms"), asSeconds = makeAs("s"), asMinutes = makeAs("m"), asHours = makeAs("h"), asDays = makeAs("d"), asWeeks = makeAs("w"), asMonths = makeAs("M"), asQuarters = makeAs("Q"), asYears = makeAs("y"); + function clone$1() { + return createDuration(this); + } + function get$2(units) { + units = normalizeUnits(units); + return this.isValid() ? this[units + "s"]() : NaN; + } + function makeGetter(name) { + return function() { + return this.isValid() ? this._data[name] : NaN; + }; + } + var milliseconds = makeGetter("milliseconds"), seconds = makeGetter("seconds"), minutes2 = makeGetter("minutes"), hours2 = makeGetter("hours"), days = makeGetter("days"), months = makeGetter("months"), years = makeGetter("years"); + function weeks() { + return absFloor(this.days() / 7); + } + var round2 = Math.round, thresholds = { + ss: 44, + // a few seconds to seconds + s: 45, + // seconds to minute + m: 45, + // minutes to hour + h: 22, + // hours to day + d: 26, + // days to month/week + w: null, + // weeks to month + M: 11 + // months to year + }; + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale2) { + return locale2.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + function relativeTime$1(posNegDuration, withoutSuffix, thresholds2, locale2) { + var duration = createDuration(posNegDuration).abs(), seconds2 = round2(duration.as("s")), minutes3 = round2(duration.as("m")), hours3 = round2(duration.as("h")), days2 = round2(duration.as("d")), months2 = round2(duration.as("M")), weeks2 = round2(duration.as("w")), years2 = round2(duration.as("y")), a2 = seconds2 <= thresholds2.ss && ["s", seconds2] || seconds2 < thresholds2.s && ["ss", seconds2] || minutes3 <= 1 && ["m"] || minutes3 < thresholds2.m && ["mm", minutes3] || hours3 <= 1 && ["h"] || hours3 < thresholds2.h && ["hh", hours3] || days2 <= 1 && ["d"] || days2 < thresholds2.d && ["dd", days2]; + if (thresholds2.w != null) { + a2 = a2 || weeks2 <= 1 && ["w"] || weeks2 < thresholds2.w && ["ww", weeks2]; + } + a2 = a2 || months2 <= 1 && ["M"] || months2 < thresholds2.M && ["MM", months2] || years2 <= 1 && ["y"] || ["yy", years2]; + a2[2] = withoutSuffix; + a2[3] = +posNegDuration > 0; + a2[4] = locale2; + return substituteTimeAgo.apply(null, a2); + } + function getSetRelativeTimeRounding(roundingFunction) { + if (roundingFunction === void 0) { + return round2; + } + if (typeof roundingFunction === "function") { + round2 = roundingFunction; + return true; + } + return false; + } + function getSetRelativeTimeThreshold(threshold, limit) { + if (thresholds[threshold] === void 0) { + return false; + } + if (limit === void 0) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + if (threshold === "s") { + thresholds.ss = limit - 1; + } + return true; + } + function humanize(argWithSuffix, argThresholds) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + var withSuffix = false, th = thresholds, locale2, output; + if (typeof argWithSuffix === "object") { + argThresholds = argWithSuffix; + argWithSuffix = false; + } + if (typeof argWithSuffix === "boolean") { + withSuffix = argWithSuffix; + } + if (typeof argThresholds === "object") { + th = Object.assign({}, thresholds, argThresholds); + if (argThresholds.s != null && argThresholds.ss == null) { + th.ss = argThresholds.s - 1; + } + } + locale2 = this.localeData(); + output = relativeTime$1(this, !withSuffix, th, locale2); + if (withSuffix) { + output = locale2.pastFuture(+this, output); + } + return locale2.postformat(output); + } + var abs$1 = Math.abs; + function sign(x2) { + return (x2 > 0) - (x2 < 0) || +x2; + } + function toISOString$1() { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + var seconds2 = abs$1(this._milliseconds) / 1e3, days2 = abs$1(this._days), months2 = abs$1(this._months), minutes3, hours3, years2, s2, total = this.asSeconds(), totalSign, ymSign, daysSign, hmsSign; + if (!total) { + return "P0D"; + } + minutes3 = absFloor(seconds2 / 60); + hours3 = absFloor(minutes3 / 60); + seconds2 %= 60; + minutes3 %= 60; + years2 = absFloor(months2 / 12); + months2 %= 12; + s2 = seconds2 ? seconds2.toFixed(3).replace(/\.?0+$/, "") : ""; + totalSign = total < 0 ? "-" : ""; + ymSign = sign(this._months) !== sign(total) ? "-" : ""; + daysSign = sign(this._days) !== sign(total) ? "-" : ""; + hmsSign = sign(this._milliseconds) !== sign(total) ? "-" : ""; + return totalSign + "P" + (years2 ? ymSign + years2 + "Y" : "") + (months2 ? ymSign + months2 + "M" : "") + (days2 ? daysSign + days2 + "D" : "") + (hours3 || minutes3 || seconds2 ? "T" : "") + (hours3 ? hmsSign + hours3 + "H" : "") + (minutes3 ? hmsSign + minutes3 + "M" : "") + (seconds2 ? hmsSign + s2 + "S" : ""); + } + var proto$2 = Duration.prototype; + proto$2.isValid = isValid$1; + proto$2.abs = abs; + proto$2.add = add$1; + proto$2.subtract = subtract$1; + proto$2.as = as; + proto$2.asMilliseconds = asMilliseconds; + proto$2.asSeconds = asSeconds; + proto$2.asMinutes = asMinutes; + proto$2.asHours = asHours; + proto$2.asDays = asDays; + proto$2.asWeeks = asWeeks; + proto$2.asMonths = asMonths; + proto$2.asQuarters = asQuarters; + proto$2.asYears = asYears; + proto$2.valueOf = valueOf$1; + proto$2._bubble = bubble2; + proto$2.clone = clone$1; + proto$2.get = get$2; + proto$2.milliseconds = milliseconds; + proto$2.seconds = seconds; + proto$2.minutes = minutes2; + proto$2.hours = hours2; + proto$2.days = days; + proto$2.weeks = weeks; + proto$2.months = months; + proto$2.years = years; + proto$2.humanize = humanize; + proto$2.toISOString = toISOString$1; + proto$2.toString = toISOString$1; + proto$2.toJSON = toISOString$1; + proto$2.locale = locale; + proto$2.localeData = localeData; + proto$2.toIsoString = deprecate( + "toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", + toISOString$1 + ); + proto$2.lang = lang; + addFormatToken("X", 0, 0, "unix"); + addFormatToken("x", 0, 0, "valueOf"); + addRegexToken("x", matchSigned); + addRegexToken("X", matchTimestamp); + addParseToken("X", function(input, array, config) { + config._d = new Date(parseFloat(input) * 1e3); + }); + addParseToken("x", function(input, array, config) { + config._d = new Date(toInt(input)); + }); + hooks.version = "2.29.4"; + setHookCallback(createLocal); + hooks.fn = proto; + hooks.min = min2; + hooks.max = max2; + hooks.now = now2; + hooks.utc = createUTC; + hooks.unix = createUnix; + hooks.months = listMonths; + hooks.isDate = isDate; + hooks.locale = getSetGlobalLocale; + hooks.invalid = createInvalid; + hooks.duration = createDuration; + hooks.isMoment = isMoment; + hooks.weekdays = listWeekdays; + hooks.parseZone = createInZone; + hooks.localeData = getLocale; + hooks.isDuration = isDuration; + hooks.monthsShort = listMonthsShort; + hooks.weekdaysMin = listWeekdaysMin; + hooks.defineLocale = defineLocale; + hooks.updateLocale = updateLocale; + hooks.locales = listLocales; + hooks.weekdaysShort = listWeekdaysShort; + hooks.normalizeUnits = normalizeUnits; + hooks.relativeTimeRounding = getSetRelativeTimeRounding; + hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; + hooks.calendarFormat = getCalendarFormat; + hooks.prototype = proto; + hooks.HTML5_FMT = { + DATETIME_LOCAL: "YYYY-MM-DDTHH:mm", + // + DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss", + // + DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS", + // + DATE: "YYYY-MM-DD", + // + TIME: "HH:mm", + // + TIME_SECONDS: "HH:mm:ss", + // + TIME_MS: "HH:mm:ss.SSS", + // + WEEK: "GGGG-[W]WW", + // + MONTH: "YYYY-MM" + // + }; + return hooks; + }); + } +}); + +// node_modules/chroma-js/chroma.js +var require_chroma = __commonJS({ + "node_modules/chroma-js/chroma.js"(exports, module2) { + (function(global2, factory) { + typeof exports === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.chroma = factory()); + })(exports, function() { + "use strict"; + var limit$2 = function(x2, min3, max3) { + if (min3 === void 0) + min3 = 0; + if (max3 === void 0) + max3 = 1; + return x2 < min3 ? min3 : x2 > max3 ? max3 : x2; + }; + var limit$1 = limit$2; + var clip_rgb$3 = function(rgb2) { + rgb2._clipped = false; + rgb2._unclipped = rgb2.slice(0); + for (var i3 = 0; i3 <= 3; i3++) { + if (i3 < 3) { + if (rgb2[i3] < 0 || rgb2[i3] > 255) { + rgb2._clipped = true; + } + rgb2[i3] = limit$1(rgb2[i3], 0, 255); + } else if (i3 === 3) { + rgb2[i3] = limit$1(rgb2[i3], 0, 1); + } + } + return rgb2; + }; + var classToType = {}; + for (var i$1 = 0, list$1 = ["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Undefined", "Null"]; i$1 < list$1.length; i$1 += 1) { + var name = list$1[i$1]; + classToType["[object " + name + "]"] = name.toLowerCase(); + } + var type$p = function(obj) { + return classToType[Object.prototype.toString.call(obj)] || "object"; + }; + var type$o = type$p; + var unpack$B = function(args, keyOrder) { + if (keyOrder === void 0) + keyOrder = null; + if (args.length >= 3) { + return Array.prototype.slice.call(args); + } + if (type$o(args[0]) == "object" && keyOrder) { + return keyOrder.split("").filter(function(k2) { + return args[0][k2] !== void 0; + }).map(function(k2) { + return args[0][k2]; + }); + } + return args[0]; + }; + var type$n = type$p; + var last$4 = function(args) { + if (args.length < 2) { + return null; + } + var l2 = args.length - 1; + if (type$n(args[l2]) == "string") { + return args[l2].toLowerCase(); + } + return null; + }; + var PI$2 = Math.PI; + var utils = { + clip_rgb: clip_rgb$3, + limit: limit$2, + type: type$p, + unpack: unpack$B, + last: last$4, + PI: PI$2, + TWOPI: PI$2 * 2, + PITHIRD: PI$2 / 3, + DEG2RAD: PI$2 / 180, + RAD2DEG: 180 / PI$2 + }; + var input$h = { + format: {}, + autodetect: [] + }; + var last$3 = utils.last; + var clip_rgb$2 = utils.clip_rgb; + var type$m = utils.type; + var _input = input$h; + var Color$D = function Color2() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var me = this; + if (type$m(args[0]) === "object" && args[0].constructor && args[0].constructor === this.constructor) { + return args[0]; + } + var mode = last$3(args); + var autodetect = false; + if (!mode) { + autodetect = true; + if (!_input.sorted) { + _input.autodetect = _input.autodetect.sort(function(a2, b2) { + return b2.p - a2.p; + }); + _input.sorted = true; + } + for (var i3 = 0, list2 = _input.autodetect; i3 < list2.length; i3 += 1) { + var chk = list2[i3]; + mode = chk.test.apply(chk, args); + if (mode) { + break; + } + } + } + if (_input.format[mode]) { + var rgb2 = _input.format[mode].apply(null, autodetect ? args : args.slice(0, -1)); + me._rgb = clip_rgb$2(rgb2); + } else { + throw new Error("unknown format: " + args); + } + if (me._rgb.length === 3) { + me._rgb.push(1); + } + }; + Color$D.prototype.toString = function toString2() { + if (type$m(this.hex) == "function") { + return this.hex(); + } + return "[" + this._rgb.join(",") + "]"; + }; + var Color_1 = Color$D; + var chroma$k = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(chroma$k.Color, [null].concat(args)))(); + }; + chroma$k.Color = Color_1; + chroma$k.version = "2.4.2"; + var chroma_1 = chroma$k; + var unpack$A = utils.unpack; + var max$2 = Math.max; + var rgb2cmyk$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var ref = unpack$A(args, "rgb"); + var r2 = ref[0]; + var g2 = ref[1]; + var b2 = ref[2]; + r2 = r2 / 255; + g2 = g2 / 255; + b2 = b2 / 255; + var k2 = 1 - max$2(r2, max$2(g2, b2)); + var f2 = k2 < 1 ? 1 / (1 - k2) : 0; + var c2 = (1 - r2 - k2) * f2; + var m2 = (1 - g2 - k2) * f2; + var y2 = (1 - b2 - k2) * f2; + return [c2, m2, y2, k2]; + }; + var rgb2cmyk_1 = rgb2cmyk$1; + var unpack$z = utils.unpack; + var cmyk2rgb = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$z(args, "cmyk"); + var c2 = args[0]; + var m2 = args[1]; + var y2 = args[2]; + var k2 = args[3]; + var alpha = args.length > 4 ? args[4] : 1; + if (k2 === 1) { + return [0, 0, 0, alpha]; + } + return [ + c2 >= 1 ? 0 : 255 * (1 - c2) * (1 - k2), + // r + m2 >= 1 ? 0 : 255 * (1 - m2) * (1 - k2), + // g + y2 >= 1 ? 0 : 255 * (1 - y2) * (1 - k2), + // b + alpha + ]; + }; + var cmyk2rgb_1 = cmyk2rgb; + var chroma$j = chroma_1; + var Color$C = Color_1; + var input$g = input$h; + var unpack$y = utils.unpack; + var type$l = utils.type; + var rgb2cmyk = rgb2cmyk_1; + Color$C.prototype.cmyk = function() { + return rgb2cmyk(this._rgb); + }; + chroma$j.cmyk = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$C, [null].concat(args, ["cmyk"])))(); + }; + input$g.format.cmyk = cmyk2rgb_1; + input$g.autodetect.push({ + p: 2, + test: function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$y(args, "cmyk"); + if (type$l(args) === "array" && args.length === 4) { + return "cmyk"; + } + } + }); + var unpack$x = utils.unpack; + var last$2 = utils.last; + var rnd = function(a2) { + return Math.round(a2 * 100) / 100; + }; + var hsl2css$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var hsla = unpack$x(args, "hsla"); + var mode = last$2(args) || "lsa"; + hsla[0] = rnd(hsla[0] || 0); + hsla[1] = rnd(hsla[1] * 100) + "%"; + hsla[2] = rnd(hsla[2] * 100) + "%"; + if (mode === "hsla" || hsla.length > 3 && hsla[3] < 1) { + hsla[3] = hsla.length > 3 ? hsla[3] : 1; + mode = "hsla"; + } else { + hsla.length = 3; + } + return mode + "(" + hsla.join(",") + ")"; + }; + var hsl2css_1 = hsl2css$1; + var unpack$w = utils.unpack; + var rgb2hsl$3 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$w(args, "rgba"); + var r2 = args[0]; + var g2 = args[1]; + var b2 = args[2]; + r2 /= 255; + g2 /= 255; + b2 /= 255; + var min3 = Math.min(r2, g2, b2); + var max3 = Math.max(r2, g2, b2); + var l2 = (max3 + min3) / 2; + var s2, h2; + if (max3 === min3) { + s2 = 0; + h2 = Number.NaN; + } else { + s2 = l2 < 0.5 ? (max3 - min3) / (max3 + min3) : (max3 - min3) / (2 - max3 - min3); + } + if (r2 == max3) { + h2 = (g2 - b2) / (max3 - min3); + } else if (g2 == max3) { + h2 = 2 + (b2 - r2) / (max3 - min3); + } else if (b2 == max3) { + h2 = 4 + (r2 - g2) / (max3 - min3); + } + h2 *= 60; + if (h2 < 0) { + h2 += 360; + } + if (args.length > 3 && args[3] !== void 0) { + return [h2, s2, l2, args[3]]; + } + return [h2, s2, l2]; + }; + var rgb2hsl_1 = rgb2hsl$3; + var unpack$v = utils.unpack; + var last$1 = utils.last; + var hsl2css = hsl2css_1; + var rgb2hsl$2 = rgb2hsl_1; + var round$6 = Math.round; + var rgb2css$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var rgba = unpack$v(args, "rgba"); + var mode = last$1(args) || "rgb"; + if (mode.substr(0, 3) == "hsl") { + return hsl2css(rgb2hsl$2(rgba), mode); + } + rgba[0] = round$6(rgba[0]); + rgba[1] = round$6(rgba[1]); + rgba[2] = round$6(rgba[2]); + if (mode === "rgba" || rgba.length > 3 && rgba[3] < 1) { + rgba[3] = rgba.length > 3 ? rgba[3] : 1; + mode = "rgba"; + } + return mode + "(" + rgba.slice(0, mode === "rgb" ? 3 : 4).join(",") + ")"; + }; + var rgb2css_1 = rgb2css$1; + var unpack$u = utils.unpack; + var round$5 = Math.round; + var hsl2rgb$1 = function() { + var assign2; + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$u(args, "hsl"); + var h2 = args[0]; + var s2 = args[1]; + var l2 = args[2]; + var r2, g2, b2; + if (s2 === 0) { + r2 = g2 = b2 = l2 * 255; + } else { + var t3 = [0, 0, 0]; + var c2 = [0, 0, 0]; + var t2 = l2 < 0.5 ? l2 * (1 + s2) : l2 + s2 - l2 * s2; + var t1 = 2 * l2 - t2; + var h_ = h2 / 360; + t3[0] = h_ + 1 / 3; + t3[1] = h_; + t3[2] = h_ - 1 / 3; + for (var i3 = 0; i3 < 3; i3++) { + if (t3[i3] < 0) { + t3[i3] += 1; + } + if (t3[i3] > 1) { + t3[i3] -= 1; + } + if (6 * t3[i3] < 1) { + c2[i3] = t1 + (t2 - t1) * 6 * t3[i3]; + } else if (2 * t3[i3] < 1) { + c2[i3] = t2; + } else if (3 * t3[i3] < 2) { + c2[i3] = t1 + (t2 - t1) * (2 / 3 - t3[i3]) * 6; + } else { + c2[i3] = t1; + } + } + assign2 = [round$5(c2[0] * 255), round$5(c2[1] * 255), round$5(c2[2] * 255)], r2 = assign2[0], g2 = assign2[1], b2 = assign2[2]; + } + if (args.length > 3) { + return [r2, g2, b2, args[3]]; + } + return [r2, g2, b2, 1]; + }; + var hsl2rgb_1 = hsl2rgb$1; + var hsl2rgb = hsl2rgb_1; + var input$f = input$h; + var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/; + var RE_RGBA = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_RGB_PCT = /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_RGBA_PCT = /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + var RE_HSL = /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; + var RE_HSLA = /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; + var round$4 = Math.round; + var css2rgb$1 = function(css) { + css = css.toLowerCase().trim(); + var m2; + if (input$f.format.named) { + try { + return input$f.format.named(css); + } catch (e2) { + } + } + if (m2 = css.match(RE_RGB)) { + var rgb2 = m2.slice(1, 4); + for (var i3 = 0; i3 < 3; i3++) { + rgb2[i3] = +rgb2[i3]; + } + rgb2[3] = 1; + return rgb2; + } + if (m2 = css.match(RE_RGBA)) { + var rgb$1 = m2.slice(1, 5); + for (var i$12 = 0; i$12 < 4; i$12++) { + rgb$1[i$12] = +rgb$1[i$12]; + } + return rgb$1; + } + if (m2 = css.match(RE_RGB_PCT)) { + var rgb$2 = m2.slice(1, 4); + for (var i$2 = 0; i$2 < 3; i$2++) { + rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55); + } + rgb$2[3] = 1; + return rgb$2; + } + if (m2 = css.match(RE_RGBA_PCT)) { + var rgb$3 = m2.slice(1, 5); + for (var i$3 = 0; i$3 < 3; i$3++) { + rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55); + } + rgb$3[3] = +rgb$3[3]; + return rgb$3; + } + if (m2 = css.match(RE_HSL)) { + var hsl2 = m2.slice(1, 4); + hsl2[1] *= 0.01; + hsl2[2] *= 0.01; + var rgb$4 = hsl2rgb(hsl2); + rgb$4[3] = 1; + return rgb$4; + } + if (m2 = css.match(RE_HSLA)) { + var hsl$1 = m2.slice(1, 4); + hsl$1[1] *= 0.01; + hsl$1[2] *= 0.01; + var rgb$5 = hsl2rgb(hsl$1); + rgb$5[3] = +m2[4]; + return rgb$5; + } + }; + css2rgb$1.test = function(s2) { + return RE_RGB.test(s2) || RE_RGBA.test(s2) || RE_RGB_PCT.test(s2) || RE_RGBA_PCT.test(s2) || RE_HSL.test(s2) || RE_HSLA.test(s2); + }; + var css2rgb_1 = css2rgb$1; + var chroma$i = chroma_1; + var Color$B = Color_1; + var input$e = input$h; + var type$k = utils.type; + var rgb2css = rgb2css_1; + var css2rgb = css2rgb_1; + Color$B.prototype.css = function(mode) { + return rgb2css(this._rgb, mode); + }; + chroma$i.css = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$B, [null].concat(args, ["css"])))(); + }; + input$e.format.css = css2rgb; + input$e.autodetect.push({ + p: 5, + test: function(h2) { + var rest = [], len = arguments.length - 1; + while (len-- > 0) + rest[len] = arguments[len + 1]; + if (!rest.length && type$k(h2) === "string" && css2rgb.test(h2)) { + return "css"; + } + } + }); + var Color$A = Color_1; + var chroma$h = chroma_1; + var input$d = input$h; + var unpack$t = utils.unpack; + input$d.format.gl = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var rgb2 = unpack$t(args, "rgba"); + rgb2[0] *= 255; + rgb2[1] *= 255; + rgb2[2] *= 255; + return rgb2; + }; + chroma$h.gl = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$A, [null].concat(args, ["gl"])))(); + }; + Color$A.prototype.gl = function() { + var rgb2 = this._rgb; + return [rgb2[0] / 255, rgb2[1] / 255, rgb2[2] / 255, rgb2[3]]; + }; + var unpack$s = utils.unpack; + var rgb2hcg$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var ref = unpack$s(args, "rgb"); + var r2 = ref[0]; + var g2 = ref[1]; + var b2 = ref[2]; + var min3 = Math.min(r2, g2, b2); + var max3 = Math.max(r2, g2, b2); + var delta = max3 - min3; + var c2 = delta * 100 / 255; + var _g = min3 / (255 - delta) * 100; + var h2; + if (delta === 0) { + h2 = Number.NaN; + } else { + if (r2 === max3) { + h2 = (g2 - b2) / delta; + } + if (g2 === max3) { + h2 = 2 + (b2 - r2) / delta; + } + if (b2 === max3) { + h2 = 4 + (r2 - g2) / delta; + } + h2 *= 60; + if (h2 < 0) { + h2 += 360; + } + } + return [h2, c2, _g]; + }; + var rgb2hcg_1 = rgb2hcg$1; + var unpack$r = utils.unpack; + var floor$3 = Math.floor; + var hcg2rgb = function() { + var assign2, assign$1, assign$2, assign$3, assign$4, assign$5; + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$r(args, "hcg"); + var h2 = args[0]; + var c2 = args[1]; + var _g = args[2]; + var r2, g2, b2; + _g = _g * 255; + var _c = c2 * 255; + if (c2 === 0) { + r2 = g2 = b2 = _g; + } else { + if (h2 === 360) { + h2 = 0; + } + if (h2 > 360) { + h2 -= 360; + } + if (h2 < 0) { + h2 += 360; + } + h2 /= 60; + var i3 = floor$3(h2); + var f2 = h2 - i3; + var p2 = _g * (1 - c2); + var q2 = p2 + _c * (1 - f2); + var t2 = p2 + _c * f2; + var v2 = p2 + _c; + switch (i3) { + case 0: + assign2 = [v2, t2, p2], r2 = assign2[0], g2 = assign2[1], b2 = assign2[2]; + break; + case 1: + assign$1 = [q2, v2, p2], r2 = assign$1[0], g2 = assign$1[1], b2 = assign$1[2]; + break; + case 2: + assign$2 = [p2, v2, t2], r2 = assign$2[0], g2 = assign$2[1], b2 = assign$2[2]; + break; + case 3: + assign$3 = [p2, q2, v2], r2 = assign$3[0], g2 = assign$3[1], b2 = assign$3[2]; + break; + case 4: + assign$4 = [t2, p2, v2], r2 = assign$4[0], g2 = assign$4[1], b2 = assign$4[2]; + break; + case 5: + assign$5 = [v2, p2, q2], r2 = assign$5[0], g2 = assign$5[1], b2 = assign$5[2]; + break; + } + } + return [r2, g2, b2, args.length > 3 ? args[3] : 1]; + }; + var hcg2rgb_1 = hcg2rgb; + var unpack$q = utils.unpack; + var type$j = utils.type; + var chroma$g = chroma_1; + var Color$z = Color_1; + var input$c = input$h; + var rgb2hcg = rgb2hcg_1; + Color$z.prototype.hcg = function() { + return rgb2hcg(this._rgb); + }; + chroma$g.hcg = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$z, [null].concat(args, ["hcg"])))(); + }; + input$c.format.hcg = hcg2rgb_1; + input$c.autodetect.push({ + p: 1, + test: function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$q(args, "hcg"); + if (type$j(args) === "array" && args.length === 3) { + return "hcg"; + } + } + }); + var unpack$p = utils.unpack; + var last5 = utils.last; + var round$3 = Math.round; + var rgb2hex$2 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var ref = unpack$p(args, "rgba"); + var r2 = ref[0]; + var g2 = ref[1]; + var b2 = ref[2]; + var a2 = ref[3]; + var mode = last5(args) || "auto"; + if (a2 === void 0) { + a2 = 1; + } + if (mode === "auto") { + mode = a2 < 1 ? "rgba" : "rgb"; + } + r2 = round$3(r2); + g2 = round$3(g2); + b2 = round$3(b2); + var u2 = r2 << 16 | g2 << 8 | b2; + var str = "000000" + u2.toString(16); + str = str.substr(str.length - 6); + var hxa = "0" + round$3(a2 * 255).toString(16); + hxa = hxa.substr(hxa.length - 2); + switch (mode.toLowerCase()) { + case "rgba": + return "#" + str + hxa; + case "argb": + return "#" + hxa + str; + default: + return "#" + str; + } + }; + var rgb2hex_1 = rgb2hex$2; + var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; + var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/; + var hex2rgb$1 = function(hex) { + if (hex.match(RE_HEX)) { + if (hex.length === 4 || hex.length === 7) { + hex = hex.substr(1); + } + if (hex.length === 3) { + hex = hex.split(""); + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; + } + var u2 = parseInt(hex, 16); + var r2 = u2 >> 16; + var g2 = u2 >> 8 & 255; + var b2 = u2 & 255; + return [r2, g2, b2, 1]; + } + if (hex.match(RE_HEXA)) { + if (hex.length === 5 || hex.length === 9) { + hex = hex.substr(1); + } + if (hex.length === 4) { + hex = hex.split(""); + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3]; + } + var u$1 = parseInt(hex, 16); + var r$1 = u$1 >> 24 & 255; + var g$1 = u$1 >> 16 & 255; + var b$1 = u$1 >> 8 & 255; + var a2 = Math.round((u$1 & 255) / 255 * 100) / 100; + return [r$1, g$1, b$1, a2]; + } + throw new Error("unknown hex color: " + hex); + }; + var hex2rgb_1 = hex2rgb$1; + var chroma$f = chroma_1; + var Color$y = Color_1; + var type$i = utils.type; + var input$b = input$h; + var rgb2hex$1 = rgb2hex_1; + Color$y.prototype.hex = function(mode) { + return rgb2hex$1(this._rgb, mode); + }; + chroma$f.hex = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$y, [null].concat(args, ["hex"])))(); + }; + input$b.format.hex = hex2rgb_1; + input$b.autodetect.push({ + p: 4, + test: function(h2) { + var rest = [], len = arguments.length - 1; + while (len-- > 0) + rest[len] = arguments[len + 1]; + if (!rest.length && type$i(h2) === "string" && [3, 4, 5, 6, 7, 8, 9].indexOf(h2.length) >= 0) { + return "hex"; + } + } + }); + var unpack$o = utils.unpack; + var TWOPI$2 = utils.TWOPI; + var min$2 = Math.min; + var sqrt$4 = Math.sqrt; + var acos = Math.acos; + var rgb2hsi$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var ref = unpack$o(args, "rgb"); + var r2 = ref[0]; + var g2 = ref[1]; + var b2 = ref[2]; + r2 /= 255; + g2 /= 255; + b2 /= 255; + var h2; + var min_ = min$2(r2, g2, b2); + var i3 = (r2 + g2 + b2) / 3; + var s2 = i3 > 0 ? 1 - min_ / i3 : 0; + if (s2 === 0) { + h2 = NaN; + } else { + h2 = (r2 - g2 + (r2 - b2)) / 2; + h2 /= sqrt$4((r2 - g2) * (r2 - g2) + (r2 - b2) * (g2 - b2)); + h2 = acos(h2); + if (b2 > g2) { + h2 = TWOPI$2 - h2; + } + h2 /= TWOPI$2; + } + return [h2 * 360, s2, i3]; + }; + var rgb2hsi_1 = rgb2hsi$1; + var unpack$n = utils.unpack; + var limit = utils.limit; + var TWOPI$1 = utils.TWOPI; + var PITHIRD = utils.PITHIRD; + var cos$4 = Math.cos; + var hsi2rgb = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$n(args, "hsi"); + var h2 = args[0]; + var s2 = args[1]; + var i3 = args[2]; + var r2, g2, b2; + if (isNaN(h2)) { + h2 = 0; + } + if (isNaN(s2)) { + s2 = 0; + } + if (h2 > 360) { + h2 -= 360; + } + if (h2 < 0) { + h2 += 360; + } + h2 /= 360; + if (h2 < 1 / 3) { + b2 = (1 - s2) / 3; + r2 = (1 + s2 * cos$4(TWOPI$1 * h2) / cos$4(PITHIRD - TWOPI$1 * h2)) / 3; + g2 = 1 - (b2 + r2); + } else if (h2 < 2 / 3) { + h2 -= 1 / 3; + r2 = (1 - s2) / 3; + g2 = (1 + s2 * cos$4(TWOPI$1 * h2) / cos$4(PITHIRD - TWOPI$1 * h2)) / 3; + b2 = 1 - (r2 + g2); + } else { + h2 -= 2 / 3; + g2 = (1 - s2) / 3; + b2 = (1 + s2 * cos$4(TWOPI$1 * h2) / cos$4(PITHIRD - TWOPI$1 * h2)) / 3; + r2 = 1 - (g2 + b2); + } + r2 = limit(i3 * r2 * 3); + g2 = limit(i3 * g2 * 3); + b2 = limit(i3 * b2 * 3); + return [r2 * 255, g2 * 255, b2 * 255, args.length > 3 ? args[3] : 1]; + }; + var hsi2rgb_1 = hsi2rgb; + var unpack$m = utils.unpack; + var type$h = utils.type; + var chroma$e = chroma_1; + var Color$x = Color_1; + var input$a = input$h; + var rgb2hsi = rgb2hsi_1; + Color$x.prototype.hsi = function() { + return rgb2hsi(this._rgb); + }; + chroma$e.hsi = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$x, [null].concat(args, ["hsi"])))(); + }; + input$a.format.hsi = hsi2rgb_1; + input$a.autodetect.push({ + p: 2, + test: function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$m(args, "hsi"); + if (type$h(args) === "array" && args.length === 3) { + return "hsi"; + } + } + }); + var unpack$l = utils.unpack; + var type$g = utils.type; + var chroma$d = chroma_1; + var Color$w = Color_1; + var input$9 = input$h; + var rgb2hsl$1 = rgb2hsl_1; + Color$w.prototype.hsl = function() { + return rgb2hsl$1(this._rgb); + }; + chroma$d.hsl = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$w, [null].concat(args, ["hsl"])))(); + }; + input$9.format.hsl = hsl2rgb_1; + input$9.autodetect.push({ + p: 2, + test: function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$l(args, "hsl"); + if (type$g(args) === "array" && args.length === 3) { + return "hsl"; + } + } + }); + var unpack$k = utils.unpack; + var min$1 = Math.min; + var max$1 = Math.max; + var rgb2hsl = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$k(args, "rgb"); + var r2 = args[0]; + var g2 = args[1]; + var b2 = args[2]; + var min_ = min$1(r2, g2, b2); + var max_ = max$1(r2, g2, b2); + var delta = max_ - min_; + var h2, s2, v2; + v2 = max_ / 255; + if (max_ === 0) { + h2 = Number.NaN; + s2 = 0; + } else { + s2 = delta / max_; + if (r2 === max_) { + h2 = (g2 - b2) / delta; + } + if (g2 === max_) { + h2 = 2 + (b2 - r2) / delta; + } + if (b2 === max_) { + h2 = 4 + (r2 - g2) / delta; + } + h2 *= 60; + if (h2 < 0) { + h2 += 360; + } + } + return [h2, s2, v2]; + }; + var rgb2hsv$1 = rgb2hsl; + var unpack$j = utils.unpack; + var floor$2 = Math.floor; + var hsv2rgb = function() { + var assign2, assign$1, assign$2, assign$3, assign$4, assign$5; + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$j(args, "hsv"); + var h2 = args[0]; + var s2 = args[1]; + var v2 = args[2]; + var r2, g2, b2; + v2 *= 255; + if (s2 === 0) { + r2 = g2 = b2 = v2; + } else { + if (h2 === 360) { + h2 = 0; + } + if (h2 > 360) { + h2 -= 360; + } + if (h2 < 0) { + h2 += 360; + } + h2 /= 60; + var i3 = floor$2(h2); + var f2 = h2 - i3; + var p2 = v2 * (1 - s2); + var q2 = v2 * (1 - s2 * f2); + var t2 = v2 * (1 - s2 * (1 - f2)); + switch (i3) { + case 0: + assign2 = [v2, t2, p2], r2 = assign2[0], g2 = assign2[1], b2 = assign2[2]; + break; + case 1: + assign$1 = [q2, v2, p2], r2 = assign$1[0], g2 = assign$1[1], b2 = assign$1[2]; + break; + case 2: + assign$2 = [p2, v2, t2], r2 = assign$2[0], g2 = assign$2[1], b2 = assign$2[2]; + break; + case 3: + assign$3 = [p2, q2, v2], r2 = assign$3[0], g2 = assign$3[1], b2 = assign$3[2]; + break; + case 4: + assign$4 = [t2, p2, v2], r2 = assign$4[0], g2 = assign$4[1], b2 = assign$4[2]; + break; + case 5: + assign$5 = [v2, p2, q2], r2 = assign$5[0], g2 = assign$5[1], b2 = assign$5[2]; + break; + } + } + return [r2, g2, b2, args.length > 3 ? args[3] : 1]; + }; + var hsv2rgb_1 = hsv2rgb; + var unpack$i = utils.unpack; + var type$f = utils.type; + var chroma$c = chroma_1; + var Color$v = Color_1; + var input$8 = input$h; + var rgb2hsv = rgb2hsv$1; + Color$v.prototype.hsv = function() { + return rgb2hsv(this._rgb); + }; + chroma$c.hsv = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$v, [null].concat(args, ["hsv"])))(); + }; + input$8.format.hsv = hsv2rgb_1; + input$8.autodetect.push({ + p: 2, + test: function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$i(args, "hsv"); + if (type$f(args) === "array" && args.length === 3) { + return "hsv"; + } + } + }); + var labConstants = { + // Corresponds roughly to RGB brighter/darker + Kn: 18, + // D65 standard referent + Xn: 0.95047, + Yn: 1, + Zn: 1.08883, + t0: 0.137931034, + // 4 / 29 + t1: 0.206896552, + // 6 / 29 + t2: 0.12841855, + // 3 * t1 * t1 + t3: 8856452e-9 + // t1 * t1 * t1 + }; + var LAB_CONSTANTS$3 = labConstants; + var unpack$h = utils.unpack; + var pow$a = Math.pow; + var rgb2lab$2 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var ref = unpack$h(args, "rgb"); + var r2 = ref[0]; + var g2 = ref[1]; + var b2 = ref[2]; + var ref$1 = rgb2xyz(r2, g2, b2); + var x2 = ref$1[0]; + var y2 = ref$1[1]; + var z2 = ref$1[2]; + var l2 = 116 * y2 - 16; + return [l2 < 0 ? 0 : l2, 500 * (x2 - y2), 200 * (y2 - z2)]; + }; + var rgb_xyz = function(r2) { + if ((r2 /= 255) <= 0.04045) { + return r2 / 12.92; + } + return pow$a((r2 + 0.055) / 1.055, 2.4); + }; + var xyz_lab = function(t2) { + if (t2 > LAB_CONSTANTS$3.t3) { + return pow$a(t2, 1 / 3); + } + return t2 / LAB_CONSTANTS$3.t2 + LAB_CONSTANTS$3.t0; + }; + var rgb2xyz = function(r2, g2, b2) { + r2 = rgb_xyz(r2); + g2 = rgb_xyz(g2); + b2 = rgb_xyz(b2); + var x2 = xyz_lab((0.4124564 * r2 + 0.3575761 * g2 + 0.1804375 * b2) / LAB_CONSTANTS$3.Xn); + var y2 = xyz_lab((0.2126729 * r2 + 0.7151522 * g2 + 0.072175 * b2) / LAB_CONSTANTS$3.Yn); + var z2 = xyz_lab((0.0193339 * r2 + 0.119192 * g2 + 0.9503041 * b2) / LAB_CONSTANTS$3.Zn); + return [x2, y2, z2]; + }; + var rgb2lab_1 = rgb2lab$2; + var LAB_CONSTANTS$2 = labConstants; + var unpack$g = utils.unpack; + var pow$9 = Math.pow; + var lab2rgb$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$g(args, "lab"); + var l2 = args[0]; + var a2 = args[1]; + var b2 = args[2]; + var x2, y2, z2, r2, g2, b_; + y2 = (l2 + 16) / 116; + x2 = isNaN(a2) ? y2 : y2 + a2 / 500; + z2 = isNaN(b2) ? y2 : y2 - b2 / 200; + y2 = LAB_CONSTANTS$2.Yn * lab_xyz(y2); + x2 = LAB_CONSTANTS$2.Xn * lab_xyz(x2); + z2 = LAB_CONSTANTS$2.Zn * lab_xyz(z2); + r2 = xyz_rgb(3.2404542 * x2 - 1.5371385 * y2 - 0.4985314 * z2); + g2 = xyz_rgb(-0.969266 * x2 + 1.8760108 * y2 + 0.041556 * z2); + b_ = xyz_rgb(0.0556434 * x2 - 0.2040259 * y2 + 1.0572252 * z2); + return [r2, g2, b_, args.length > 3 ? args[3] : 1]; + }; + var xyz_rgb = function(r2) { + return 255 * (r2 <= 304e-5 ? 12.92 * r2 : 1.055 * pow$9(r2, 1 / 2.4) - 0.055); + }; + var lab_xyz = function(t2) { + return t2 > LAB_CONSTANTS$2.t1 ? t2 * t2 * t2 : LAB_CONSTANTS$2.t2 * (t2 - LAB_CONSTANTS$2.t0); + }; + var lab2rgb_1 = lab2rgb$1; + var unpack$f = utils.unpack; + var type$e = utils.type; + var chroma$b = chroma_1; + var Color$u = Color_1; + var input$7 = input$h; + var rgb2lab$1 = rgb2lab_1; + Color$u.prototype.lab = function() { + return rgb2lab$1(this._rgb); + }; + chroma$b.lab = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$u, [null].concat(args, ["lab"])))(); + }; + input$7.format.lab = lab2rgb_1; + input$7.autodetect.push({ + p: 2, + test: function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$f(args, "lab"); + if (type$e(args) === "array" && args.length === 3) { + return "lab"; + } + } + }); + var unpack$e = utils.unpack; + var RAD2DEG = utils.RAD2DEG; + var sqrt$3 = Math.sqrt; + var atan2$2 = Math.atan2; + var round$2 = Math.round; + var lab2lch$2 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var ref = unpack$e(args, "lab"); + var l2 = ref[0]; + var a2 = ref[1]; + var b2 = ref[2]; + var c2 = sqrt$3(a2 * a2 + b2 * b2); + var h2 = (atan2$2(b2, a2) * RAD2DEG + 360) % 360; + if (round$2(c2 * 1e4) === 0) { + h2 = Number.NaN; + } + return [l2, c2, h2]; + }; + var lab2lch_1 = lab2lch$2; + var unpack$d = utils.unpack; + var rgb2lab = rgb2lab_1; + var lab2lch$1 = lab2lch_1; + var rgb2lch$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var ref = unpack$d(args, "rgb"); + var r2 = ref[0]; + var g2 = ref[1]; + var b2 = ref[2]; + var ref$1 = rgb2lab(r2, g2, b2); + var l2 = ref$1[0]; + var a2 = ref$1[1]; + var b_ = ref$1[2]; + return lab2lch$1(l2, a2, b_); + }; + var rgb2lch_1 = rgb2lch$1; + var unpack$c = utils.unpack; + var DEG2RAD = utils.DEG2RAD; + var sin$3 = Math.sin; + var cos$3 = Math.cos; + var lch2lab$2 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var ref = unpack$c(args, "lch"); + var l2 = ref[0]; + var c2 = ref[1]; + var h2 = ref[2]; + if (isNaN(h2)) { + h2 = 0; + } + h2 = h2 * DEG2RAD; + return [l2, cos$3(h2) * c2, sin$3(h2) * c2]; + }; + var lch2lab_1 = lch2lab$2; + var unpack$b = utils.unpack; + var lch2lab$1 = lch2lab_1; + var lab2rgb = lab2rgb_1; + var lch2rgb$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$b(args, "lch"); + var l2 = args[0]; + var c2 = args[1]; + var h2 = args[2]; + var ref = lch2lab$1(l2, c2, h2); + var L2 = ref[0]; + var a2 = ref[1]; + var b_ = ref[2]; + var ref$1 = lab2rgb(L2, a2, b_); + var r2 = ref$1[0]; + var g2 = ref$1[1]; + var b2 = ref$1[2]; + return [r2, g2, b2, args.length > 3 ? args[3] : 1]; + }; + var lch2rgb_1 = lch2rgb$1; + var unpack$a = utils.unpack; + var lch2rgb = lch2rgb_1; + var hcl2rgb = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var hcl = unpack$a(args, "hcl").reverse(); + return lch2rgb.apply(void 0, hcl); + }; + var hcl2rgb_1 = hcl2rgb; + var unpack$9 = utils.unpack; + var type$d = utils.type; + var chroma$a = chroma_1; + var Color$t = Color_1; + var input$6 = input$h; + var rgb2lch = rgb2lch_1; + Color$t.prototype.lch = function() { + return rgb2lch(this._rgb); + }; + Color$t.prototype.hcl = function() { + return rgb2lch(this._rgb).reverse(); + }; + chroma$a.lch = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$t, [null].concat(args, ["lch"])))(); + }; + chroma$a.hcl = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$t, [null].concat(args, ["hcl"])))(); + }; + input$6.format.lch = lch2rgb_1; + input$6.format.hcl = hcl2rgb_1; + ["lch", "hcl"].forEach(function(m2) { + return input$6.autodetect.push({ + p: 2, + test: function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$9(args, m2); + if (type$d(args) === "array" && args.length === 3) { + return m2; + } + } + }); + }); + var w3cx11$1 = { + aliceblue: "#f0f8ff", + antiquewhite: "#faebd7", + aqua: "#00ffff", + aquamarine: "#7fffd4", + azure: "#f0ffff", + beige: "#f5f5dc", + bisque: "#ffe4c4", + black: "#000000", + blanchedalmond: "#ffebcd", + blue: "#0000ff", + blueviolet: "#8a2be2", + brown: "#a52a2a", + burlywood: "#deb887", + cadetblue: "#5f9ea0", + chartreuse: "#7fff00", + chocolate: "#d2691e", + coral: "#ff7f50", + cornflower: "#6495ed", + cornflowerblue: "#6495ed", + cornsilk: "#fff8dc", + crimson: "#dc143c", + cyan: "#00ffff", + darkblue: "#00008b", + darkcyan: "#008b8b", + darkgoldenrod: "#b8860b", + darkgray: "#a9a9a9", + darkgreen: "#006400", + darkgrey: "#a9a9a9", + darkkhaki: "#bdb76b", + darkmagenta: "#8b008b", + darkolivegreen: "#556b2f", + darkorange: "#ff8c00", + darkorchid: "#9932cc", + darkred: "#8b0000", + darksalmon: "#e9967a", + darkseagreen: "#8fbc8f", + darkslateblue: "#483d8b", + darkslategray: "#2f4f4f", + darkslategrey: "#2f4f4f", + darkturquoise: "#00ced1", + darkviolet: "#9400d3", + deeppink: "#ff1493", + deepskyblue: "#00bfff", + dimgray: "#696969", + dimgrey: "#696969", + dodgerblue: "#1e90ff", + firebrick: "#b22222", + floralwhite: "#fffaf0", + forestgreen: "#228b22", + fuchsia: "#ff00ff", + gainsboro: "#dcdcdc", + ghostwhite: "#f8f8ff", + gold: "#ffd700", + goldenrod: "#daa520", + gray: "#808080", + green: "#008000", + greenyellow: "#adff2f", + grey: "#808080", + honeydew: "#f0fff0", + hotpink: "#ff69b4", + indianred: "#cd5c5c", + indigo: "#4b0082", + ivory: "#fffff0", + khaki: "#f0e68c", + laserlemon: "#ffff54", + lavender: "#e6e6fa", + lavenderblush: "#fff0f5", + lawngreen: "#7cfc00", + lemonchiffon: "#fffacd", + lightblue: "#add8e6", + lightcoral: "#f08080", + lightcyan: "#e0ffff", + lightgoldenrod: "#fafad2", + lightgoldenrodyellow: "#fafad2", + lightgray: "#d3d3d3", + lightgreen: "#90ee90", + lightgrey: "#d3d3d3", + lightpink: "#ffb6c1", + lightsalmon: "#ffa07a", + lightseagreen: "#20b2aa", + lightskyblue: "#87cefa", + lightslategray: "#778899", + lightslategrey: "#778899", + lightsteelblue: "#b0c4de", + lightyellow: "#ffffe0", + lime: "#00ff00", + limegreen: "#32cd32", + linen: "#faf0e6", + magenta: "#ff00ff", + maroon: "#800000", + maroon2: "#7f0000", + maroon3: "#b03060", + mediumaquamarine: "#66cdaa", + mediumblue: "#0000cd", + mediumorchid: "#ba55d3", + mediumpurple: "#9370db", + mediumseagreen: "#3cb371", + mediumslateblue: "#7b68ee", + mediumspringgreen: "#00fa9a", + mediumturquoise: "#48d1cc", + mediumvioletred: "#c71585", + midnightblue: "#191970", + mintcream: "#f5fffa", + mistyrose: "#ffe4e1", + moccasin: "#ffe4b5", + navajowhite: "#ffdead", + navy: "#000080", + oldlace: "#fdf5e6", + olive: "#808000", + olivedrab: "#6b8e23", + orange: "#ffa500", + orangered: "#ff4500", + orchid: "#da70d6", + palegoldenrod: "#eee8aa", + palegreen: "#98fb98", + paleturquoise: "#afeeee", + palevioletred: "#db7093", + papayawhip: "#ffefd5", + peachpuff: "#ffdab9", + peru: "#cd853f", + pink: "#ffc0cb", + plum: "#dda0dd", + powderblue: "#b0e0e6", + purple: "#800080", + purple2: "#7f007f", + purple3: "#a020f0", + rebeccapurple: "#663399", + red: "#ff0000", + rosybrown: "#bc8f8f", + royalblue: "#4169e1", + saddlebrown: "#8b4513", + salmon: "#fa8072", + sandybrown: "#f4a460", + seagreen: "#2e8b57", + seashell: "#fff5ee", + sienna: "#a0522d", + silver: "#c0c0c0", + skyblue: "#87ceeb", + slateblue: "#6a5acd", + slategray: "#708090", + slategrey: "#708090", + snow: "#fffafa", + springgreen: "#00ff7f", + steelblue: "#4682b4", + tan: "#d2b48c", + teal: "#008080", + thistle: "#d8bfd8", + tomato: "#ff6347", + turquoise: "#40e0d0", + violet: "#ee82ee", + wheat: "#f5deb3", + white: "#ffffff", + whitesmoke: "#f5f5f5", + yellow: "#ffff00", + yellowgreen: "#9acd32" + }; + var w3cx11_1 = w3cx11$1; + var Color$s = Color_1; + var input$5 = input$h; + var type$c = utils.type; + var w3cx11 = w3cx11_1; + var hex2rgb = hex2rgb_1; + var rgb2hex = rgb2hex_1; + Color$s.prototype.name = function() { + var hex = rgb2hex(this._rgb, "rgb"); + for (var i3 = 0, list2 = Object.keys(w3cx11); i3 < list2.length; i3 += 1) { + var n2 = list2[i3]; + if (w3cx11[n2] === hex) { + return n2.toLowerCase(); + } + } + return hex; + }; + input$5.format.named = function(name2) { + name2 = name2.toLowerCase(); + if (w3cx11[name2]) { + return hex2rgb(w3cx11[name2]); + } + throw new Error("unknown color name: " + name2); + }; + input$5.autodetect.push({ + p: 5, + test: function(h2) { + var rest = [], len = arguments.length - 1; + while (len-- > 0) + rest[len] = arguments[len + 1]; + if (!rest.length && type$c(h2) === "string" && w3cx11[h2.toLowerCase()]) { + return "named"; + } + } + }); + var unpack$8 = utils.unpack; + var rgb2num$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var ref = unpack$8(args, "rgb"); + var r2 = ref[0]; + var g2 = ref[1]; + var b2 = ref[2]; + return (r2 << 16) + (g2 << 8) + b2; + }; + var rgb2num_1 = rgb2num$1; + var type$b = utils.type; + var num2rgb = function(num2) { + if (type$b(num2) == "number" && num2 >= 0 && num2 <= 16777215) { + var r2 = num2 >> 16; + var g2 = num2 >> 8 & 255; + var b2 = num2 & 255; + return [r2, g2, b2, 1]; + } + throw new Error("unknown num color: " + num2); + }; + var num2rgb_1 = num2rgb; + var chroma$9 = chroma_1; + var Color$r = Color_1; + var input$4 = input$h; + var type$a = utils.type; + var rgb2num = rgb2num_1; + Color$r.prototype.num = function() { + return rgb2num(this._rgb); + }; + chroma$9.num = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$r, [null].concat(args, ["num"])))(); + }; + input$4.format.num = num2rgb_1; + input$4.autodetect.push({ + p: 5, + test: function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + if (args.length === 1 && type$a(args[0]) === "number" && args[0] >= 0 && args[0] <= 16777215) { + return "num"; + } + } + }); + var chroma$8 = chroma_1; + var Color$q = Color_1; + var input$3 = input$h; + var unpack$7 = utils.unpack; + var type$9 = utils.type; + var round$1 = Math.round; + Color$q.prototype.rgb = function(rnd2) { + if (rnd2 === void 0) + rnd2 = true; + if (rnd2 === false) { + return this._rgb.slice(0, 3); + } + return this._rgb.slice(0, 3).map(round$1); + }; + Color$q.prototype.rgba = function(rnd2) { + if (rnd2 === void 0) + rnd2 = true; + return this._rgb.slice(0, 4).map(function(v2, i3) { + return i3 < 3 ? rnd2 === false ? v2 : round$1(v2) : v2; + }); + }; + chroma$8.rgb = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$q, [null].concat(args, ["rgb"])))(); + }; + input$3.format.rgb = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var rgba = unpack$7(args, "rgba"); + if (rgba[3] === void 0) { + rgba[3] = 1; + } + return rgba; + }; + input$3.autodetect.push({ + p: 3, + test: function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$7(args, "rgba"); + if (type$9(args) === "array" && (args.length === 3 || args.length === 4 && type$9(args[3]) == "number" && args[3] >= 0 && args[3] <= 1)) { + return "rgb"; + } + } + }); + var log$1 = Math.log; + var temperature2rgb$1 = function(kelvin) { + var temp = kelvin / 100; + var r2, g2, b2; + if (temp < 66) { + r2 = 255; + g2 = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g2 = temp - 2) + 104.49216199393888 * log$1(g2); + b2 = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b2 = temp - 10) + 115.67994401066147 * log$1(b2); + } else { + r2 = 351.97690566805693 + 0.114206453784165 * (r2 = temp - 55) - 40.25366309332127 * log$1(r2); + g2 = 325.4494125711974 + 0.07943456536662342 * (g2 = temp - 50) - 28.0852963507957 * log$1(g2); + b2 = 255; + } + return [r2, g2, b2, 1]; + }; + var temperature2rgb_1 = temperature2rgb$1; + var temperature2rgb = temperature2rgb_1; + var unpack$6 = utils.unpack; + var round2 = Math.round; + var rgb2temperature$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var rgb2 = unpack$6(args, "rgb"); + var r2 = rgb2[0], b2 = rgb2[2]; + var minTemp = 1e3; + var maxTemp = 4e4; + var eps = 0.4; + var temp; + while (maxTemp - minTemp > eps) { + temp = (maxTemp + minTemp) * 0.5; + var rgb$1 = temperature2rgb(temp); + if (rgb$1[2] / rgb$1[0] >= b2 / r2) { + maxTemp = temp; + } else { + minTemp = temp; + } + } + return round2(temp); + }; + var rgb2temperature_1 = rgb2temperature$1; + var chroma$7 = chroma_1; + var Color$p = Color_1; + var input$2 = input$h; + var rgb2temperature = rgb2temperature_1; + Color$p.prototype.temp = Color$p.prototype.kelvin = Color$p.prototype.temperature = function() { + return rgb2temperature(this._rgb); + }; + chroma$7.temp = chroma$7.kelvin = chroma$7.temperature = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$p, [null].concat(args, ["temp"])))(); + }; + input$2.format.temp = input$2.format.kelvin = input$2.format.temperature = temperature2rgb_1; + var unpack$5 = utils.unpack; + var cbrt = Math.cbrt; + var pow$8 = Math.pow; + var sign$1 = Math.sign; + var rgb2oklab$2 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var ref = unpack$5(args, "rgb"); + var r2 = ref[0]; + var g2 = ref[1]; + var b2 = ref[2]; + var ref$1 = [rgb2lrgb(r2 / 255), rgb2lrgb(g2 / 255), rgb2lrgb(b2 / 255)]; + var lr = ref$1[0]; + var lg = ref$1[1]; + var lb = ref$1[2]; + var l2 = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb); + var m2 = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb); + var s2 = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb); + return [ + 0.2104542553 * l2 + 0.793617785 * m2 - 0.0040720468 * s2, + 1.9779984951 * l2 - 2.428592205 * m2 + 0.4505937099 * s2, + 0.0259040371 * l2 + 0.7827717662 * m2 - 0.808675766 * s2 + ]; + }; + var rgb2oklab_1 = rgb2oklab$2; + function rgb2lrgb(c2) { + var abs2 = Math.abs(c2); + if (abs2 < 0.04045) { + return c2 / 12.92; + } + return (sign$1(c2) || 1) * pow$8((abs2 + 0.055) / 1.055, 2.4); + } + var unpack$4 = utils.unpack; + var pow$7 = Math.pow; + var sign = Math.sign; + var oklab2rgb$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$4(args, "lab"); + var L2 = args[0]; + var a2 = args[1]; + var b2 = args[2]; + var l2 = pow$7(L2 + 0.3963377774 * a2 + 0.2158037573 * b2, 3); + var m2 = pow$7(L2 - 0.1055613458 * a2 - 0.0638541728 * b2, 3); + var s2 = pow$7(L2 - 0.0894841775 * a2 - 1.291485548 * b2, 3); + return [ + 255 * lrgb2rgb(4.0767416621 * l2 - 3.3077115913 * m2 + 0.2309699292 * s2), + 255 * lrgb2rgb(-1.2684380046 * l2 + 2.6097574011 * m2 - 0.3413193965 * s2), + 255 * lrgb2rgb(-0.0041960863 * l2 - 0.7034186147 * m2 + 1.707614701 * s2), + args.length > 3 ? args[3] : 1 + ]; + }; + var oklab2rgb_1 = oklab2rgb$1; + function lrgb2rgb(c2) { + var abs2 = Math.abs(c2); + if (abs2 > 31308e-7) { + return (sign(c2) || 1) * (1.055 * pow$7(abs2, 1 / 2.4) - 0.055); + } + return c2 * 12.92; + } + var unpack$3 = utils.unpack; + var type$8 = utils.type; + var chroma$6 = chroma_1; + var Color$o = Color_1; + var input$1 = input$h; + var rgb2oklab$1 = rgb2oklab_1; + Color$o.prototype.oklab = function() { + return rgb2oklab$1(this._rgb); + }; + chroma$6.oklab = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$o, [null].concat(args, ["oklab"])))(); + }; + input$1.format.oklab = oklab2rgb_1; + input$1.autodetect.push({ + p: 3, + test: function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$3(args, "oklab"); + if (type$8(args) === "array" && args.length === 3) { + return "oklab"; + } + } + }); + var unpack$2 = utils.unpack; + var rgb2oklab = rgb2oklab_1; + var lab2lch = lab2lch_1; + var rgb2oklch$1 = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + var ref = unpack$2(args, "rgb"); + var r2 = ref[0]; + var g2 = ref[1]; + var b2 = ref[2]; + var ref$1 = rgb2oklab(r2, g2, b2); + var l2 = ref$1[0]; + var a2 = ref$1[1]; + var b_ = ref$1[2]; + return lab2lch(l2, a2, b_); + }; + var rgb2oklch_1 = rgb2oklch$1; + var unpack$1 = utils.unpack; + var lch2lab = lch2lab_1; + var oklab2rgb = oklab2rgb_1; + var oklch2rgb = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack$1(args, "lch"); + var l2 = args[0]; + var c2 = args[1]; + var h2 = args[2]; + var ref = lch2lab(l2, c2, h2); + var L2 = ref[0]; + var a2 = ref[1]; + var b_ = ref[2]; + var ref$1 = oklab2rgb(L2, a2, b_); + var r2 = ref$1[0]; + var g2 = ref$1[1]; + var b2 = ref$1[2]; + return [r2, g2, b2, args.length > 3 ? args[3] : 1]; + }; + var oklch2rgb_1 = oklch2rgb; + var unpack = utils.unpack; + var type$7 = utils.type; + var chroma$5 = chroma_1; + var Color$n = Color_1; + var input = input$h; + var rgb2oklch = rgb2oklch_1; + Color$n.prototype.oklch = function() { + return rgb2oklch(this._rgb); + }; + chroma$5.oklch = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + return new (Function.prototype.bind.apply(Color$n, [null].concat(args, ["oklch"])))(); + }; + input.format.oklch = oklch2rgb_1; + input.autodetect.push({ + p: 3, + test: function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + args = unpack(args, "oklch"); + if (type$7(args) === "array" && args.length === 3) { + return "oklch"; + } + } + }); + var Color$m = Color_1; + var type$6 = utils.type; + Color$m.prototype.alpha = function(a2, mutate) { + if (mutate === void 0) + mutate = false; + if (a2 !== void 0 && type$6(a2) === "number") { + if (mutate) { + this._rgb[3] = a2; + return this; + } + return new Color$m([this._rgb[0], this._rgb[1], this._rgb[2], a2], "rgb"); + } + return this._rgb[3]; + }; + var Color$l = Color_1; + Color$l.prototype.clipped = function() { + return this._rgb._clipped || false; + }; + var Color$k = Color_1; + var LAB_CONSTANTS$1 = labConstants; + Color$k.prototype.darken = function(amount) { + if (amount === void 0) + amount = 1; + var me = this; + var lab2 = me.lab(); + lab2[0] -= LAB_CONSTANTS$1.Kn * amount; + return new Color$k(lab2, "lab").alpha(me.alpha(), true); + }; + Color$k.prototype.brighten = function(amount) { + if (amount === void 0) + amount = 1; + return this.darken(-amount); + }; + Color$k.prototype.darker = Color$k.prototype.darken; + Color$k.prototype.brighter = Color$k.prototype.brighten; + var Color$j = Color_1; + Color$j.prototype.get = function(mc) { + var ref = mc.split("."); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i3 = mode.indexOf(channel) - (mode.substr(0, 2) === "ok" ? 2 : 0); + if (i3 > -1) { + return src[i3]; + } + throw new Error("unknown channel " + channel + " in mode " + mode); + } else { + return src; + } + }; + var Color$i = Color_1; + var type$5 = utils.type; + var pow$6 = Math.pow; + var EPS = 1e-7; + var MAX_ITER = 20; + Color$i.prototype.luminance = function(lum) { + if (lum !== void 0 && type$5(lum) === "number") { + if (lum === 0) { + return new Color$i([0, 0, 0, this._rgb[3]], "rgb"); + } + if (lum === 1) { + return new Color$i([255, 255, 255, this._rgb[3]], "rgb"); + } + var cur_lum = this.luminance(); + var mode = "rgb"; + var max_iter = MAX_ITER; + var test = function(low, high) { + var mid = low.interpolate(high, 0.5, mode); + var lm = mid.luminance(); + if (Math.abs(lum - lm) < EPS || !max_iter--) { + return mid; + } + return lm > lum ? test(low, mid) : test(mid, high); + }; + var rgb2 = (cur_lum > lum ? test(new Color$i([0, 0, 0]), this) : test(this, new Color$i([255, 255, 255]))).rgb(); + return new Color$i(rgb2.concat([this._rgb[3]])); + } + return rgb2luminance.apply(void 0, this._rgb.slice(0, 3)); + }; + var rgb2luminance = function(r2, g2, b2) { + r2 = luminance_x(r2); + g2 = luminance_x(g2); + b2 = luminance_x(b2); + return 0.2126 * r2 + 0.7152 * g2 + 0.0722 * b2; + }; + var luminance_x = function(x2) { + x2 /= 255; + return x2 <= 0.03928 ? x2 / 12.92 : pow$6((x2 + 0.055) / 1.055, 2.4); + }; + var interpolator$1 = {}; + var Color$h = Color_1; + var type$4 = utils.type; + var interpolator = interpolator$1; + var mix$1 = function(col1, col2, f2) { + if (f2 === void 0) + f2 = 0.5; + var rest = [], len = arguments.length - 3; + while (len-- > 0) + rest[len] = arguments[len + 3]; + var mode = rest[0] || "lrgb"; + if (!interpolator[mode] && !rest.length) { + mode = Object.keys(interpolator)[0]; + } + if (!interpolator[mode]) { + throw new Error("interpolation mode " + mode + " is not defined"); + } + if (type$4(col1) !== "object") { + col1 = new Color$h(col1); + } + if (type$4(col2) !== "object") { + col2 = new Color$h(col2); + } + return interpolator[mode](col1, col2, f2).alpha(col1.alpha() + f2 * (col2.alpha() - col1.alpha())); + }; + var Color$g = Color_1; + var mix = mix$1; + Color$g.prototype.mix = Color$g.prototype.interpolate = function(col2, f2) { + if (f2 === void 0) + f2 = 0.5; + var rest = [], len = arguments.length - 2; + while (len-- > 0) + rest[len] = arguments[len + 2]; + return mix.apply(void 0, [this, col2, f2].concat(rest)); + }; + var Color$f = Color_1; + Color$f.prototype.premultiply = function(mutate) { + if (mutate === void 0) + mutate = false; + var rgb2 = this._rgb; + var a2 = rgb2[3]; + if (mutate) { + this._rgb = [rgb2[0] * a2, rgb2[1] * a2, rgb2[2] * a2, a2]; + return this; + } else { + return new Color$f([rgb2[0] * a2, rgb2[1] * a2, rgb2[2] * a2, a2], "rgb"); + } + }; + var Color$e = Color_1; + var LAB_CONSTANTS = labConstants; + Color$e.prototype.saturate = function(amount) { + if (amount === void 0) + amount = 1; + var me = this; + var lch2 = me.lch(); + lch2[1] += LAB_CONSTANTS.Kn * amount; + if (lch2[1] < 0) { + lch2[1] = 0; + } + return new Color$e(lch2, "lch").alpha(me.alpha(), true); + }; + Color$e.prototype.desaturate = function(amount) { + if (amount === void 0) + amount = 1; + return this.saturate(-amount); + }; + var Color$d = Color_1; + var type$3 = utils.type; + Color$d.prototype.set = function(mc, value, mutate) { + if (mutate === void 0) + mutate = false; + var ref = mc.split("."); + var mode = ref[0]; + var channel = ref[1]; + var src = this[mode](); + if (channel) { + var i3 = mode.indexOf(channel) - (mode.substr(0, 2) === "ok" ? 2 : 0); + if (i3 > -1) { + if (type$3(value) == "string") { + switch (value.charAt(0)) { + case "+": + src[i3] += +value; + break; + case "-": + src[i3] += +value; + break; + case "*": + src[i3] *= +value.substr(1); + break; + case "/": + src[i3] /= +value.substr(1); + break; + default: + src[i3] = +value; + } + } else if (type$3(value) === "number") { + src[i3] = value; + } else { + throw new Error("unsupported value for Color.set"); + } + var out = new Color$d(src, mode); + if (mutate) { + this._rgb = out._rgb; + return this; + } + return out; + } + throw new Error("unknown channel " + channel + " in mode " + mode); + } else { + return src; + } + }; + var Color$c = Color_1; + var rgb = function(col1, col2, f2) { + var xyz0 = col1._rgb; + var xyz1 = col2._rgb; + return new Color$c( + xyz0[0] + f2 * (xyz1[0] - xyz0[0]), + xyz0[1] + f2 * (xyz1[1] - xyz0[1]), + xyz0[2] + f2 * (xyz1[2] - xyz0[2]), + "rgb" + ); + }; + interpolator$1.rgb = rgb; + var Color$b = Color_1; + var sqrt$2 = Math.sqrt; + var pow$5 = Math.pow; + var lrgb = function(col1, col2, f2) { + var ref = col1._rgb; + var x1 = ref[0]; + var y1 = ref[1]; + var z1 = ref[2]; + var ref$1 = col2._rgb; + var x2 = ref$1[0]; + var y2 = ref$1[1]; + var z2 = ref$1[2]; + return new Color$b( + sqrt$2(pow$5(x1, 2) * (1 - f2) + pow$5(x2, 2) * f2), + sqrt$2(pow$5(y1, 2) * (1 - f2) + pow$5(y2, 2) * f2), + sqrt$2(pow$5(z1, 2) * (1 - f2) + pow$5(z2, 2) * f2), + "rgb" + ); + }; + interpolator$1.lrgb = lrgb; + var Color$a = Color_1; + var lab = function(col1, col2, f2) { + var xyz0 = col1.lab(); + var xyz1 = col2.lab(); + return new Color$a( + xyz0[0] + f2 * (xyz1[0] - xyz0[0]), + xyz0[1] + f2 * (xyz1[1] - xyz0[1]), + xyz0[2] + f2 * (xyz1[2] - xyz0[2]), + "lab" + ); + }; + interpolator$1.lab = lab; + var Color$9 = Color_1; + var _hsx = function(col1, col2, f2, m2) { + var assign2, assign$1; + var xyz0, xyz1; + if (m2 === "hsl") { + xyz0 = col1.hsl(); + xyz1 = col2.hsl(); + } else if (m2 === "hsv") { + xyz0 = col1.hsv(); + xyz1 = col2.hsv(); + } else if (m2 === "hcg") { + xyz0 = col1.hcg(); + xyz1 = col2.hcg(); + } else if (m2 === "hsi") { + xyz0 = col1.hsi(); + xyz1 = col2.hsi(); + } else if (m2 === "lch" || m2 === "hcl") { + m2 = "hcl"; + xyz0 = col1.hcl(); + xyz1 = col2.hcl(); + } else if (m2 === "oklch") { + xyz0 = col1.oklch().reverse(); + xyz1 = col2.oklch().reverse(); + } + var hue0, hue1, sat0, sat1, lbv0, lbv1; + if (m2.substr(0, 1) === "h" || m2 === "oklch") { + assign2 = xyz0, hue0 = assign2[0], sat0 = assign2[1], lbv0 = assign2[2]; + assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]; + } + var sat, hue, lbv, dh; + if (!isNaN(hue0) && !isNaN(hue1)) { + if (hue1 > hue0 && hue1 - hue0 > 180) { + dh = hue1 - (hue0 + 360); + } else if (hue1 < hue0 && hue0 - hue1 > 180) { + dh = hue1 + 360 - hue0; + } else { + dh = hue1 - hue0; + } + hue = hue0 + f2 * dh; + } else if (!isNaN(hue0)) { + hue = hue0; + if ((lbv1 == 1 || lbv1 == 0) && m2 != "hsv") { + sat = sat0; + } + } else if (!isNaN(hue1)) { + hue = hue1; + if ((lbv0 == 1 || lbv0 == 0) && m2 != "hsv") { + sat = sat1; + } + } else { + hue = Number.NaN; + } + if (sat === void 0) { + sat = sat0 + f2 * (sat1 - sat0); + } + lbv = lbv0 + f2 * (lbv1 - lbv0); + return m2 === "oklch" ? new Color$9([lbv, sat, hue], m2) : new Color$9([hue, sat, lbv], m2); + }; + var interpolate_hsx$5 = _hsx; + var lch = function(col1, col2, f2) { + return interpolate_hsx$5(col1, col2, f2, "lch"); + }; + interpolator$1.lch = lch; + interpolator$1.hcl = lch; + var Color$8 = Color_1; + var num = function(col1, col2, f2) { + var c1 = col1.num(); + var c2 = col2.num(); + return new Color$8(c1 + f2 * (c2 - c1), "num"); + }; + interpolator$1.num = num; + var interpolate_hsx$4 = _hsx; + var hcg = function(col1, col2, f2) { + return interpolate_hsx$4(col1, col2, f2, "hcg"); + }; + interpolator$1.hcg = hcg; + var interpolate_hsx$3 = _hsx; + var hsi = function(col1, col2, f2) { + return interpolate_hsx$3(col1, col2, f2, "hsi"); + }; + interpolator$1.hsi = hsi; + var interpolate_hsx$2 = _hsx; + var hsl = function(col1, col2, f2) { + return interpolate_hsx$2(col1, col2, f2, "hsl"); + }; + interpolator$1.hsl = hsl; + var interpolate_hsx$1 = _hsx; + var hsv = function(col1, col2, f2) { + return interpolate_hsx$1(col1, col2, f2, "hsv"); + }; + interpolator$1.hsv = hsv; + var Color$7 = Color_1; + var oklab = function(col1, col2, f2) { + var xyz0 = col1.oklab(); + var xyz1 = col2.oklab(); + return new Color$7( + xyz0[0] + f2 * (xyz1[0] - xyz0[0]), + xyz0[1] + f2 * (xyz1[1] - xyz0[1]), + xyz0[2] + f2 * (xyz1[2] - xyz0[2]), + "oklab" + ); + }; + interpolator$1.oklab = oklab; + var interpolate_hsx = _hsx; + var oklch = function(col1, col2, f2) { + return interpolate_hsx(col1, col2, f2, "oklch"); + }; + interpolator$1.oklch = oklch; + var Color$6 = Color_1; + var clip_rgb$1 = utils.clip_rgb; + var pow$4 = Math.pow; + var sqrt$1 = Math.sqrt; + var PI$1 = Math.PI; + var cos$2 = Math.cos; + var sin$2 = Math.sin; + var atan2$1 = Math.atan2; + var average = function(colors, mode, weights) { + if (mode === void 0) + mode = "lrgb"; + if (weights === void 0) + weights = null; + var l2 = colors.length; + if (!weights) { + weights = Array.from(new Array(l2)).map(function() { + return 1; + }); + } + var k2 = l2 / weights.reduce(function(a2, b2) { + return a2 + b2; + }); + weights.forEach(function(w2, i4) { + weights[i4] *= k2; + }); + colors = colors.map(function(c2) { + return new Color$6(c2); + }); + if (mode === "lrgb") { + return _average_lrgb(colors, weights); + } + var first = colors.shift(); + var xyz = first.get(mode); + var cnt = []; + var dx = 0; + var dy = 0; + for (var i3 = 0; i3 < xyz.length; i3++) { + xyz[i3] = (xyz[i3] || 0) * weights[0]; + cnt.push(isNaN(xyz[i3]) ? 0 : weights[0]); + if (mode.charAt(i3) === "h" && !isNaN(xyz[i3])) { + var A2 = xyz[i3] / 180 * PI$1; + dx += cos$2(A2) * weights[0]; + dy += sin$2(A2) * weights[0]; + } + } + var alpha = first.alpha() * weights[0]; + colors.forEach(function(c2, ci) { + var xyz2 = c2.get(mode); + alpha += c2.alpha() * weights[ci + 1]; + for (var i4 = 0; i4 < xyz.length; i4++) { + if (!isNaN(xyz2[i4])) { + cnt[i4] += weights[ci + 1]; + if (mode.charAt(i4) === "h") { + var A3 = xyz2[i4] / 180 * PI$1; + dx += cos$2(A3) * weights[ci + 1]; + dy += sin$2(A3) * weights[ci + 1]; + } else { + xyz[i4] += xyz2[i4] * weights[ci + 1]; + } + } + } + }); + for (var i$12 = 0; i$12 < xyz.length; i$12++) { + if (mode.charAt(i$12) === "h") { + var A$1 = atan2$1(dy / cnt[i$12], dx / cnt[i$12]) / PI$1 * 180; + while (A$1 < 0) { + A$1 += 360; + } + while (A$1 >= 360) { + A$1 -= 360; + } + xyz[i$12] = A$1; + } else { + xyz[i$12] = xyz[i$12] / cnt[i$12]; + } + } + alpha /= l2; + return new Color$6(xyz, mode).alpha(alpha > 0.99999 ? 1 : alpha, true); + }; + var _average_lrgb = function(colors, weights) { + var l2 = colors.length; + var xyz = [0, 0, 0, 0]; + for (var i3 = 0; i3 < colors.length; i3++) { + var col = colors[i3]; + var f2 = weights[i3] / l2; + var rgb2 = col._rgb; + xyz[0] += pow$4(rgb2[0], 2) * f2; + xyz[1] += pow$4(rgb2[1], 2) * f2; + xyz[2] += pow$4(rgb2[2], 2) * f2; + xyz[3] += rgb2[3] * f2; + } + xyz[0] = sqrt$1(xyz[0]); + xyz[1] = sqrt$1(xyz[1]); + xyz[2] = sqrt$1(xyz[2]); + if (xyz[3] > 0.9999999) { + xyz[3] = 1; + } + return new Color$6(clip_rgb$1(xyz)); + }; + var chroma$4 = chroma_1; + var type$2 = utils.type; + var pow$3 = Math.pow; + var scale$2 = function(colors) { + var _mode = "rgb"; + var _nacol = chroma$4("#ccc"); + var _spread = 0; + var _domain = [0, 1]; + var _pos = []; + var _padding = [0, 0]; + var _classes = false; + var _colors = []; + var _out = false; + var _min = 0; + var _max = 1; + var _correctLightness = false; + var _colorCache = {}; + var _useCache = true; + var _gamma = 1; + var setColors = function(colors2) { + colors2 = colors2 || ["#fff", "#000"]; + if (colors2 && type$2(colors2) === "string" && chroma$4.brewer && chroma$4.brewer[colors2.toLowerCase()]) { + colors2 = chroma$4.brewer[colors2.toLowerCase()]; + } + if (type$2(colors2) === "array") { + if (colors2.length === 1) { + colors2 = [colors2[0], colors2[0]]; + } + colors2 = colors2.slice(0); + for (var c2 = 0; c2 < colors2.length; c2++) { + colors2[c2] = chroma$4(colors2[c2]); + } + _pos.length = 0; + for (var c$1 = 0; c$1 < colors2.length; c$1++) { + _pos.push(c$1 / (colors2.length - 1)); + } + } + resetCache(); + return _colors = colors2; + }; + var getClass = function(value) { + if (_classes != null) { + var n2 = _classes.length - 1; + var i3 = 0; + while (i3 < n2 && value >= _classes[i3]) { + i3++; + } + return i3 - 1; + } + return 0; + }; + var tMapLightness = function(t2) { + return t2; + }; + var tMapDomain = function(t2) { + return t2; + }; + var getColor = function(val, bypassMap) { + var col, t2; + if (bypassMap == null) { + bypassMap = false; + } + if (isNaN(val) || val === null) { + return _nacol; + } + if (!bypassMap) { + if (_classes && _classes.length > 2) { + var c2 = getClass(val); + t2 = c2 / (_classes.length - 2); + } else if (_max !== _min) { + t2 = (val - _min) / (_max - _min); + } else { + t2 = 1; + } + } else { + t2 = val; + } + t2 = tMapDomain(t2); + if (!bypassMap) { + t2 = tMapLightness(t2); + } + if (_gamma !== 1) { + t2 = pow$3(t2, _gamma); + } + t2 = _padding[0] + t2 * (1 - _padding[0] - _padding[1]); + t2 = Math.min(1, Math.max(0, t2)); + var k2 = Math.floor(t2 * 1e4); + if (_useCache && _colorCache[k2]) { + col = _colorCache[k2]; + } else { + if (type$2(_colors) === "array") { + for (var i3 = 0; i3 < _pos.length; i3++) { + var p2 = _pos[i3]; + if (t2 <= p2) { + col = _colors[i3]; + break; + } + if (t2 >= p2 && i3 === _pos.length - 1) { + col = _colors[i3]; + break; + } + if (t2 > p2 && t2 < _pos[i3 + 1]) { + t2 = (t2 - p2) / (_pos[i3 + 1] - p2); + col = chroma$4.interpolate(_colors[i3], _colors[i3 + 1], t2, _mode); + break; + } + } + } else if (type$2(_colors) === "function") { + col = _colors(t2); + } + if (_useCache) { + _colorCache[k2] = col; + } + } + return col; + }; + var resetCache = function() { + return _colorCache = {}; + }; + setColors(colors); + var f2 = function(v2) { + var c2 = chroma$4(getColor(v2)); + if (_out && c2[_out]) { + return c2[_out](); + } else { + return c2; + } + }; + f2.classes = function(classes) { + if (classes != null) { + if (type$2(classes) === "array") { + _classes = classes; + _domain = [classes[0], classes[classes.length - 1]]; + } else { + var d2 = chroma$4.analyze(_domain); + if (classes === 0) { + _classes = [d2.min, d2.max]; + } else { + _classes = chroma$4.limits(d2, "e", classes); + } + } + return f2; + } + return _classes; + }; + f2.domain = function(domain) { + if (!arguments.length) { + return _domain; + } + _min = domain[0]; + _max = domain[domain.length - 1]; + _pos = []; + var k2 = _colors.length; + if (domain.length === k2 && _min !== _max) { + for (var i3 = 0, list2 = Array.from(domain); i3 < list2.length; i3 += 1) { + var d2 = list2[i3]; + _pos.push((d2 - _min) / (_max - _min)); + } + } else { + for (var c2 = 0; c2 < k2; c2++) { + _pos.push(c2 / (k2 - 1)); + } + if (domain.length > 2) { + var tOut = domain.map(function(d3, i4) { + return i4 / (domain.length - 1); + }); + var tBreaks = domain.map(function(d3) { + return (d3 - _min) / (_max - _min); + }); + if (!tBreaks.every(function(val, i4) { + return tOut[i4] === val; + })) { + tMapDomain = function(t2) { + if (t2 <= 0 || t2 >= 1) { + return t2; + } + var i4 = 0; + while (t2 >= tBreaks[i4 + 1]) { + i4++; + } + var f3 = (t2 - tBreaks[i4]) / (tBreaks[i4 + 1] - tBreaks[i4]); + var out = tOut[i4] + f3 * (tOut[i4 + 1] - tOut[i4]); + return out; + }; + } + } + } + _domain = [_min, _max]; + return f2; + }; + f2.mode = function(_m) { + if (!arguments.length) { + return _mode; + } + _mode = _m; + resetCache(); + return f2; + }; + f2.range = function(colors2, _pos2) { + setColors(colors2); + return f2; + }; + f2.out = function(_o) { + _out = _o; + return f2; + }; + f2.spread = function(val) { + if (!arguments.length) { + return _spread; + } + _spread = val; + return f2; + }; + f2.correctLightness = function(v2) { + if (v2 == null) { + v2 = true; + } + _correctLightness = v2; + resetCache(); + if (_correctLightness) { + tMapLightness = function(t2) { + var L0 = getColor(0, true).lab()[0]; + var L1 = getColor(1, true).lab()[0]; + var pol = L0 > L1; + var L_actual = getColor(t2, true).lab()[0]; + var L_ideal = L0 + (L1 - L0) * t2; + var L_diff = L_actual - L_ideal; + var t0 = 0; + var t1 = 1; + var max_iter = 20; + while (Math.abs(L_diff) > 0.01 && max_iter-- > 0) { + (function() { + if (pol) { + L_diff *= -1; + } + if (L_diff < 0) { + t0 = t2; + t2 += (t1 - t2) * 0.5; + } else { + t1 = t2; + t2 += (t0 - t2) * 0.5; + } + L_actual = getColor(t2, true).lab()[0]; + return L_diff = L_actual - L_ideal; + })(); + } + return t2; + }; + } else { + tMapLightness = function(t2) { + return t2; + }; + } + return f2; + }; + f2.padding = function(p2) { + if (p2 != null) { + if (type$2(p2) === "number") { + p2 = [p2, p2]; + } + _padding = p2; + return f2; + } else { + return _padding; + } + }; + f2.colors = function(numColors, out) { + if (arguments.length < 2) { + out = "hex"; + } + var result = []; + if (arguments.length === 0) { + result = _colors.slice(0); + } else if (numColors === 1) { + result = [f2(0.5)]; + } else if (numColors > 1) { + var dm = _domain[0]; + var dd = _domain[1] - dm; + result = __range__(0, numColors, false).map(function(i4) { + return f2(dm + i4 / (numColors - 1) * dd); + }); + } else { + colors = []; + var samples = []; + if (_classes && _classes.length > 2) { + for (var i3 = 1, end = _classes.length, asc = 1 <= end; asc ? i3 < end : i3 > end; asc ? i3++ : i3--) { + samples.push((_classes[i3 - 1] + _classes[i3]) * 0.5); + } + } else { + samples = _domain; + } + result = samples.map(function(v2) { + return f2(v2); + }); + } + if (chroma$4[out]) { + result = result.map(function(c2) { + return c2[out](); + }); + } + return result; + }; + f2.cache = function(c2) { + if (c2 != null) { + _useCache = c2; + return f2; + } else { + return _useCache; + } + }; + f2.gamma = function(g2) { + if (g2 != null) { + _gamma = g2; + return f2; + } else { + return _gamma; + } + }; + f2.nodata = function(d2) { + if (d2 != null) { + _nacol = chroma$4(d2); + return f2; + } else { + return _nacol; + } + }; + return f2; + }; + function __range__(left, right, inclusive) { + var range3 = []; + var ascending = left < right; + var end = !inclusive ? right : ascending ? right + 1 : right - 1; + for (var i3 = left; ascending ? i3 < end : i3 > end; ascending ? i3++ : i3--) { + range3.push(i3); + } + return range3; + } + var Color$5 = Color_1; + var scale$1 = scale$2; + var binom_row = function(n2) { + var row = [1, 1]; + for (var i3 = 1; i3 < n2; i3++) { + var newrow = [1]; + for (var j2 = 1; j2 <= row.length; j2++) { + newrow[j2] = (row[j2] || 0) + row[j2 - 1]; + } + row = newrow; + } + return row; + }; + var bezier = function(colors) { + var assign2, assign$1, assign$2; + var I2, lab0, lab1, lab2; + colors = colors.map(function(c2) { + return new Color$5(c2); + }); + if (colors.length === 2) { + assign2 = colors.map(function(c2) { + return c2.lab(); + }), lab0 = assign2[0], lab1 = assign2[1]; + I2 = function(t2) { + var lab4 = [0, 1, 2].map(function(i3) { + return lab0[i3] + t2 * (lab1[i3] - lab0[i3]); + }); + return new Color$5(lab4, "lab"); + }; + } else if (colors.length === 3) { + assign$1 = colors.map(function(c2) { + return c2.lab(); + }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]; + I2 = function(t2) { + var lab4 = [0, 1, 2].map(function(i3) { + return (1 - t2) * (1 - t2) * lab0[i3] + 2 * (1 - t2) * t2 * lab1[i3] + t2 * t2 * lab2[i3]; + }); + return new Color$5(lab4, "lab"); + }; + } else if (colors.length === 4) { + var lab3; + assign$2 = colors.map(function(c2) { + return c2.lab(); + }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]; + I2 = function(t2) { + var lab4 = [0, 1, 2].map(function(i3) { + return (1 - t2) * (1 - t2) * (1 - t2) * lab0[i3] + 3 * (1 - t2) * (1 - t2) * t2 * lab1[i3] + 3 * (1 - t2) * t2 * t2 * lab2[i3] + t2 * t2 * t2 * lab3[i3]; + }); + return new Color$5(lab4, "lab"); + }; + } else if (colors.length >= 5) { + var labs, row, n2; + labs = colors.map(function(c2) { + return c2.lab(); + }); + n2 = colors.length - 1; + row = binom_row(n2); + I2 = function(t2) { + var u2 = 1 - t2; + var lab4 = [0, 1, 2].map(function(i3) { + return labs.reduce(function(sum, el, j2) { + return sum + row[j2] * Math.pow(u2, n2 - j2) * Math.pow(t2, j2) * el[i3]; + }, 0); + }); + return new Color$5(lab4, "lab"); + }; + } else { + throw new RangeError("No point in running bezier with only one color."); + } + return I2; + }; + var bezier_1 = function(colors) { + var f2 = bezier(colors); + f2.scale = function() { + return scale$1(f2); + }; + return f2; + }; + var chroma$3 = chroma_1; + var blend = function(bottom, top, mode) { + if (!blend[mode]) { + throw new Error("unknown blend mode " + mode); + } + return blend[mode](bottom, top); + }; + var blend_f = function(f2) { + return function(bottom, top) { + var c0 = chroma$3(top).rgb(); + var c1 = chroma$3(bottom).rgb(); + return chroma$3.rgb(f2(c0, c1)); + }; + }; + var each3 = function(f2) { + return function(c0, c1) { + var out = []; + out[0] = f2(c0[0], c1[0]); + out[1] = f2(c0[1], c1[1]); + out[2] = f2(c0[2], c1[2]); + return out; + }; + }; + var normal = function(a2) { + return a2; + }; + var multiply = function(a2, b2) { + return a2 * b2 / 255; + }; + var darken = function(a2, b2) { + return a2 > b2 ? b2 : a2; + }; + var lighten = function(a2, b2) { + return a2 > b2 ? a2 : b2; + }; + var screen = function(a2, b2) { + return 255 * (1 - (1 - a2 / 255) * (1 - b2 / 255)); + }; + var overlay = function(a2, b2) { + return b2 < 128 ? 2 * a2 * b2 / 255 : 255 * (1 - 2 * (1 - a2 / 255) * (1 - b2 / 255)); + }; + var burn = function(a2, b2) { + return 255 * (1 - (1 - b2 / 255) / (a2 / 255)); + }; + var dodge = function(a2, b2) { + if (a2 === 255) { + return 255; + } + a2 = 255 * (b2 / 255) / (1 - a2 / 255); + return a2 > 255 ? 255 : a2; + }; + blend.normal = blend_f(each3(normal)); + blend.multiply = blend_f(each3(multiply)); + blend.screen = blend_f(each3(screen)); + blend.overlay = blend_f(each3(overlay)); + blend.darken = blend_f(each3(darken)); + blend.lighten = blend_f(each3(lighten)); + blend.dodge = blend_f(each3(dodge)); + blend.burn = blend_f(each3(burn)); + var blend_1 = blend; + var type$1 = utils.type; + var clip_rgb = utils.clip_rgb; + var TWOPI = utils.TWOPI; + var pow$2 = Math.pow; + var sin$1 = Math.sin; + var cos$1 = Math.cos; + var chroma$2 = chroma_1; + var cubehelix = function(start, rotations, hue, gamma, lightness) { + if (start === void 0) + start = 300; + if (rotations === void 0) + rotations = -1.5; + if (hue === void 0) + hue = 1; + if (gamma === void 0) + gamma = 1; + if (lightness === void 0) + lightness = [0, 1]; + var dh = 0, dl; + if (type$1(lightness) === "array") { + dl = lightness[1] - lightness[0]; + } else { + dl = 0; + lightness = [lightness, lightness]; + } + var f2 = function(fract) { + var a2 = TWOPI * ((start + 120) / 360 + rotations * fract); + var l2 = pow$2(lightness[0] + dl * fract, gamma); + var h2 = dh !== 0 ? hue[0] + fract * dh : hue; + var amp = h2 * l2 * (1 - l2) / 2; + var cos_a = cos$1(a2); + var sin_a = sin$1(a2); + var r2 = l2 + amp * (-0.14861 * cos_a + 1.78277 * sin_a); + var g2 = l2 + amp * (-0.29227 * cos_a - 0.90649 * sin_a); + var b2 = l2 + amp * (1.97294 * cos_a); + return chroma$2(clip_rgb([r2 * 255, g2 * 255, b2 * 255, 1])); + }; + f2.start = function(s2) { + if (s2 == null) { + return start; + } + start = s2; + return f2; + }; + f2.rotations = function(r2) { + if (r2 == null) { + return rotations; + } + rotations = r2; + return f2; + }; + f2.gamma = function(g2) { + if (g2 == null) { + return gamma; + } + gamma = g2; + return f2; + }; + f2.hue = function(h2) { + if (h2 == null) { + return hue; + } + hue = h2; + if (type$1(hue) === "array") { + dh = hue[1] - hue[0]; + if (dh === 0) { + hue = hue[1]; + } + } else { + dh = 0; + } + return f2; + }; + f2.lightness = function(h2) { + if (h2 == null) { + return lightness; + } + if (type$1(h2) === "array") { + lightness = h2; + dl = h2[1] - h2[0]; + } else { + lightness = [h2, h2]; + dl = 0; + } + return f2; + }; + f2.scale = function() { + return chroma$2.scale(f2); + }; + f2.hue(hue); + return f2; + }; + var Color$4 = Color_1; + var digits = "0123456789abcdef"; + var floor$1 = Math.floor; + var random = Math.random; + var random_1 = function() { + var code = "#"; + for (var i3 = 0; i3 < 6; i3++) { + code += digits.charAt(floor$1(random() * 16)); + } + return new Color$4(code, "hex"); + }; + var type = type$p; + var log = Math.log; + var pow$1 = Math.pow; + var floor2 = Math.floor; + var abs$1 = Math.abs; + var analyze = function(data, key2) { + if (key2 === void 0) + key2 = null; + var r2 = { + min: Number.MAX_VALUE, + max: Number.MAX_VALUE * -1, + sum: 0, + values: [], + count: 0 + }; + if (type(data) === "object") { + data = Object.values(data); + } + data.forEach(function(val) { + if (key2 && type(val) === "object") { + val = val[key2]; + } + if (val !== void 0 && val !== null && !isNaN(val)) { + r2.values.push(val); + r2.sum += val; + if (val < r2.min) { + r2.min = val; + } + if (val > r2.max) { + r2.max = val; + } + r2.count += 1; + } + }); + r2.domain = [r2.min, r2.max]; + r2.limits = function(mode, num2) { + return limits(r2, mode, num2); + }; + return r2; + }; + var limits = function(data, mode, num2) { + if (mode === void 0) + mode = "equal"; + if (num2 === void 0) + num2 = 7; + if (type(data) == "array") { + data = analyze(data); + } + var min3 = data.min; + var max3 = data.max; + var values = data.values.sort(function(a2, b2) { + return a2 - b2; + }); + if (num2 === 1) { + return [min3, max3]; + } + var limits2 = []; + if (mode.substr(0, 1) === "c") { + limits2.push(min3); + limits2.push(max3); + } + if (mode.substr(0, 1) === "e") { + limits2.push(min3); + for (var i3 = 1; i3 < num2; i3++) { + limits2.push(min3 + i3 / num2 * (max3 - min3)); + } + limits2.push(max3); + } else if (mode.substr(0, 1) === "l") { + if (min3 <= 0) { + throw new Error("Logarithmic scales are only possible for values > 0"); + } + var min_log = Math.LOG10E * log(min3); + var max_log = Math.LOG10E * log(max3); + limits2.push(min3); + for (var i$12 = 1; i$12 < num2; i$12++) { + limits2.push(pow$1(10, min_log + i$12 / num2 * (max_log - min_log))); + } + limits2.push(max3); + } else if (mode.substr(0, 1) === "q") { + limits2.push(min3); + for (var i$2 = 1; i$2 < num2; i$2++) { + var p2 = (values.length - 1) * i$2 / num2; + var pb = floor2(p2); + if (pb === p2) { + limits2.push(values[pb]); + } else { + var pr = p2 - pb; + limits2.push(values[pb] * (1 - pr) + values[pb + 1] * pr); + } + } + limits2.push(max3); + } else if (mode.substr(0, 1) === "k") { + var cluster; + var n2 = values.length; + var assignments = new Array(n2); + var clusterSizes = new Array(num2); + var repeat = true; + var nb_iters = 0; + var centroids = null; + centroids = []; + centroids.push(min3); + for (var i$3 = 1; i$3 < num2; i$3++) { + centroids.push(min3 + i$3 / num2 * (max3 - min3)); + } + centroids.push(max3); + while (repeat) { + for (var j2 = 0; j2 < num2; j2++) { + clusterSizes[j2] = 0; + } + for (var i$4 = 0; i$4 < n2; i$4++) { + var value = values[i$4]; + var mindist = Number.MAX_VALUE; + var best = void 0; + for (var j$1 = 0; j$1 < num2; j$1++) { + var dist = abs$1(centroids[j$1] - value); + if (dist < mindist) { + mindist = dist; + best = j$1; + } + clusterSizes[best]++; + assignments[i$4] = best; + } + } + var newCentroids = new Array(num2); + for (var j$2 = 0; j$2 < num2; j$2++) { + newCentroids[j$2] = null; + } + for (var i$5 = 0; i$5 < n2; i$5++) { + cluster = assignments[i$5]; + if (newCentroids[cluster] === null) { + newCentroids[cluster] = values[i$5]; + } else { + newCentroids[cluster] += values[i$5]; + } + } + for (var j$3 = 0; j$3 < num2; j$3++) { + newCentroids[j$3] *= 1 / clusterSizes[j$3]; + } + repeat = false; + for (var j$4 = 0; j$4 < num2; j$4++) { + if (newCentroids[j$4] !== centroids[j$4]) { + repeat = true; + break; + } + } + centroids = newCentroids; + nb_iters++; + if (nb_iters > 200) { + repeat = false; + } + } + var kClusters = {}; + for (var j$5 = 0; j$5 < num2; j$5++) { + kClusters[j$5] = []; + } + for (var i$6 = 0; i$6 < n2; i$6++) { + cluster = assignments[i$6]; + kClusters[cluster].push(values[i$6]); + } + var tmpKMeansBreaks = []; + for (var j$6 = 0; j$6 < num2; j$6++) { + tmpKMeansBreaks.push(kClusters[j$6][0]); + tmpKMeansBreaks.push(kClusters[j$6][kClusters[j$6].length - 1]); + } + tmpKMeansBreaks = tmpKMeansBreaks.sort(function(a2, b2) { + return a2 - b2; + }); + limits2.push(tmpKMeansBreaks[0]); + for (var i$7 = 1; i$7 < tmpKMeansBreaks.length; i$7 += 2) { + var v2 = tmpKMeansBreaks[i$7]; + if (!isNaN(v2) && limits2.indexOf(v2) === -1) { + limits2.push(v2); + } + } + } + return limits2; + }; + var analyze_1 = { analyze, limits }; + var Color$3 = Color_1; + var contrast = function(a2, b2) { + a2 = new Color$3(a2); + b2 = new Color$3(b2); + var l1 = a2.luminance(); + var l2 = b2.luminance(); + return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05); + }; + var Color$2 = Color_1; + var sqrt = Math.sqrt; + var pow = Math.pow; + var min2 = Math.min; + var max2 = Math.max; + var atan2 = Math.atan2; + var abs = Math.abs; + var cos = Math.cos; + var sin = Math.sin; + var exp = Math.exp; + var PI = Math.PI; + var deltaE = function(a2, b2, Kl, Kc, Kh) { + if (Kl === void 0) + Kl = 1; + if (Kc === void 0) + Kc = 1; + if (Kh === void 0) + Kh = 1; + var rad2deg = function(rad) { + return 360 * rad / (2 * PI); + }; + var deg2rad = function(deg) { + return 2 * PI * deg / 360; + }; + a2 = new Color$2(a2); + b2 = new Color$2(b2); + var ref = Array.from(a2.lab()); + var L1 = ref[0]; + var a1 = ref[1]; + var b1 = ref[2]; + var ref$1 = Array.from(b2.lab()); + var L2 = ref$1[0]; + var a22 = ref$1[1]; + var b22 = ref$1[2]; + var avgL = (L1 + L2) / 2; + var C1 = sqrt(pow(a1, 2) + pow(b1, 2)); + var C2 = sqrt(pow(a22, 2) + pow(b22, 2)); + var avgC = (C1 + C2) / 2; + var G2 = 0.5 * (1 - sqrt(pow(avgC, 7) / (pow(avgC, 7) + pow(25, 7)))); + var a1p = a1 * (1 + G2); + var a2p = a22 * (1 + G2); + var C1p = sqrt(pow(a1p, 2) + pow(b1, 2)); + var C2p = sqrt(pow(a2p, 2) + pow(b22, 2)); + var avgCp = (C1p + C2p) / 2; + var arctan1 = rad2deg(atan2(b1, a1p)); + var arctan2 = rad2deg(atan2(b22, a2p)); + var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360; + var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360; + var avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h2p) / 2; + var T2 = 1 - 0.17 * cos(deg2rad(avgHp - 30)) + 0.24 * cos(deg2rad(2 * avgHp)) + 0.32 * cos(deg2rad(3 * avgHp + 6)) - 0.2 * cos(deg2rad(4 * avgHp - 63)); + var deltaHp = h2p - h1p; + deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360; + deltaHp = 2 * sqrt(C1p * C2p) * sin(deg2rad(deltaHp) / 2); + var deltaL = L2 - L1; + var deltaCp = C2p - C1p; + var sl = 1 + 0.015 * pow(avgL - 50, 2) / sqrt(20 + pow(avgL - 50, 2)); + var sc = 1 + 0.045 * avgCp; + var sh = 1 + 0.015 * avgCp * T2; + var deltaTheta = 30 * exp(-pow((avgHp - 275) / 25, 2)); + var Rc = 2 * sqrt(pow(avgCp, 7) / (pow(avgCp, 7) + pow(25, 7))); + var Rt = -Rc * sin(2 * deg2rad(deltaTheta)); + var result = sqrt(pow(deltaL / (Kl * sl), 2) + pow(deltaCp / (Kc * sc), 2) + pow(deltaHp / (Kh * sh), 2) + Rt * (deltaCp / (Kc * sc)) * (deltaHp / (Kh * sh))); + return max2(0, min2(100, result)); + }; + var Color$1 = Color_1; + var distance = function(a2, b2, mode) { + if (mode === void 0) + mode = "lab"; + a2 = new Color$1(a2); + b2 = new Color$1(b2); + var l1 = a2.get(mode); + var l2 = b2.get(mode); + var sum_sq = 0; + for (var i3 in l1) { + var d2 = (l1[i3] || 0) - (l2[i3] || 0); + sum_sq += d2 * d2; + } + return Math.sqrt(sum_sq); + }; + var Color = Color_1; + var valid = function() { + var args = [], len = arguments.length; + while (len--) + args[len] = arguments[len]; + try { + new (Function.prototype.bind.apply(Color, [null].concat(args)))(); + return true; + } catch (e2) { + return false; + } + }; + var chroma$1 = chroma_1; + var scale = scale$2; + var scales = { + cool: function cool() { + return scale([chroma$1.hsl(180, 1, 0.9), chroma$1.hsl(250, 0.7, 0.4)]); + }, + hot: function hot() { + return scale(["#000", "#f00", "#ff0", "#fff"]).mode("rgb"); + } + }; + var colorbrewer = { + // sequential + OrRd: ["#fff7ec", "#fee8c8", "#fdd49e", "#fdbb84", "#fc8d59", "#ef6548", "#d7301f", "#b30000", "#7f0000"], + PuBu: ["#fff7fb", "#ece7f2", "#d0d1e6", "#a6bddb", "#74a9cf", "#3690c0", "#0570b0", "#045a8d", "#023858"], + BuPu: ["#f7fcfd", "#e0ecf4", "#bfd3e6", "#9ebcda", "#8c96c6", "#8c6bb1", "#88419d", "#810f7c", "#4d004b"], + Oranges: ["#fff5eb", "#fee6ce", "#fdd0a2", "#fdae6b", "#fd8d3c", "#f16913", "#d94801", "#a63603", "#7f2704"], + BuGn: ["#f7fcfd", "#e5f5f9", "#ccece6", "#99d8c9", "#66c2a4", "#41ae76", "#238b45", "#006d2c", "#00441b"], + YlOrBr: ["#ffffe5", "#fff7bc", "#fee391", "#fec44f", "#fe9929", "#ec7014", "#cc4c02", "#993404", "#662506"], + YlGn: ["#ffffe5", "#f7fcb9", "#d9f0a3", "#addd8e", "#78c679", "#41ab5d", "#238443", "#006837", "#004529"], + Reds: ["#fff5f0", "#fee0d2", "#fcbba1", "#fc9272", "#fb6a4a", "#ef3b2c", "#cb181d", "#a50f15", "#67000d"], + RdPu: ["#fff7f3", "#fde0dd", "#fcc5c0", "#fa9fb5", "#f768a1", "#dd3497", "#ae017e", "#7a0177", "#49006a"], + Greens: ["#f7fcf5", "#e5f5e0", "#c7e9c0", "#a1d99b", "#74c476", "#41ab5d", "#238b45", "#006d2c", "#00441b"], + YlGnBu: ["#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb", "#41b6c4", "#1d91c0", "#225ea8", "#253494", "#081d58"], + Purples: ["#fcfbfd", "#efedf5", "#dadaeb", "#bcbddc", "#9e9ac8", "#807dba", "#6a51a3", "#54278f", "#3f007d"], + GnBu: ["#f7fcf0", "#e0f3db", "#ccebc5", "#a8ddb5", "#7bccc4", "#4eb3d3", "#2b8cbe", "#0868ac", "#084081"], + Greys: ["#ffffff", "#f0f0f0", "#d9d9d9", "#bdbdbd", "#969696", "#737373", "#525252", "#252525", "#000000"], + YlOrRd: ["#ffffcc", "#ffeda0", "#fed976", "#feb24c", "#fd8d3c", "#fc4e2a", "#e31a1c", "#bd0026", "#800026"], + PuRd: ["#f7f4f9", "#e7e1ef", "#d4b9da", "#c994c7", "#df65b0", "#e7298a", "#ce1256", "#980043", "#67001f"], + Blues: ["#f7fbff", "#deebf7", "#c6dbef", "#9ecae1", "#6baed6", "#4292c6", "#2171b5", "#08519c", "#08306b"], + PuBuGn: ["#fff7fb", "#ece2f0", "#d0d1e6", "#a6bddb", "#67a9cf", "#3690c0", "#02818a", "#016c59", "#014636"], + Viridis: ["#440154", "#482777", "#3f4a8a", "#31678e", "#26838f", "#1f9d8a", "#6cce5a", "#b6de2b", "#fee825"], + // diverging + Spectral: ["#9e0142", "#d53e4f", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#e6f598", "#abdda4", "#66c2a5", "#3288bd", "#5e4fa2"], + RdYlGn: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#d9ef8b", "#a6d96a", "#66bd63", "#1a9850", "#006837"], + RdBu: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#f7f7f7", "#d1e5f0", "#92c5de", "#4393c3", "#2166ac", "#053061"], + PiYG: ["#8e0152", "#c51b7d", "#de77ae", "#f1b6da", "#fde0ef", "#f7f7f7", "#e6f5d0", "#b8e186", "#7fbc41", "#4d9221", "#276419"], + PRGn: ["#40004b", "#762a83", "#9970ab", "#c2a5cf", "#e7d4e8", "#f7f7f7", "#d9f0d3", "#a6dba0", "#5aae61", "#1b7837", "#00441b"], + RdYlBu: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee090", "#ffffbf", "#e0f3f8", "#abd9e9", "#74add1", "#4575b4", "#313695"], + BrBG: ["#543005", "#8c510a", "#bf812d", "#dfc27d", "#f6e8c3", "#f5f5f5", "#c7eae5", "#80cdc1", "#35978f", "#01665e", "#003c30"], + RdGy: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#ffffff", "#e0e0e0", "#bababa", "#878787", "#4d4d4d", "#1a1a1a"], + PuOr: ["#7f3b08", "#b35806", "#e08214", "#fdb863", "#fee0b6", "#f7f7f7", "#d8daeb", "#b2abd2", "#8073ac", "#542788", "#2d004b"], + // qualitative + Set2: ["#66c2a5", "#fc8d62", "#8da0cb", "#e78ac3", "#a6d854", "#ffd92f", "#e5c494", "#b3b3b3"], + Accent: ["#7fc97f", "#beaed4", "#fdc086", "#ffff99", "#386cb0", "#f0027f", "#bf5b17", "#666666"], + Set1: ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf", "#999999"], + Set3: ["#8dd3c7", "#ffffb3", "#bebada", "#fb8072", "#80b1d3", "#fdb462", "#b3de69", "#fccde5", "#d9d9d9", "#bc80bd", "#ccebc5", "#ffed6f"], + Dark2: ["#1b9e77", "#d95f02", "#7570b3", "#e7298a", "#66a61e", "#e6ab02", "#a6761d", "#666666"], + Paired: ["#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c", "#fdbf6f", "#ff7f00", "#cab2d6", "#6a3d9a", "#ffff99", "#b15928"], + Pastel2: ["#b3e2cd", "#fdcdac", "#cbd5e8", "#f4cae4", "#e6f5c9", "#fff2ae", "#f1e2cc", "#cccccc"], + Pastel1: ["#fbb4ae", "#b3cde3", "#ccebc5", "#decbe4", "#fed9a6", "#ffffcc", "#e5d8bd", "#fddaec", "#f2f2f2"] + }; + for (var i2 = 0, list = Object.keys(colorbrewer); i2 < list.length; i2 += 1) { + var key = list[i2]; + colorbrewer[key.toLowerCase()] = colorbrewer[key]; + } + var colorbrewer_1 = colorbrewer; + var chroma3 = chroma_1; + chroma3.average = average; + chroma3.bezier = bezier_1; + chroma3.blend = blend_1; + chroma3.cubehelix = cubehelix; + chroma3.mix = chroma3.interpolate = mix$1; + chroma3.random = random_1; + chroma3.scale = scale$2; + chroma3.analyze = analyze_1.analyze; + chroma3.contrast = contrast; + chroma3.deltaE = deltaE; + chroma3.distance = distance; + chroma3.limits = analyze_1.limits; + chroma3.valid = valid; + chroma3.scales = scales; + chroma3.colors = w3cx11_1; + chroma3.brewer = colorbrewer_1; + var chroma_js = chroma3; + return chroma_js; + }); + } +}); + +// node_modules/lodash/lodash.js +var require_lodash = __commonJS({ + "node_modules/lodash/lodash.js"(exports, module2) { + (function() { + var undefined2; + var VERSION = "4.17.21"; + var LARGE_ARRAY_SIZE = 200; + var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`"; + var HASH_UNDEFINED = "__lodash_hash_undefined__"; + var MAX_MEMOIZE_SIZE = 500; + var PLACEHOLDER = "__lodash_placeholder__"; + var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4; + var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; + var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512; + var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "..."; + var HOT_COUNT = 800, HOT_SPAN = 16; + var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3; + var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0; + var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + var wrapFlags = [ + ["ary", WRAP_ARY_FLAG], + ["bind", WRAP_BIND_FLAG], + ["bindKey", WRAP_BIND_KEY_FLAG], + ["curry", WRAP_CURRY_FLAG], + ["curryRight", WRAP_CURRY_RIGHT_FLAG], + ["flip", WRAP_FLIP_FLAG], + ["partial", WRAP_PARTIAL_FLAG], + ["partialRight", WRAP_PARTIAL_RIGHT_FLAG], + ["rearg", WRAP_REARG_FLAG] + ]; + var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]"; + var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]"; + var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g; + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source); + var reTrimStart = /^\s+/; + var reWhitespace = /\s/; + var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /; + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; + var reEscapeChar = /\\(\\)?/g; + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + var reFlags = /\w*$/; + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + var reIsBinary = /^0b[01]+$/i; + var reIsHostCtor = /^\[object .+?Constructor\]$/; + var reIsOctal = /^0o[0-7]+$/i; + var reIsUint = /^(?:0|[1-9]\d*)$/; + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + var reNoMatch = /($^)/; + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d"; + var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")"; + var reApos = RegExp(rsApos, "g"); + var reComboMark = RegExp(rsCombo, "g"); + var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"); + var reUnicodeWord = RegExp([ + rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")", + rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")", + rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower, + rsUpper + "+" + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji + ].join("|"), "g"); + var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]"); + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + var contextProps = [ + "Array", + "Buffer", + "DataView", + "Date", + "Error", + "Float32Array", + "Float64Array", + "Function", + "Int8Array", + "Int16Array", + "Int32Array", + "Map", + "Math", + "Object", + "Promise", + "RegExp", + "Set", + "String", + "Symbol", + "TypeError", + "Uint8Array", + "Uint8ClampedArray", + "Uint16Array", + "Uint32Array", + "WeakMap", + "_", + "clearTimeout", + "isFinite", + "parseInt", + "setTimeout" + ]; + var templateCounter = -1; + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false; + var deburredLetters = { + // Latin-1 Supplement block. + "\xC0": "A", + "\xC1": "A", + "\xC2": "A", + "\xC3": "A", + "\xC4": "A", + "\xC5": "A", + "\xE0": "a", + "\xE1": "a", + "\xE2": "a", + "\xE3": "a", + "\xE4": "a", + "\xE5": "a", + "\xC7": "C", + "\xE7": "c", + "\xD0": "D", + "\xF0": "d", + "\xC8": "E", + "\xC9": "E", + "\xCA": "E", + "\xCB": "E", + "\xE8": "e", + "\xE9": "e", + "\xEA": "e", + "\xEB": "e", + "\xCC": "I", + "\xCD": "I", + "\xCE": "I", + "\xCF": "I", + "\xEC": "i", + "\xED": "i", + "\xEE": "i", + "\xEF": "i", + "\xD1": "N", + "\xF1": "n", + "\xD2": "O", + "\xD3": "O", + "\xD4": "O", + "\xD5": "O", + "\xD6": "O", + "\xD8": "O", + "\xF2": "o", + "\xF3": "o", + "\xF4": "o", + "\xF5": "o", + "\xF6": "o", + "\xF8": "o", + "\xD9": "U", + "\xDA": "U", + "\xDB": "U", + "\xDC": "U", + "\xF9": "u", + "\xFA": "u", + "\xFB": "u", + "\xFC": "u", + "\xDD": "Y", + "\xFD": "y", + "\xFF": "y", + "\xC6": "Ae", + "\xE6": "ae", + "\xDE": "Th", + "\xFE": "th", + "\xDF": "ss", + // Latin Extended-A block. + "\u0100": "A", + "\u0102": "A", + "\u0104": "A", + "\u0101": "a", + "\u0103": "a", + "\u0105": "a", + "\u0106": "C", + "\u0108": "C", + "\u010A": "C", + "\u010C": "C", + "\u0107": "c", + "\u0109": "c", + "\u010B": "c", + "\u010D": "c", + "\u010E": "D", + "\u0110": "D", + "\u010F": "d", + "\u0111": "d", + "\u0112": "E", + "\u0114": "E", + "\u0116": "E", + "\u0118": "E", + "\u011A": "E", + "\u0113": "e", + "\u0115": "e", + "\u0117": "e", + "\u0119": "e", + "\u011B": "e", + "\u011C": "G", + "\u011E": "G", + "\u0120": "G", + "\u0122": "G", + "\u011D": "g", + "\u011F": "g", + "\u0121": "g", + "\u0123": "g", + "\u0124": "H", + "\u0126": "H", + "\u0125": "h", + "\u0127": "h", + "\u0128": "I", + "\u012A": "I", + "\u012C": "I", + "\u012E": "I", + "\u0130": "I", + "\u0129": "i", + "\u012B": "i", + "\u012D": "i", + "\u012F": "i", + "\u0131": "i", + "\u0134": "J", + "\u0135": "j", + "\u0136": "K", + "\u0137": "k", + "\u0138": "k", + "\u0139": "L", + "\u013B": "L", + "\u013D": "L", + "\u013F": "L", + "\u0141": "L", + "\u013A": "l", + "\u013C": "l", + "\u013E": "l", + "\u0140": "l", + "\u0142": "l", + "\u0143": "N", + "\u0145": "N", + "\u0147": "N", + "\u014A": "N", + "\u0144": "n", + "\u0146": "n", + "\u0148": "n", + "\u014B": "n", + "\u014C": "O", + "\u014E": "O", + "\u0150": "O", + "\u014D": "o", + "\u014F": "o", + "\u0151": "o", + "\u0154": "R", + "\u0156": "R", + "\u0158": "R", + "\u0155": "r", + "\u0157": "r", + "\u0159": "r", + "\u015A": "S", + "\u015C": "S", + "\u015E": "S", + "\u0160": "S", + "\u015B": "s", + "\u015D": "s", + "\u015F": "s", + "\u0161": "s", + "\u0162": "T", + "\u0164": "T", + "\u0166": "T", + "\u0163": "t", + "\u0165": "t", + "\u0167": "t", + "\u0168": "U", + "\u016A": "U", + "\u016C": "U", + "\u016E": "U", + "\u0170": "U", + "\u0172": "U", + "\u0169": "u", + "\u016B": "u", + "\u016D": "u", + "\u016F": "u", + "\u0171": "u", + "\u0173": "u", + "\u0174": "W", + "\u0175": "w", + "\u0176": "Y", + "\u0177": "y", + "\u0178": "Y", + "\u0179": "Z", + "\u017B": "Z", + "\u017D": "Z", + "\u017A": "z", + "\u017C": "z", + "\u017E": "z", + "\u0132": "IJ", + "\u0133": "ij", + "\u0152": "Oe", + "\u0153": "oe", + "\u0149": "'n", + "\u017F": "s" + }; + var htmlEscapes = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" + }; + var htmlUnescapes = { + "&": "&", + "<": "<", + ">": ">", + """: '"', + "'": "'" + }; + var stringEscapes = { + "\\": "\\", + "'": "'", + "\n": "n", + "\r": "r", + "\u2028": "u2028", + "\u2029": "u2029" + }; + var freeParseFloat = parseFloat, freeParseInt = parseInt; + var freeGlobal = typeof global == "object" && global && global.Object === Object && global; + var freeSelf = typeof self == "object" && self && self.Object === Object && self; + var root = freeGlobal || freeSelf || Function("return this")(); + var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; + var freeModule = freeExports && typeof module2 == "object" && module2 && !module2.nodeType && module2; + var moduleExports = freeModule && freeModule.exports === freeExports; + var freeProcess = moduleExports && freeGlobal.process; + var nodeUtil = function() { + try { + var types = freeModule && freeModule.require && freeModule.require("util").types; + if (types) { + return types; + } + return freeProcess && freeProcess.binding && freeProcess.binding("util"); + } catch (e2) { + } + }(); + var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + function apply(func, thisArg, args) { + switch (args.length) { + case 0: + return func.call(thisArg); + case 1: + return func.call(thisArg, args[0]); + case 2: + return func.call(thisArg, args[0], args[1]); + case 3: + return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; + } + function arrayEach(array, iteratee) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + function arrayEvery(array, predicate) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } + function arrayFilter(array, predicate) { + var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } + function arrayIncludesWith(array, value, comparator) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } + function arrayMap(array, iteratee) { + var index = -1, length = array == null ? 0 : array.length, result = Array(length); + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + function arrayPush(array, values) { + var index = -1, length = values.length, offset3 = array.length; + while (++index < length) { + array[offset3 + index] = values[index]; + } + return array; + } + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + function arraySome(array, predicate) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + var asciiSize = baseProperty("length"); + function asciiToArray(string) { + return string.split(""); + } + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection2) { + if (predicate(value, key, collection2)) { + result = key; + return false; + } + }); + return result; + } + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, index = fromIndex + (fromRight ? 1 : -1); + while (fromRight ? index-- : ++index < length) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + function baseIndexOf(array, value, fromIndex) { + return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex); + } + function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, length = array.length; + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; + } + function baseIsNaN(value) { + return value !== value; + } + function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? baseSum(array, iteratee) / length : NAN; + } + function baseProperty(key) { + return function(object) { + return object == null ? undefined2 : object[key]; + }; + } + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined2 : object[key]; + }; + } + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection2) { + accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2); + }); + return accumulator; + } + function baseSortBy(array, comparer) { + var length = array.length; + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + function baseSum(array, iteratee) { + var result, index = -1, length = array.length; + while (++index < length) { + var current2 = iteratee(array[index]); + if (current2 !== undefined2) { + result = result === undefined2 ? current2 : result + current2; + } + } + return result; + } + function baseTimes(n2, iteratee) { + var index = -1, result = Array(n2); + while (++index < n2) { + result[index] = iteratee(index); + } + return result; + } + function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); + } + function baseTrim(string) { + return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string; + } + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + function cacheHas(cache, key) { + return cache.has(key); + } + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, length = strSymbols.length; + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { + } + return index; + } + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { + } + return index; + } + function countHolders(array, placeholder) { + var length = array.length, result = 0; + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; + } + var deburrLetter = basePropertyOf(deburredLetters); + var escapeHtmlChar = basePropertyOf(htmlEscapes); + function escapeStringChar(chr) { + return "\\" + stringEscapes[chr]; + } + function getValue(object, key) { + return object == null ? undefined2 : object[key]; + } + function hasUnicode(string) { + return reHasUnicode.test(string); + } + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } + function iteratorToArray(iterator) { + var data, result = []; + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; + } + function mapToArray(map2) { + var index = -1, result = Array(map2.size); + map2.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + function overArg(func, transform2) { + return function(arg) { + return func(transform2(arg)); + }; + } + function replaceHolders(array, placeholder) { + var index = -1, length = array.length, resIndex = 0, result = []; + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; + } + } + return result; + } + function setToArray(set2) { + var index = -1, result = Array(set2.size); + set2.forEach(function(value) { + result[++index] = value; + }); + return result; + } + function setToPairs(set2) { + var index = -1, result = Array(set2.size); + set2.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; + } + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, length = array.length; + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; + } + function stringSize(string) { + return hasUnicode(string) ? unicodeSize(string) : asciiSize(string); + } + function stringToArray(string) { + return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string); + } + function trimmedEndIndex(string) { + var index = string.length; + while (index-- && reWhitespace.test(string.charAt(index))) { + } + return index; + } + var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; + } + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } + var runInContext = function runInContext2(context) { + context = context == null ? root : _2.defaults(root.Object(), context, _2.pick(root, contextProps)); + var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError; + var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype; + var coreJsData = context["__core-js_shared__"]; + var funcToString = funcProto.toString; + var hasOwnProperty2 = objectProto.hasOwnProperty; + var idCounter = 0; + var maskSrcKey = function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); + return uid ? "Symbol(src)_1." + uid : ""; + }(); + var nativeObjectToString = objectProto.toString; + var objectCtorString2 = funcToString.call(Object2); + var oldDash = root._; + var reIsNative = RegExp2( + "^" + funcToString.call(hasOwnProperty2).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" + ); + var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2; + var defineProperty = function() { + try { + var func = getNative(Object2, "defineProperty"); + func({}, "", {}); + return func; + } catch (e2) { + } + }(); + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; + var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse; + var DataView = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create"); + var metaMap = WeakMap2 && new WeakMap2(); + var realNames = {}; + var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2); + var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2; + function lodash(value) { + if (isObjectLike(value) && !isArray2(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty2.call(value, "__wrapped__")) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + var baseCreate = function() { + function object() { + } + return function(proto) { + if (!isObject2(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result2 = new object(); + object.prototype = undefined2; + return result2; + }; + }(); + function baseLodash() { + } + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined2; + } + lodash.templateSettings = { + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + "escape": reEscape, + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + "evaluate": reEvaluate, + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + "interpolate": reInterpolate, + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ + "variable": "", + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ + "imports": { + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ + "_": lodash + } + }; + lodash.prototype = baseLodash.prototype; + lodash.prototype.constructor = lodash; + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; + } + function lazyClone() { + var result2 = new LazyWrapper(this.__wrapped__); + result2.__actions__ = copyArray(this.__actions__); + result2.__dir__ = this.__dir__; + result2.__filtered__ = this.__filtered__; + result2.__iteratees__ = copyArray(this.__iteratees__); + result2.__takeCount__ = this.__takeCount__; + result2.__views__ = copyArray(this.__views__); + return result2; + } + function lazyReverse() { + if (this.__filtered__) { + var result2 = new LazyWrapper(this); + result2.__dir__ = -1; + result2.__filtered__ = true; + } else { + result2 = this.clone(); + result2.__dir__ *= -1; + } + return result2; + } + function lazyValue() { + var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray2(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start = view.start, end = view.end, length = end - start, index = isRight ? end : start - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__); + if (!isArr || !isRight && arrLength == length && takeCount == length) { + return baseWrapperValue(array, this.__actions__); + } + var result2 = []; + outer: + while (length-- && resIndex < takeCount) { + index += dir; + var iterIndex = -1, value = array[index]; + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], iteratee2 = data.iteratee, type = data.type, computed = iteratee2(value); + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result2[resIndex++] = value; + } + return result2; + } + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; + function Hash(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + function hashDelete(key) { + var result2 = this.has(key) && delete this.__data__[key]; + this.size -= result2 ? 1 : 0; + return result2; + } + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result2 = data[key]; + return result2 === HASH_UNDEFINED ? undefined2 : result2; + } + return hasOwnProperty2.call(data, key) ? data[key] : undefined2; + } + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined2 : hasOwnProperty2.call(data, key); + } + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = nativeCreate && value === undefined2 ? HASH_UNDEFINED : value; + return this; + } + Hash.prototype.clear = hashClear; + Hash.prototype["delete"] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + function ListCache(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + function listCacheDelete(key) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } + function listCacheGet(key) { + var data = this.__data__, index = assocIndexOf(data, key); + return index < 0 ? undefined2 : data[index][1]; + } + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + function listCacheSet(key, value) { + var data = this.__data__, index = assocIndexOf(data, key); + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + ListCache.prototype.clear = listCacheClear; + ListCache.prototype["delete"] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + function MapCache(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + function mapCacheClear() { + this.size = 0; + this.__data__ = { + "hash": new Hash(), + "map": new (Map2 || ListCache)(), + "string": new Hash() + }; + } + function mapCacheDelete(key) { + var result2 = getMapData(this, key)["delete"](key); + this.size -= result2 ? 1 : 0; + return result2; + } + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + function mapCacheSet(key, value) { + var data = getMapData(this, key), size3 = data.size; + data.set(key, value); + this.size += data.size == size3 ? 0 : 1; + return this; + } + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype["delete"] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + function SetCache(values2) { + var index = -1, length = values2 == null ? 0 : values2.length; + this.__data__ = new MapCache(); + while (++index < length) { + this.add(values2[index]); + } + } + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + function setCacheHas(value) { + return this.__data__.has(value); + } + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + function stackClear() { + this.__data__ = new ListCache(); + this.size = 0; + } + function stackDelete(key) { + var data = this.__data__, result2 = data["delete"](key); + this.size = data.size; + return result2; + } + function stackGet(key) { + return this.__data__.get(key); + } + function stackHas(key) { + return this.__data__.has(key); + } + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + Stack.prototype.clear = stackClear; + Stack.prototype["delete"] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + function arrayLikeKeys(value, inherited) { + var isArr = isArray2(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length; + for (var key in value) { + if ((inherited || hasOwnProperty2.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode. + (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers. + isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays. + isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties. + isIndex(key, length)))) { + result2.push(key); + } + } + return result2; + } + function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined2; + } + function arraySampleSize(array, n2) { + return shuffleSelf(copyArray(array), baseClamp(n2, 0, array.length)); + } + function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); + } + function assignMergeValue(object, key, value) { + if (value !== undefined2 && !eq(object[key], value) || value === undefined2 && !(key in object)) { + baseAssignValue(object, key, value); + } + } + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty2.call(object, key) && eq(objValue, value)) || value === undefined2 && !(key in object)) { + baseAssignValue(object, key, value); + } + } + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + function baseAggregator(collection, setter, iteratee2, accumulator) { + baseEach(collection, function(value, key, collection2) { + setter(accumulator, value, iteratee2(value), collection2); + }); + return accumulator; + } + function baseAssign(object, source) { + return object && copyObject(source, keys2(source), object); + } + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } + function baseAssignValue(object, key, value) { + if (key == "__proto__" && defineProperty) { + defineProperty(object, key, { + "configurable": true, + "enumerable": true, + "value": value, + "writable": true + }); + } else { + object[key] = value; + } + } + function baseAt(object, paths) { + var index = -1, length = paths.length, result2 = Array2(length), skip = object == null; + while (++index < length) { + result2[index] = skip ? undefined2 : get(object, paths[index]); + } + return result2; + } + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined2) { + number = number <= upper ? number : upper; + } + if (lower !== undefined2) { + number = number >= lower ? number : lower; + } + } + return number; + } + function baseClone(value, bitmask, customizer, key, object, stack) { + var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG; + if (customizer) { + result2 = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result2 !== undefined2) { + return result2; + } + if (!isObject2(value)) { + return value; + } + var isArr = isArray2(value); + if (isArr) { + result2 = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result2); + } + } else { + var tag = getTag(value), isFunc = tag == funcTag || tag == genTag; + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || isFunc && !object) { + result2 = isFlat || isFunc ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result2 = initCloneByTag(value, tag, isDeep); + } + } + stack || (stack = new Stack()); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result2); + if (isSet2(value)) { + value.forEach(function(subValue) { + result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap2(value)) { + value.forEach(function(subValue, key2) { + result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); + }); + } + var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys2; + var props = isArr ? undefined2 : keysFunc(value); + arrayEach(props || value, function(subValue, key2) { + if (props) { + key2 = subValue; + subValue = value[key2]; + } + assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); + }); + return result2; + } + function baseConforms(source) { + var props = keys2(source); + return function(object) { + return baseConformsTo(object, source, props); + }; + } + function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object2(object); + while (length--) { + var key = props[length], predicate = source[key], value = object[key]; + if (value === undefined2 && !(key in object) || !predicate(value)) { + return false; + } + } + return true; + } + function baseDelay(func, wait2, args) { + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + return setTimeout2(function() { + func.apply(undefined2, args); + }, wait2); + } + function baseDifference(array, values2, iteratee2, comparator) { + var index = -1, includes2 = arrayIncludes, isCommon = true, length = array.length, result2 = [], valuesLength = values2.length; + if (!length) { + return result2; + } + if (iteratee2) { + values2 = arrayMap(values2, baseUnary(iteratee2)); + } + if (comparator) { + includes2 = arrayIncludesWith; + isCommon = false; + } else if (values2.length >= LARGE_ARRAY_SIZE) { + includes2 = cacheHas; + isCommon = false; + values2 = new SetCache(values2); + } + outer: + while (++index < length) { + var value = array[index], computed = iteratee2 == null ? value : iteratee2(value); + value = comparator || value !== 0 ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values2[valuesIndex] === computed) { + continue outer; + } + } + result2.push(value); + } else if (!includes2(values2, computed, comparator)) { + result2.push(value); + } + } + return result2; + } + var baseEach = createBaseEach(baseForOwn); + var baseEachRight = createBaseEach(baseForOwnRight, true); + function baseEvery(collection, predicate) { + var result2 = true; + baseEach(collection, function(value, index, collection2) { + result2 = !!predicate(value, index, collection2); + return result2; + }); + return result2; + } + function baseExtremum(array, iteratee2, comparator) { + var index = -1, length = array.length; + while (++index < length) { + var value = array[index], current2 = iteratee2(value); + if (current2 != null && (computed === undefined2 ? current2 === current2 && !isSymbol(current2) : comparator(current2, computed))) { + var computed = current2, result2 = value; + } + } + return result2; + } + function baseFill(array, value, start, end) { + var length = array.length; + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : length + start; + } + end = end === undefined2 || end > length ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; + } + return array; + } + function baseFilter(collection, predicate) { + var result2 = []; + baseEach(collection, function(value, index, collection2) { + if (predicate(value, index, collection2)) { + result2.push(value); + } + }); + return result2; + } + function baseFlatten(array, depth, predicate, isStrict, result2) { + var index = -1, length = array.length; + predicate || (predicate = isFlattenable); + result2 || (result2 = []); + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + baseFlatten(value, depth - 1, predicate, isStrict, result2); + } else { + arrayPush(result2, value); + } + } else if (!isStrict) { + result2[result2.length] = value; + } + } + return result2; + } + var baseFor = createBaseFor(); + var baseForRight = createBaseFor(true); + function baseForOwn(object, iteratee2) { + return object && baseFor(object, iteratee2, keys2); + } + function baseForOwnRight(object, iteratee2) { + return object && baseForRight(object, iteratee2, keys2); + } + function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction2(object[key]); + }); + } + function baseGet(object, path) { + path = castPath(path, object); + var index = 0, length = path.length; + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return index && index == length ? object : undefined2; + } + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result2 = keysFunc(object); + return isArray2(object) ? result2 : arrayPush(result2, symbolsFunc(object)); + } + function baseGetTag(value) { + if (value == null) { + return value === undefined2 ? undefinedTag : nullTag; + } + return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString(value); + } + function baseGt(value, other) { + return value > other; + } + function baseHas(object, key) { + return object != null && hasOwnProperty2.call(object, key); + } + function baseHasIn(object, key) { + return object != null && key in Object2(object); + } + function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); + } + function baseIntersection(arrays, iteratee2, comparator) { + var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = []; + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee2) { + array = arrayMap(array, baseUnary(iteratee2)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined2; + } + array = arrays[0]; + var index = -1, seen = caches[0]; + outer: + while (++index < length && result2.length < maxLength) { + var value = array[index], computed = iteratee2 ? iteratee2(value) : value; + value = comparator || value !== 0 ? value : 0; + if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache ? cacheHas(cache, computed) : includes2(arrays[othIndex], computed, comparator))) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result2.push(value); + } + } + return result2; + } + function baseInverter(object, setter, iteratee2, accumulator) { + baseForOwn(object, function(value, key, object2) { + setter(accumulator, iteratee2(value), key, object2); + }); + return accumulator; + } + function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent2(object, path); + var func = object == null ? object : object[toKey(last5(path))]; + return func == null ? undefined2 : apply(func, object, args); + } + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; + } + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; + } + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray2(object), othIsArr = isArray2(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other); + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag; + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack()); + return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty2.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty2.call(other, "__wrapped__"); + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other; + stack || (stack = new Stack()); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack()); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, length = index, noCustomizer = !customizer; + if (object == null) { + return !length; + } + object = Object2(object); + while (index--) { + var data = matchData[index]; + if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], objValue = object[key], srcValue = data[1]; + if (noCustomizer && data[2]) { + if (objValue === undefined2 && !(key in object)) { + return false; + } + } else { + var stack = new Stack(); + if (customizer) { + var result2 = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result2 === undefined2 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) { + return false; + } + } + } + return true; + } + function baseIsNative(value) { + if (!isObject2(value) || isMasked(value)) { + return false; + } + var pattern = isFunction2(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; + } + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; + } + function baseIsTypedArray(value) { + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + function baseIteratee(value) { + if (typeof value == "function") { + return value; + } + if (value == null) { + return identity3; + } + if (typeof value == "object") { + return isArray2(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value); + } + return property(value); + } + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result2 = []; + for (var key in Object2(object)) { + if (hasOwnProperty2.call(object, key) && key != "constructor") { + result2.push(key); + } + } + return result2; + } + function baseKeysIn(object) { + if (!isObject2(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), result2 = []; + for (var key in object) { + if (!(key == "constructor" && (isProto || !hasOwnProperty2.call(object, key)))) { + result2.push(key); + } + } + return result2; + } + function baseLt(value, other) { + return value < other; + } + function baseMap(collection, iteratee2) { + var index = -1, result2 = isArrayLike2(collection) ? Array2(collection.length) : []; + baseEach(collection, function(value, key, collection2) { + result2[++index] = iteratee2(value, key, collection2); + }); + return result2; + } + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; + } + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack()); + if (isObject2(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } else { + var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined2; + if (newValue === undefined2) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue); + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined2; + var isCommon = newValue === undefined2; + if (isCommon) { + var isArr = isArray2(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue); + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray2(objValue)) { + newValue = objValue; + } else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } else { + newValue = []; + } + } else if (isPlainObject3(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } else if (!isObject2(objValue) || isFunction2(objValue)) { + newValue = initCloneObject(srcValue); + } + } else { + isCommon = false; + } + } + if (isCommon) { + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack["delete"](srcValue); + } + assignMergeValue(object, key, newValue); + } + function baseNth(array, n2) { + var length = array.length; + if (!length) { + return; + } + n2 += n2 < 0 ? length : 0; + return isIndex(n2, length) ? array[n2] : undefined2; + } + function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee2) { + if (isArray2(iteratee2)) { + return function(value) { + return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2); + }; + } + return iteratee2; + }); + } else { + iteratees = [identity3]; + } + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + var result2 = baseMap(collection, function(value, key, collection2) { + var criteria = arrayMap(iteratees, function(iteratee2) { + return iteratee2(value); + }); + return { "criteria": criteria, "index": ++index, "value": value }; + }); + return baseSortBy(result2, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } + function basePickBy(object, paths, predicate) { + var index = -1, length = paths.length, result2 = {}; + while (++index < length) { + var path = paths[index], value = baseGet(object, path); + if (predicate(value, path)) { + baseSet(result2, castPath(path, object), value); + } + } + return result2; + } + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + function basePullAll(array, values2, iteratee2, comparator) { + var indexOf2 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values2.length, seen = array; + if (array === values2) { + values2 = copyArray(values2); + } + if (iteratee2) { + seen = arrayMap(array, baseUnary(iteratee2)); + } + while (++index < length) { + var fromIndex = 0, value = values2[index], computed = iteratee2 ? iteratee2(value) : value; + while ((fromIndex = indexOf2(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; + } + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, lastIndex = length - 1; + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; + } + function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); + } + function baseRange(start, end, step, fromRight) { + var index = -1, length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), result2 = Array2(length); + while (length--) { + result2[fromRight ? length : ++index] = start; + start += step; + } + return result2; + } + function baseRepeat(string, n2) { + var result2 = ""; + if (!string || n2 < 1 || n2 > MAX_SAFE_INTEGER) { + return result2; + } + do { + if (n2 % 2) { + result2 += string; + } + n2 = nativeFloor(n2 / 2); + if (n2) { + string += string; + } + } while (n2); + return result2; + } + function baseRest(func, start) { + return setToString(overRest(func, start, identity3), func + ""); + } + function baseSample(collection) { + return arraySample(values(collection)); + } + function baseSampleSize(collection, n2) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n2, 0, array.length)); + } + function baseSet(object, path, value, customizer) { + if (!isObject2(object)) { + return object; + } + path = castPath(path, object); + var index = -1, length = path.length, lastIndex = length - 1, nested = object; + while (nested != null && ++index < length) { + var key = toKey(path[index]), newValue = value; + if (key === "__proto__" || key === "constructor" || key === "prototype") { + return object; + } + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined2; + if (newValue === undefined2) { + newValue = isObject2(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {}; + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } + var baseSetData = !metaMap ? identity3 : function(func, data) { + metaMap.set(func, data); + return func; + }; + var baseSetToString = !defineProperty ? identity3 : function(func, string) { + return defineProperty(func, "toString", { + "configurable": true, + "enumerable": false, + "value": constant(string), + "writable": true + }); + }; + function baseShuffle(collection) { + return shuffleSelf(values(collection)); + } + function baseSlice(array, start, end) { + var index = -1, length = array.length; + if (start < 0) { + start = -start > length ? 0 : length + start; + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : end - start >>> 0; + start >>>= 0; + var result2 = Array2(length); + while (++index < length) { + result2[index] = array[index + start]; + } + return result2; + } + function baseSome(collection, predicate) { + var result2; + baseEach(collection, function(value, index, collection2) { + result2 = predicate(value, index, collection2); + return !result2; + }); + return !!result2; + } + function baseSortedIndex(array, value, retHighest) { + var low = 0, high = array == null ? low : array.length; + if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = low + high >>> 1, computed = array[mid]; + if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity3, retHighest); + } + function baseSortedIndexBy(array, value, iteratee2, retHighest) { + var low = 0, high = array == null ? 0 : array.length; + if (high === 0) { + return 0; + } + value = iteratee2(value); + var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol(value), valIsUndefined = value === undefined2; + while (low < high) { + var mid = nativeFloor((low + high) / 2), computed = iteratee2(array[mid]), othIsDefined = computed !== undefined2, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol(computed); + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? computed <= value : computed < value; + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + function baseSortedUniq(array, iteratee2) { + var index = -1, length = array.length, resIndex = 0, result2 = []; + while (++index < length) { + var value = array[index], computed = iteratee2 ? iteratee2(value) : value; + if (!index || !eq(computed, seen)) { + var seen = computed; + result2[resIndex++] = value === 0 ? 0 : value; + } + } + return result2; + } + function baseToNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; + } + function baseToString(value) { + if (typeof value == "string") { + return value; + } + if (isArray2(value)) { + return arrayMap(value, baseToString) + ""; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ""; + } + var result2 = value + ""; + return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; + } + function baseUniq(array, iteratee2, comparator) { + var index = -1, includes2 = arrayIncludes, length = array.length, isCommon = true, result2 = [], seen = result2; + if (comparator) { + isCommon = false; + includes2 = arrayIncludesWith; + } else if (length >= LARGE_ARRAY_SIZE) { + var set3 = iteratee2 ? null : createSet(array); + if (set3) { + return setToArray(set3); + } + isCommon = false; + includes2 = cacheHas; + seen = new SetCache(); + } else { + seen = iteratee2 ? [] : result2; + } + outer: + while (++index < length) { + var value = array[index], computed = iteratee2 ? iteratee2(value) : value; + value = comparator || value !== 0 ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee2) { + seen.push(computed); + } + result2.push(value); + } else if (!includes2(seen, computed, comparator)) { + if (seen !== result2) { + seen.push(computed); + } + result2.push(value); + } + } + return result2; + } + function baseUnset(object, path) { + path = castPath(path, object); + object = parent2(object, path); + return object == null || delete object[toKey(last5(path))]; + } + function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); + } + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, index = fromRight ? length : -1; + while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) { + } + return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index); + } + function baseWrapperValue(value, actions) { + var result2 = value; + if (result2 instanceof LazyWrapper) { + result2 = result2.value(); + } + return arrayReduce(actions, function(result3, action) { + return action.func.apply(action.thisArg, arrayPush([result3], action.args)); + }, result2); + } + function baseXor(arrays, iteratee2, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, result2 = Array2(length); + while (++index < length) { + var array = arrays[index], othIndex = -1; + while (++othIndex < length) { + if (othIndex != index) { + result2[index] = baseDifference(result2[index] || array, arrays[othIndex], iteratee2, comparator); + } + } + } + return baseUniq(baseFlatten(result2, 1), iteratee2, comparator); + } + function baseZipObject(props, values2, assignFunc) { + var index = -1, length = props.length, valsLength = values2.length, result2 = {}; + while (++index < length) { + var value = index < valsLength ? values2[index] : undefined2; + assignFunc(result2, props[index], value); + } + return result2; + } + function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; + } + function castFunction(value) { + return typeof value == "function" ? value : identity3; + } + function castPath(value, object) { + if (isArray2(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString2(value)); + } + var castRest = baseRest; + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined2 ? length : end; + return !start && end >= length ? array : baseSlice(array, start, end); + } + var clearTimeout2 = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, result2 = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + buffer.copy(result2); + return result2; + } + function cloneArrayBuffer(arrayBuffer) { + var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer)); + return result2; + } + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + function cloneRegExp(regexp) { + var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result2.lastIndex = regexp.lastIndex; + return result2; + } + function cloneSymbol(symbol) { + return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {}; + } + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined2, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol(value); + var othIsDefined = other !== undefined2, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol(other); + if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) { + return 1; + } + if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) { + return -1; + } + } + return 0; + } + function compareMultiple(object, other, orders) { + var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length; + while (++index < length) { + var result2 = compareAscending(objCriteria[index], othCriteria[index]); + if (result2) { + if (index >= ordersLength) { + return result2; + } + var order = orders[index]; + return result2 * (order == "desc" ? -1 : 1); + } + } + return object.index - other.index; + } + function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried; + while (++leftIndex < leftLength) { + result2[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result2[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result2[leftIndex++] = args[argsIndex++]; + } + return result2; + } + function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried; + while (++argsIndex < rangeLength) { + result2[argsIndex] = args[argsIndex]; + } + var offset3 = argsIndex; + while (++rightIndex < rightLength) { + result2[offset3 + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result2[offset3 + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result2; + } + function copyArray(source, array) { + var index = -1, length = source.length; + array || (array = Array2(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + var index = -1, length = props.length; + while (++index < length) { + var key = props[index]; + var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined2; + if (newValue === undefined2) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } + function createAggregator(setter, initializer) { + return function(collection, iteratee2) { + var func = isArray2(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {}; + return func(collection, setter, getIteratee(iteratee2, 2), accumulator); + }; + } + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined2, guard = length > 2 ? sources[2] : undefined2; + customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : undefined2; + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined2 : customizer; + length = 1; + } + object = Object2(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee2) { + if (collection == null) { + return collection; + } + if (!isArrayLike2(collection)) { + return eachFunc(collection, iteratee2); + } + var length = collection.length, index = fromRight ? length : -1, iterable = Object2(collection); + while (fromRight ? index-- : ++index < length) { + if (iteratee2(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + function createBaseFor(fromRight) { + return function(object, iteratee2, keysFunc) { + var index = -1, iterable = Object2(object), props = keysFunc(object), length = props.length; + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee2(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); + function wrapper() { + var fn = this && this !== root && this instanceof wrapper ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; + } + function createCaseFirst(methodName) { + return function(string) { + string = toString2(string); + var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined2; + var chr = strSymbols ? strSymbols[0] : string.charAt(0); + var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1); + return chr[methodName]() + trailing; + }; + } + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, "")), callback, ""); + }; + } + function createCtor(Ctor) { + return function() { + var args = arguments; + switch (args.length) { + case 0: + return new Ctor(); + case 1: + return new Ctor(args[0]); + case 2: + return new Ctor(args[0], args[1]); + case 3: + return new Ctor(args[0], args[1], args[2]); + case 4: + return new Ctor(args[0], args[1], args[2], args[3]); + case 5: + return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: + return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: + return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args); + return isObject2(result2) ? result2 : thisBinding; + }; + } + function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + function wrapper() { + var length = arguments.length, args = Array2(length), index = length, placeholder = getHolder(wrapper); + while (index--) { + args[index] = arguments[index]; + } + var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder); + length -= holders.length; + if (length < arity) { + return createRecurry( + func, + bitmask, + createHybrid, + wrapper.placeholder, + undefined2, + args, + holders, + undefined2, + undefined2, + arity - length + ); + } + var fn = this && this !== root && this instanceof wrapper ? Ctor : func; + return apply(fn, this, args); + } + return wrapper; + } + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object2(collection); + if (!isArrayLike2(collection)) { + var iteratee2 = getIteratee(predicate, 3); + collection = keys2(collection); + predicate = function(key) { + return iteratee2(iterable[key], key, iterable); + }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee2 ? collection[index] : index] : undefined2; + }; + } + function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, index = length, prereq = LodashWrapper.prototype.thru; + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == "wrapper") { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + var funcName = getFuncName(func), data = funcName == "wrapper" ? getData(func) : undefined2; + if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func); + } + } + return function() { + var args = arguments, value = args[0]; + if (wrapper && args.length == 1 && isArray2(value)) { + return wrapper.plant(value).value(); + } + var index2 = 0, result2 = length ? funcs[index2].apply(this, args) : value; + while (++index2 < length) { + result2 = funcs[index2].call(this, result2); + } + return result2; + }; + }); + } + function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined2 : createCtor(func); + function wrapper() { + var length = arguments.length, args = Array2(length), index = length; + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, + bitmask, + createHybrid, + wrapper.placeholder, + thisArg, + args, + newHolders, + argPos, + ary2, + arity - length + ); + } + var thisBinding = isBind ? thisArg : this, fn = isBindKey ? thisBinding[func] : func; + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary2 < length) { + args.length = ary2; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; + } + function createInverter(setter, toIteratee) { + return function(object, iteratee2) { + return baseInverter(object, setter, toIteratee(iteratee2), {}); + }; + } + function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result2; + if (value === undefined2 && other === undefined2) { + return defaultValue; + } + if (value !== undefined2) { + result2 = value; + } + if (other !== undefined2) { + if (result2 === undefined2) { + return other; + } + if (typeof value == "string" || typeof other == "string") { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result2 = operator(value, other); + } + return result2; + }; + } + function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee2) { + return apply(iteratee2, thisArg, args); + }); + }); + }); + } + function createPadding(length, chars) { + chars = chars === undefined2 ? " " : baseToString(chars); + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result2 = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length).join("") : result2.slice(0, length); + } + function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); + function wrapper() { + var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn = this && this !== root && this instanceof wrapper ? Ctor : func; + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); + } + return wrapper; + } + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != "number" && isIterateeCall(start, end, step)) { + end = step = undefined2; + } + start = toFinite(start); + if (end === undefined2) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined2 ? start < end ? 1 : -1 : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } + function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == "string" && typeof other == "string")) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; + } + function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined2, newHoldersRight = isCurry ? undefined2 : holders, newPartials = isCurry ? partials : undefined2, newPartialsRight = isCurry ? undefined2 : partials; + bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG; + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, + bitmask, + thisArg, + newPartials, + newHolders, + newPartialsRight, + newHoldersRight, + argPos, + ary2, + arity + ]; + var result2 = wrapFunc.apply(undefined2, newData); + if (isLaziable(func)) { + setData(result2, newData); + } + result2.placeholder = placeholder; + return setWrapToString(result2, func, bitmask); + } + function createRound(methodName) { + var func = Math2[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision && nativeIsFinite(number)) { + var pair = (toString2(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision)); + pair = (toString2(value) + "e").split("e"); + return +(pair[0] + "e" + (+pair[1] - precision)); + } + return func(number); + }; + } + var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop3 : function(values2) { + return new Set2(values2); + }; + function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; + } + function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined2; + } + ary2 = ary2 === undefined2 ? ary2 : nativeMax(toInteger(ary2), 0); + arity = arity === undefined2 ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, holdersRight = holders; + partials = holders = undefined2; + } + var data = isBindKey ? undefined2 : getData(func); + var newData = [ + func, + bitmask, + thisArg, + partials, + holders, + partialsRight, + holdersRight, + argPos, + ary2, + arity + ]; + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined2 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0); + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result2 = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result2 = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result2 = createPartial(func, bitmask, thisArg, partials); + } else { + result2 = createHybrid.apply(undefined2, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result2, newData), func, bitmask); + } + function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined2 || eq(objValue, objectProto[key]) && !hasOwnProperty2.call(object, key)) { + return srcValue; + } + return objValue; + } + function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject2(objValue) && isObject2(srcValue)) { + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined2, customDefaultsMerge, stack); + stack["delete"](srcValue); + } + return objValue; + } + function customOmitClone(value) { + return isPlainObject3(value) ? undefined2 : value; + } + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length; + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined2; + stack.set(array, other); + stack.set(other, array); + while (++index < arrLength) { + var arrValue = array[index], othValue = other[index]; + if (customizer) { + var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined2) { + if (compared) { + continue; + } + result2 = false; + break; + } + if (seen) { + if (!arraySome(other, function(othValue2, othIndex) { + if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result2 = false; + break; + } + } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + result2 = false; + break; + } + } + stack["delete"](array); + stack["delete"](other); + return result2; + } + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) { + return false; + } + object = object.buffer; + other = other.buffer; + case arrayBufferTag: + if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) { + return false; + } + return true; + case boolTag: + case dateTag: + case numberTag: + return eq(+object, +other); + case errorTag: + return object.name == other.name && object.message == other.message; + case regexpTag: + case stringTag: + return object == other + ""; + case mapTag: + var convert = mapToArray; + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + if (object.size != other.size && !isPartial) { + return false; + } + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + stack.set(object, other); + var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack["delete"](object); + return result2; + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; + } + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length; + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty2.call(other, key))) { + return false; + } + } + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result2 = true; + stack.set(object, other); + stack.set(other, object); + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], othValue = other[key]; + if (customizer) { + var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack); + } + if (!(compared === undefined2 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { + result2 = false; + break; + } + skipCtor || (skipCtor = key == "constructor"); + } + if (result2 && !skipCtor) { + var objCtor = object.constructor, othCtor = other.constructor; + if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) { + result2 = false; + } + } + stack["delete"](object); + stack["delete"](other); + return result2; + } + function flatRest(func) { + return setToString(overRest(func, undefined2, flatten2), func + ""); + } + function getAllKeys(object) { + return baseGetAllKeys(object, keys2, getSymbols); + } + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + var getData = !metaMap ? noop3 : function(func) { + return metaMap.get(func); + }; + function getFuncName(func) { + var result2 = func.name + "", array = realNames[result2], length = hasOwnProperty2.call(realNames, result2) ? array.length : 0; + while (length--) { + var data = array[length], otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result2; + } + function getHolder(func) { + var object = hasOwnProperty2.call(lodash, "placeholder") ? lodash : func; + return object.placeholder; + } + function getIteratee() { + var result2 = lodash.iteratee || iteratee; + result2 = result2 === iteratee ? baseIteratee : result2; + return arguments.length ? result2(arguments[0], arguments[1]) : result2; + } + function getMapData(map3, key) { + var data = map3.__data__; + return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; + } + function getMatchData(object) { + var result2 = keys2(object), length = result2.length; + while (length--) { + var key = result2[length], value = object[key]; + result2[length] = [key, value, isStrictComparable(value)]; + } + return result2; + } + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined2; + } + function getRawTag(value) { + var isOwn = hasOwnProperty2.call(value, symToStringTag), tag = value[symToStringTag]; + try { + value[symToStringTag] = undefined2; + var unmasked = true; + } catch (e2) { + } + var result2 = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result2; + } + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object2(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result2 = []; + while (object) { + arrayPush(result2, getSymbols(object)); + object = getPrototype(object); + } + return result2; + }; + var getTag = baseGetTag; + if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) { + getTag = function(value) { + var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined2, ctorString = Ctor ? toSource(Ctor) : ""; + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: + return dataViewTag; + case mapCtorString: + return mapTag; + case promiseCtorString: + return promiseTag; + case setCtorString: + return setTag; + case weakMapCtorString: + return weakMapTag; + } + } + return result2; + }; + } + function getView(start, end, transforms) { + var index = -1, length = transforms.length; + while (++index < length) { + var data = transforms[index], size3 = data.size; + switch (data.type) { + case "drop": + start += size3; + break; + case "dropRight": + end -= size3; + break; + case "take": + end = nativeMin(end, start + size3); + break; + case "takeRight": + start = nativeMax(start, end - size3); + break; + } + } + return { "start": start, "end": end }; + } + function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; + } + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + var index = -1, length = path.length, result2 = false; + while (++index < length) { + var key = toKey(path[index]); + if (!(result2 = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result2 || ++index != length) { + return result2; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && (isArray2(object) || isArguments(object)); + } + function initCloneArray(array) { + var length = array.length, result2 = new array.constructor(length); + if (length && typeof array[0] == "string" && hasOwnProperty2.call(array, "index")) { + result2.index = array.index; + result2.input = array.input; + } + return result2; + } + function initCloneObject(object) { + return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {}; + } + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + case boolTag: + case dateTag: + return new Ctor(+object); + case dataViewTag: + return cloneDataView(object, isDeep); + case float32Tag: + case float64Tag: + case int8Tag: + case int16Tag: + case int32Tag: + case uint8Tag: + case uint8ClampedTag: + case uint16Tag: + case uint32Tag: + return cloneTypedArray(object, isDeep); + case mapTag: + return new Ctor(); + case numberTag: + case stringTag: + return new Ctor(object); + case regexpTag: + return cloneRegExp(object); + case setTag: + return new Ctor(); + case symbolTag: + return cloneSymbol(object); + } + } + function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? "& " : "") + details[lastIndex]; + details = details.join(length > 2 ? ", " : " "); + return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n"); + } + function isFlattenable(value) { + return isArray2(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]); + } + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); + } + function isIterateeCall(value, index, object) { + if (!isObject2(object)) { + return false; + } + var type = typeof index; + if (type == "number" ? isArrayLike2(object) && isIndex(index, object.length) : type == "string" && index in object) { + return eq(object[index], value); + } + return false; + } + function isKey(value, object) { + if (isArray2(value)) { + return false; + } + var type = typeof value; + if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object); + } + function isKeyable(value) { + var type = typeof value; + return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; + } + function isLaziable(func) { + var funcName = getFuncName(func), other = lodash[funcName]; + if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) { + return false; + } + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; + } + function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; + } + var isMaskable = coreJsData ? isFunction2 : stubFalse; + function isPrototype(value) { + var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; + return value === proto; + } + function isStrictComparable(value) { + return value === value && !isObject2(value); + } + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && (srcValue !== undefined2 || key in Object2(object)); + }; + } + function memoizeCapped(func) { + var result2 = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + var cache = result2.cache; + return result2; + } + function mergeData(data, source) { + var bitmask = data[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG; + if (!(isCommon || isCombo)) { + return data; + } + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + value = source[7]; + if (value) { + data[7] = value; + } + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + if (data[9] == null) { + data[9] = source[9]; + } + data[0] = source[0]; + data[1] = newBitmask; + return data; + } + function nativeKeysIn(object) { + var result2 = []; + if (object != null) { + for (var key in Object2(object)) { + result2.push(key); + } + } + return result2; + } + function objectToString(value) { + return nativeObjectToString.call(value); + } + function overRest(func, start, transform3) { + start = nativeMax(start === undefined2 ? func.length - 1 : start, 0); + return function() { + var args = arguments, index = -1, length = nativeMax(args.length - start, 0), array = Array2(length); + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array2(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform3(array); + return apply(func, this, otherArgs); + }; + } + function parent2(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + function reorder(array, indexes) { + var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array); + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined2; + } + return array; + } + function safeGet(object, key) { + if (key === "constructor" && typeof object[key] === "function") { + return; + } + if (key == "__proto__") { + return; + } + return object[key]; + } + var setData = shortOut(baseSetData); + var setTimeout2 = ctxSetTimeout || function(func, wait2) { + return root.setTimeout(func, wait2); + }; + var setToString = shortOut(baseSetToString); + function setWrapToString(wrapper, reference, bitmask) { + var source = reference + ""; + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); + } + function shortOut(func) { + var count = 0, lastCalled = 0; + return function() { + var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined2, arguments); + }; + } + function shuffleSelf(array, size3) { + var index = -1, length = array.length, lastIndex = length - 1; + size3 = size3 === undefined2 ? length : size3; + while (++index < size3) { + var rand = baseRandom(index, lastIndex), value = array[rand]; + array[rand] = array[index]; + array[index] = value; + } + array.length = size3; + return array; + } + var stringToPath = memoizeCapped(function(string) { + var result2 = []; + if (string.charCodeAt(0) === 46) { + result2.push(""); + } + string.replace(rePropName, function(match, number, quote, subString) { + result2.push(quote ? subString.replace(reEscapeChar, "$1") : number || match); + }); + return result2; + }); + function toKey(value) { + if (typeof value == "string" || isSymbol(value)) { + return value; + } + var result2 = value + ""; + return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; + } + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e2) { + } + try { + return func + ""; + } catch (e2) { + } + } + return ""; + } + function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = "_." + pair[0]; + if (bitmask & pair[1] && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); + } + function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result2.__actions__ = copyArray(wrapper.__actions__); + result2.__index__ = wrapper.__index__; + result2.__values__ = wrapper.__values__; + return result2; + } + function chunk(array, size3, guard) { + if (guard ? isIterateeCall(array, size3, guard) : size3 === undefined2) { + size3 = 1; + } else { + size3 = nativeMax(toInteger(size3), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size3 < 1) { + return []; + } + var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size3)); + while (index < length) { + result2[resIndex++] = baseSlice(array, index, index += size3); + } + return result2; + } + function compact(array) { + var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = []; + while (++index < length) { + var value = array[index]; + if (value) { + result2[resIndex++] = value; + } + } + return result2; + } + function concat2() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array2(length - 1), array = arguments[0], index = length; + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray2(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + } + var difference2 = baseRest(function(array, values2) { + return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : []; + }); + var differenceBy3 = baseRest(function(array, values2) { + var iteratee2 = last5(values2); + if (isArrayLikeObject(iteratee2)) { + iteratee2 = undefined2; + } + return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : []; + }); + var differenceWith = baseRest(function(array, values2) { + var comparator = last5(values2); + if (isArrayLikeObject(comparator)) { + comparator = undefined2; + } + return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined2, comparator) : []; + }); + function drop(array, n2, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); + return baseSlice(array, n2 < 0 ? 0 : n2, length); + } + function dropRight(array, n2, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); + n2 = length - n2; + return baseSlice(array, 0, n2 < 0 ? 0 : n2); + } + function dropRightWhile(array, predicate) { + return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : []; + } + function dropWhile(array, predicate) { + return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : []; + } + function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != "number" && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, getIteratee(predicate, 3), index); + } + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length - 1; + if (fromIndex !== undefined2) { + index = toInteger(fromIndex); + index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return baseFindIndex(array, getIteratee(predicate, 3), index, true); + } + function flatten2(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; + } + function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + depth = depth === undefined2 ? 1 : toInteger(depth); + return baseFlatten(array, depth); + } + function fromPairs(pairs) { + var index = -1, length = pairs == null ? 0 : pairs.length, result2 = {}; + while (++index < length) { + var pair = pairs[index]; + result2[pair[0]] = pair[1]; + } + return result2; + } + function head(array) { + return array && array.length ? array[0] : undefined2; + } + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); + } + function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; + } + var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : []; + }); + var intersectionBy = baseRest(function(arrays) { + var iteratee2 = last5(arrays), mapped = arrayMap(arrays, castArrayLikeObject); + if (iteratee2 === last5(mapped)) { + iteratee2 = undefined2; + } else { + mapped.pop(); + } + return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : []; + }); + var intersectionWith = baseRest(function(arrays) { + var comparator = last5(arrays), mapped = arrayMap(arrays, castArrayLikeObject); + comparator = typeof comparator == "function" ? comparator : undefined2; + if (comparator) { + mapped.pop(); + } + return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : []; + }); + function join(array, separator) { + return array == null ? "" : nativeJoin.call(array, separator); + } + function last5(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined2; + } + function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined2) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true); + } + function nth(array, n2) { + return array && array.length ? baseNth(array, toInteger(n2)) : undefined2; + } + var pull = baseRest(pullAll); + function pullAll(array, values2) { + return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array; + } + function pullAllBy(array, values2, iteratee2) { + return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array; + } + function pullAllWith(array, values2, comparator) { + return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined2, comparator) : array; + } + var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, result2 = baseAt(array, indexes); + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); + return result2; + }); + function remove(array, predicate) { + var result2 = []; + if (!(array && array.length)) { + return result2; + } + var index = -1, indexes = [], length = array.length; + predicate = getIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result2.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result2; + } + function reverse(array) { + return array == null ? array : nativeReverse.call(array); + } + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != "number" && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } else { + start = start == null ? 0 : toInteger(start); + end = end === undefined2 ? length : toInteger(end); + } + return baseSlice(array, start, end); + } + function sortedIndex(array, value) { + return baseSortedIndex(array, value); + } + function sortedIndexBy(array, value, iteratee2) { + return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2)); + } + function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; + } + } + return -1; + } + function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); + } + function sortedLastIndexBy(array, value, iteratee2) { + return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true); + } + function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; + } + } + return -1; + } + function sortedUniq(array) { + return array && array.length ? baseSortedUniq(array) : []; + } + function sortedUniqBy(array, iteratee2) { + return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : []; + } + function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; + } + function take(array, n2, guard) { + if (!(array && array.length)) { + return []; + } + n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); + return baseSlice(array, 0, n2 < 0 ? 0 : n2); + } + function takeRight(array, n2, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n2 = guard || n2 === undefined2 ? 1 : toInteger(n2); + n2 = length - n2; + return baseSlice(array, n2 < 0 ? 0 : n2, length); + } + function takeRightWhile(array, predicate) { + return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : []; + } + function takeWhile(array, predicate) { + return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : []; + } + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); + var unionBy = baseRest(function(arrays) { + var iteratee2 = last5(arrays); + if (isArrayLikeObject(iteratee2)) { + iteratee2 = undefined2; + } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)); + }); + var unionWith = baseRest(function(arrays) { + var comparator = last5(arrays); + comparator = typeof comparator == "function" ? comparator : undefined2; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator); + }); + function uniq(array) { + return array && array.length ? baseUniq(array) : []; + } + function uniqBy3(array, iteratee2) { + return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : []; + } + function uniqWith(array, comparator) { + comparator = typeof comparator == "function" ? comparator : undefined2; + return array && array.length ? baseUniq(array, undefined2, comparator) : []; + } + function unzip(array) { + if (!(array && array.length)) { + return []; + } + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); + }); + } + function unzipWith(array, iteratee2) { + if (!(array && array.length)) { + return []; + } + var result2 = unzip(array); + if (iteratee2 == null) { + return result2; + } + return arrayMap(result2, function(group) { + return apply(iteratee2, undefined2, group); + }); + } + var without = baseRest(function(array, values2) { + return isArrayLikeObject(array) ? baseDifference(array, values2) : []; + }); + var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); + }); + var xorBy = baseRest(function(arrays) { + var iteratee2 = last5(arrays); + if (isArrayLikeObject(iteratee2)) { + iteratee2 = undefined2; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2)); + }); + var xorWith = baseRest(function(arrays) { + var comparator = last5(arrays); + comparator = typeof comparator == "function" ? comparator : undefined2; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator); + }); + var zip = baseRest(unzip); + function zipObject(props, values2) { + return baseZipObject(props || [], values2 || [], assignValue); + } + function zipObjectDeep(props, values2) { + return baseZipObject(props || [], values2 || [], baseSet); + } + var zipWith = baseRest(function(arrays) { + var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined2; + iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined2; + return unzipWith(arrays, iteratee2); + }); + function chain(value) { + var result2 = lodash(value); + result2.__chain__ = true; + return result2; + } + function tap(value, interceptor) { + interceptor(value); + return value; + } + function thru(value, interceptor) { + return interceptor(value); + } + var wrapperAt = flatRest(function(paths) { + var length = paths.length, start = length ? paths[0] : 0, value = this.__wrapped__, interceptor = function(object) { + return baseAt(object, paths); + }; + if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); + } + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + "func": thru, + "args": [interceptor], + "thisArg": undefined2 + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined2); + } + return array; + }); + }); + function wrapperChain() { + return chain(this); + } + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + function wrapperNext() { + if (this.__values__ === undefined2) { + this.__values__ = toArray(this.value()); + } + var done = this.__index__ >= this.__values__.length, value = done ? undefined2 : this.__values__[this.__index__++]; + return { "done": done, "value": value }; + } + function wrapperToIterator() { + return this; + } + function wrapperPlant(value) { + var result2, parent3 = this; + while (parent3 instanceof baseLodash) { + var clone2 = wrapperClone(parent3); + clone2.__index__ = 0; + clone2.__values__ = undefined2; + if (result2) { + previous.__wrapped__ = clone2; + } else { + result2 = clone2; + } + var previous = clone2; + parent3 = parent3.__wrapped__; + } + previous.__wrapped__ = value; + return result2; + } + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ + "func": thru, + "args": [reverse], + "thisArg": undefined2 + }); + return new LodashWrapper(wrapped, this.__chain__); + } + return this.thru(reverse); + } + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + var countBy = createAggregator(function(result2, value, key) { + if (hasOwnProperty2.call(result2, key)) { + ++result2[key]; + } else { + baseAssignValue(result2, key, 1); + } + }); + function every(collection, predicate, guard) { + var func = isArray2(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined2; + } + return func(collection, getIteratee(predicate, 3)); + } + function filter3(collection, predicate) { + var func = isArray2(collection) ? arrayFilter : baseFilter; + return func(collection, getIteratee(predicate, 3)); + } + var find2 = createFind(findIndex); + var findLast = createFind(findLastIndex); + function flatMap(collection, iteratee2) { + return baseFlatten(map2(collection, iteratee2), 1); + } + function flatMapDeep(collection, iteratee2) { + return baseFlatten(map2(collection, iteratee2), INFINITY); + } + function flatMapDepth(collection, iteratee2, depth) { + depth = depth === undefined2 ? 1 : toInteger(depth); + return baseFlatten(map2(collection, iteratee2), depth); + } + function forEach(collection, iteratee2) { + var func = isArray2(collection) ? arrayEach : baseEach; + return func(collection, getIteratee(iteratee2, 3)); + } + function forEachRight(collection, iteratee2) { + var func = isArray2(collection) ? arrayEachRight : baseEachRight; + return func(collection, getIteratee(iteratee2, 3)); + } + var groupBy4 = createAggregator(function(result2, value, key) { + if (hasOwnProperty2.call(result2, key)) { + result2[key].push(value); + } else { + baseAssignValue(result2, key, [value]); + } + }); + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike2(collection) ? collection : values(collection); + fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0; + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString2(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1; + } + var invokeMap = baseRest(function(collection, path, args) { + var index = -1, isFunc = typeof path == "function", result2 = isArrayLike2(collection) ? Array2(collection.length) : []; + baseEach(collection, function(value) { + result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); + }); + return result2; + }); + var keyBy = createAggregator(function(result2, value, key) { + baseAssignValue(result2, key, value); + }); + function map2(collection, iteratee2) { + var func = isArray2(collection) ? arrayMap : baseMap; + return func(collection, getIteratee(iteratee2, 3)); + } + function orderBy(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (!isArray2(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + orders = guard ? undefined2 : orders; + if (!isArray2(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseOrderBy(collection, iteratees, orders); + } + var partition5 = createAggregator(function(result2, value, key) { + result2[key ? 0 : 1].push(value); + }, function() { + return [[], []]; + }); + function reduce(collection, iteratee2, accumulator) { + var func = isArray2(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3; + return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach); + } + function reduceRight(collection, iteratee2, accumulator) { + var func = isArray2(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3; + return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight); + } + function reject(collection, predicate) { + var func = isArray2(collection) ? arrayFilter : baseFilter; + return func(collection, negate(getIteratee(predicate, 3))); + } + function sample(collection) { + var func = isArray2(collection) ? arraySample : baseSample; + return func(collection); + } + function sampleSize(collection, n2, guard) { + if (guard ? isIterateeCall(collection, n2, guard) : n2 === undefined2) { + n2 = 1; + } else { + n2 = toInteger(n2); + } + var func = isArray2(collection) ? arraySampleSize : baseSampleSize; + return func(collection, n2); + } + function shuffle(collection) { + var func = isArray2(collection) ? arrayShuffle : baseShuffle; + return func(collection); + } + function size2(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike2(collection)) { + return isString2(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; + } + function some(collection, predicate, guard) { + var func = isArray2(collection) ? arraySome : baseSome; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined2; + } + return func(collection, getIteratee(predicate, 3)); + } + var sortBy2 = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); + }); + var now2 = ctxNow || function() { + return root.Date.now(); + }; + function after(n2, func) { + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + n2 = toInteger(n2); + return function() { + if (--n2 < 1) { + return func.apply(this, arguments); + } + }; + } + function ary(func, n2, guard) { + n2 = guard ? undefined2 : n2; + n2 = func && n2 == null ? func.length : n2; + return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n2); + } + function before(n2, func) { + var result2; + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + n2 = toInteger(n2); + return function() { + if (--n2 > 0) { + result2 = func.apply(this, arguments); + } + if (n2 <= 1) { + func = undefined2; + } + return result2; + }; + } + var bind2 = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind2)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); + }); + var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); + }); + function curry(func, arity, guard) { + arity = guard ? undefined2 : arity; + var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); + result2.placeholder = curry.placeholder; + return result2; + } + function curryRight(func, arity, guard) { + arity = guard ? undefined2 : arity; + var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); + result2.placeholder = curryRight.placeholder; + return result2; + } + function debounce3(func, wait2, options) { + var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + wait2 = toNumber(wait2) || 0; + if (isObject2(options)) { + leading = !!options.leading; + maxing = "maxWait" in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait2) : maxWait; + trailing = "trailing" in options ? !!options.trailing : trailing; + } + function invokeFunc(time2) { + var args = lastArgs, thisArg = lastThis; + lastArgs = lastThis = undefined2; + lastInvokeTime = time2; + result2 = func.apply(thisArg, args); + return result2; + } + function leadingEdge(time2) { + lastInvokeTime = time2; + timerId = setTimeout2(timerExpired, wait2); + return leading ? invokeFunc(time2) : result2; + } + function remainingWait(time2) { + var timeSinceLastCall = time2 - lastCallTime, timeSinceLastInvoke = time2 - lastInvokeTime, timeWaiting = wait2 - timeSinceLastCall; + return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; + } + function shouldInvoke(time2) { + var timeSinceLastCall = time2 - lastCallTime, timeSinceLastInvoke = time2 - lastInvokeTime; + return lastCallTime === undefined2 || timeSinceLastCall >= wait2 || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; + } + function timerExpired() { + var time2 = now2(); + if (shouldInvoke(time2)) { + return trailingEdge(time2); + } + timerId = setTimeout2(timerExpired, remainingWait(time2)); + } + function trailingEdge(time2) { + timerId = undefined2; + if (trailing && lastArgs) { + return invokeFunc(time2); + } + lastArgs = lastThis = undefined2; + return result2; + } + function cancel() { + if (timerId !== undefined2) { + clearTimeout2(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined2; + } + function flush2() { + return timerId === undefined2 ? result2 : trailingEdge(now2()); + } + function debounced() { + var time2 = now2(), isInvoking = shouldInvoke(time2); + lastArgs = arguments; + lastThis = this; + lastCallTime = time2; + if (isInvoking) { + if (timerId === undefined2) { + return leadingEdge(lastCallTime); + } + if (maxing) { + clearTimeout2(timerId); + timerId = setTimeout2(timerExpired, wait2); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined2) { + timerId = setTimeout2(timerExpired, wait2); + } + return result2; + } + debounced.cancel = cancel; + debounced.flush = flush2; + return debounced; + } + var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); + }); + var delay = baseRest(function(func, wait2, args) { + return baseDelay(func, toNumber(wait2) || 0, args); + }); + function flip2(func) { + return createWrap(func, WRAP_FLIP_FLAG); + } + function memoize(func, resolver) { + if (typeof func != "function" || resolver != null && typeof resolver != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache; + if (cache.has(key)) { + return cache.get(key); + } + var result2 = func.apply(this, args); + memoized.cache = cache.set(key, result2) || cache; + return result2; + }; + memoized.cache = new (memoize.Cache || MapCache)(); + return memoized; + } + memoize.Cache = MapCache; + function negate(predicate) { + if (typeof predicate != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: + return !predicate.call(this); + case 1: + return !predicate.call(this, args[0]); + case 2: + return !predicate.call(this, args[0], args[1]); + case 3: + return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; + } + function once(func) { + return before(2, func); + } + var overArgs = castRest(function(func, transforms) { + transforms = transforms.length == 1 && isArray2(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); + var funcsLength = transforms.length; + return baseRest(function(args) { + var index = -1, length = nativeMin(args.length, funcsLength); + while (++index < length) { + args[index] = transforms[index].call(this, args[index]); + } + return apply(func, this, args); + }); + }); + var partial = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partial)); + return createWrap(func, WRAP_PARTIAL_FLAG, undefined2, partials, holders); + }); + var partialRight = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partialRight)); + return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined2, partials, holders); + }); + var rearg = flatRest(function(func, indexes) { + return createWrap(func, WRAP_REARG_FLAG, undefined2, undefined2, undefined2, indexes); + }); + function rest(func, start) { + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + start = start === undefined2 ? start : toInteger(start); + return baseRest(func, start); + } + function spread(func, start) { + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + start = start == null ? 0 : nativeMax(toInteger(start), 0); + return baseRest(function(args) { + var array = args[start], otherArgs = castSlice(args, 0, start); + if (array) { + arrayPush(otherArgs, array); + } + return apply(func, this, otherArgs); + }); + } + function throttle(func, wait2, options) { + var leading = true, trailing = true; + if (typeof func != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + if (isObject2(options)) { + leading = "leading" in options ? !!options.leading : leading; + trailing = "trailing" in options ? !!options.trailing : trailing; + } + return debounce3(func, wait2, { + "leading": leading, + "maxWait": wait2, + "trailing": trailing + }); + } + function unary(func) { + return ary(func, 1); + } + function wrap(value, wrapper) { + return partial(castFunction(wrapper), value); + } + function castArray() { + if (!arguments.length) { + return []; + } + var value = arguments[0]; + return isArray2(value) ? value : [value]; + } + function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); + } + function cloneWith(value, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); + } + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); + } + function cloneDeepWith(value, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); + } + function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys2(source)); + } + function eq(value, other) { + return value === other || value !== value && other !== other; + } + var gt2 = createRelationalOperation(baseGt); + var gte = createRelationalOperation(function(value, other) { + return value >= other; + }); + var isArguments = baseIsArguments(function() { + return arguments; + }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty2.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); + }; + var isArray2 = Array2.isArray; + var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; + function isArrayLike2(value) { + return value != null && isLength(value.length) && !isFunction2(value); + } + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike2(value); + } + function isBoolean2(value) { + return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag; + } + var isBuffer = nativeIsBuffer || stubFalse; + var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + function isElement3(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject3(value); + } + function isEmpty3(value) { + if (value == null) { + return true; + } + if (isArrayLike2(value) && (isArray2(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty2.call(value, key)) { + return false; + } + } + return true; + } + function isEqual2(value, other) { + return baseIsEqual(value, other); + } + function isEqualWith(value, other, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + var result2 = customizer ? customizer(value, other) : undefined2; + return result2 === undefined2 ? baseIsEqual(value, other, undefined2, customizer) : !!result2; + } + function isError(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject3(value); + } + function isFinite2(value) { + return typeof value == "number" && nativeIsFinite(value); + } + function isFunction2(value) { + if (!isObject2(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + function isInteger(value) { + return typeof value == "number" && value == toInteger(value); + } + function isLength(value) { + return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + function isObject2(value) { + var type = typeof value; + return value != null && (type == "object" || type == "function"); + } + function isObjectLike(value) { + return value != null && typeof value == "object"; + } + var isMap2 = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); + } + function isMatchWith(object, source, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + return baseIsMatch(object, source, getMatchData(source), customizer); + } + function isNaN2(value) { + return isNumber2(value) && value != +value; + } + function isNative(value) { + if (isMaskable(value)) { + throw new Error2(CORE_ERROR_TEXT); + } + return baseIsNative(value); + } + function isNull2(value) { + return value === null; + } + function isNil(value) { + return value == null; + } + function isNumber2(value) { + return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag; + } + function isPlainObject3(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty2.call(proto, "constructor") && proto.constructor; + return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString2; + } + var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; + function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; + } + var isSet2 = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + function isString2(value) { + return typeof value == "string" || !isArray2(value) && isObjectLike(value) && baseGetTag(value) == stringTag; + } + function isSymbol(value) { + return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag; + } + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + function isUndefined2(value) { + return value === undefined2; + } + function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; + } + function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; + } + var lt2 = createRelationalOperation(baseLt); + var lte = createRelationalOperation(function(value, other) { + return value <= other; + }); + function toArray(value) { + if (!value) { + return []; + } + if (isArrayLike2(value)) { + return isString2(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values; + return func(value); + } + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = value < 0 ? -1 : 1; + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + function toInteger(value) { + var result2 = toFinite(value), remainder = result2 % 1; + return result2 === result2 ? remainder ? result2 - remainder : result2 : 0; + } + function toLength(value) { + return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; + } + function toNumber(value) { + if (typeof value == "number") { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject2(value)) { + var other = typeof value.valueOf == "function" ? value.valueOf() : value; + value = isObject2(other) ? other + "" : other; + } + if (typeof value != "string") { + return value === 0 ? value : +value; + } + value = baseTrim(value); + var isBinary = reIsBinary.test(value); + return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; + } + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + function toSafeInteger(value) { + return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0; + } + function toString2(value) { + return value == null ? "" : baseToString(value); + } + var assign2 = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike2(source)) { + copyObject(source, keys2(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty2.call(source, key)) { + assignValue(object, key, source[key]); + } + } + }); + var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); + }); + var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); + }); + var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys2(source), object, customizer); + }); + var at2 = flatRest(baseAt); + function create2(prototype, properties) { + var result2 = baseCreate(prototype); + return properties == null ? result2 : baseAssign(result2, properties); + } + var defaults = baseRest(function(object, sources) { + object = Object2(object); + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined2; + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + if (value === undefined2 || eq(value, objectProto[key]) && !hasOwnProperty2.call(object, key)) { + object[key] = source[key]; + } + } + } + return object; + }); + var defaultsDeep = baseRest(function(args) { + args.push(undefined2, customDefaultsMerge); + return apply(mergeWith2, undefined2, args); + }); + function findKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); + } + function findLastKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); + } + function forIn(object, iteratee2) { + return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn); + } + function forInRight(object, iteratee2) { + return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn); + } + function forOwn(object, iteratee2) { + return object && baseForOwn(object, getIteratee(iteratee2, 3)); + } + function forOwnRight(object, iteratee2) { + return object && baseForOwnRight(object, getIteratee(iteratee2, 3)); + } + function functions(object) { + return object == null ? [] : baseFunctions(object, keys2(object)); + } + function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); + } + function get(object, path, defaultValue) { + var result2 = object == null ? undefined2 : baseGet(object, path); + return result2 === undefined2 ? defaultValue : result2; + } + function has2(object, path) { + return object != null && hasPath(object, path, baseHas); + } + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + var invert = createInverter(function(result2, value, key) { + if (value != null && typeof value.toString != "function") { + value = nativeObjectToString.call(value); + } + result2[value] = key; + }, constant(identity3)); + var invertBy = createInverter(function(result2, value, key) { + if (value != null && typeof value.toString != "function") { + value = nativeObjectToString.call(value); + } + if (hasOwnProperty2.call(result2, value)) { + result2[value].push(key); + } else { + result2[value] = [key]; + } + }, getIteratee); + var invoke = baseRest(baseInvoke); + function keys2(object) { + return isArrayLike2(object) ? arrayLikeKeys(object) : baseKeys(object); + } + function keysIn(object) { + return isArrayLike2(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + function mapKeys(object, iteratee2) { + var result2 = {}; + iteratee2 = getIteratee(iteratee2, 3); + baseForOwn(object, function(value, key, object2) { + baseAssignValue(result2, iteratee2(value, key, object2), value); + }); + return result2; + } + function mapValues2(object, iteratee2) { + var result2 = {}; + iteratee2 = getIteratee(iteratee2, 3); + baseForOwn(object, function(value, key, object2) { + baseAssignValue(result2, key, iteratee2(value, key, object2)); + }); + return result2; + } + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + var mergeWith2 = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); + }); + var omit2 = flatRest(function(object, paths) { + var result2 = {}; + if (object == null) { + return result2; + } + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result2); + if (isDeep) { + result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + var length = paths.length; + while (length--) { + baseUnset(result2, paths[length]); + } + return result2; + }); + function omitBy(object, predicate) { + return pickBy(object, negate(getIteratee(predicate))); + } + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = getIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); + } + function result(object, path, defaultValue) { + path = castPath(path, object); + var index = -1, length = path.length; + if (!length) { + length = 1; + object = undefined2; + } + while (++index < length) { + var value = object == null ? undefined2 : object[toKey(path[index])]; + if (value === undefined2) { + index = length; + value = defaultValue; + } + object = isFunction2(value) ? value.call(object) : value; + } + return object; + } + function set2(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } + function setWith(object, path, value, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + return object == null ? object : baseSet(object, path, value, customizer); + } + var toPairs = createToPairs(keys2); + var toPairsIn = createToPairs(keysIn); + function transform2(object, iteratee2, accumulator) { + var isArr = isArray2(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object); + iteratee2 = getIteratee(iteratee2, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor() : []; + } else if (isObject2(object)) { + accumulator = isFunction2(Ctor) ? baseCreate(getPrototype(object)) : {}; + } else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object2) { + return iteratee2(accumulator, value, index, object2); + }); + return accumulator; + } + function unset(object, path) { + return object == null ? true : baseUnset(object, path); + } + function update2(object, path, updater) { + return object == null ? object : baseUpdate(object, path, castFunction(updater)); + } + function updateWith(object, path, updater, customizer) { + customizer = typeof customizer == "function" ? customizer : undefined2; + return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); + } + function values(object) { + return object == null ? [] : baseValues(object, keys2(object)); + } + function valuesIn(object) { + return object == null ? [] : baseValues(object, keysIn(object)); + } + function clamp2(number, lower, upper) { + if (upper === undefined2) { + upper = lower; + lower = undefined2; + } + if (upper !== undefined2) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== undefined2) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); + } + function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined2) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + number = toNumber(number); + return baseInRange(number, start, end); + } + function random(lower, upper, floating) { + if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) { + upper = floating = undefined2; + } + if (floating === undefined2) { + if (typeof upper == "boolean") { + floating = upper; + upper = undefined2; + } else if (typeof lower == "boolean") { + floating = lower; + lower = undefined2; + } + } + if (lower === undefined2 && upper === undefined2) { + lower = 0; + upper = 1; + } else { + lower = toFinite(lower); + if (upper === undefined2) { + upper = lower; + lower = 0; + } else { + upper = toFinite(upper); + } + } + if (lower > upper) { + var temp = lower; + lower = upper; + upper = temp; + } + if (floating || lower % 1 || upper % 1) { + var rand = nativeRandom(); + return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper); + } + return baseRandom(lower, upper); + } + var camelCase = createCompounder(function(result2, word, index) { + word = word.toLowerCase(); + return result2 + (index ? capitalize(word) : word); + }); + function capitalize(string) { + return upperFirst(toString2(string).toLowerCase()); + } + function deburr(string) { + string = toString2(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ""); + } + function endsWith(string, target, position) { + string = toString2(string); + target = baseToString(target); + var length = string.length; + position = position === undefined2 ? length : baseClamp(toInteger(position), 0, length); + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; + } + function escape(string) { + string = toString2(string); + return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string; + } + function escapeRegExp(string) { + string = toString2(string); + return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string; + } + var kebabCase = createCompounder(function(result2, word, index) { + return result2 + (index ? "-" : "") + word.toLowerCase(); + }); + var lowerCase = createCompounder(function(result2, word, index) { + return result2 + (index ? " " : "") + word.toLowerCase(); + }); + var lowerFirst = createCaseFirst("toLowerCase"); + function pad(string, length, chars) { + string = toString2(string); + length = toInteger(length); + var strLength = length ? stringSize(string) : 0; + if (!length || strLength >= length) { + return string; + } + var mid = (length - strLength) / 2; + return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars); + } + function padEnd(string, length, chars) { + string = toString2(string); + length = toInteger(length); + var strLength = length ? stringSize(string) : 0; + return length && strLength < length ? string + createPadding(length - strLength, chars) : string; + } + function padStart(string, length, chars) { + string = toString2(string); + length = toInteger(length); + var strLength = length ? stringSize(string) : 0; + return length && strLength < length ? createPadding(length - strLength, chars) + string : string; + } + function parseInt2(string, radix, guard) { + if (guard || radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + return nativeParseInt(toString2(string).replace(reTrimStart, ""), radix || 0); + } + function repeat(string, n2, guard) { + if (guard ? isIterateeCall(string, n2, guard) : n2 === undefined2) { + n2 = 1; + } else { + n2 = toInteger(n2); + } + return baseRepeat(toString2(string), n2); + } + function replace() { + var args = arguments, string = toString2(args[0]); + return args.length < 3 ? string : string.replace(args[1], args[2]); + } + var snakeCase = createCompounder(function(result2, word, index) { + return result2 + (index ? "_" : "") + word.toLowerCase(); + }); + function split(string, separator, limit) { + if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) { + separator = limit = undefined2; + } + limit = limit === undefined2 ? MAX_ARRAY_LENGTH : limit >>> 0; + if (!limit) { + return []; + } + string = toString2(string); + if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) { + separator = baseToString(separator); + if (!separator && hasUnicode(string)) { + return castSlice(stringToArray(string), 0, limit); + } + } + return string.split(separator, limit); + } + var startCase = createCompounder(function(result2, word, index) { + return result2 + (index ? " " : "") + upperFirst(word); + }); + function startsWith(string, target, position) { + string = toString2(string); + position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length); + target = baseToString(target); + return string.slice(position, position + target.length) == target; + } + function template(string, options, guard) { + var settings2 = lodash.templateSettings; + if (guard && isIterateeCall(string, options, guard)) { + options = undefined2; + } + string = toString2(string); + options = assignInWith({}, options, settings2, customDefaultsAssignIn); + var imports = assignInWith({}, options.imports, settings2.imports, customDefaultsAssignIn), importsKeys = keys2(imports), importsValues = baseValues(imports, importsKeys); + var isEscaping, isEvaluating, index = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '"; + var reDelimiters = RegExp2( + (options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", + "g" + ); + var sourceURL = "//# sourceURL=" + (hasOwnProperty2.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n"; + string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset3) { + interpolateValue || (interpolateValue = esTemplateValue); + source += string.slice(index, offset3).replace(reUnescapedString, escapeStringChar); + if (escapeValue) { + isEscaping = true; + source += "' +\n__e(" + escapeValue + ") +\n'"; + } + if (evaluateValue) { + isEvaluating = true; + source += "';\n" + evaluateValue + ";\n__p += '"; + } + if (interpolateValue) { + source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; + } + index = offset3 + match.length; + return match; + }); + source += "';\n"; + var variable = hasOwnProperty2.call(options, "variable") && options.variable; + if (!variable) { + source = "with (obj) {\n" + source + "\n}\n"; + } else if (reForbiddenIdentifierChars.test(variable)) { + throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT); + } + source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;"); + source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}"; + var result2 = attempt(function() { + return Function2(importsKeys, sourceURL + "return " + source).apply(undefined2, importsValues); + }); + result2.source = source; + if (isError(result2)) { + throw result2; + } + return result2; + } + function toLower(value) { + return toString2(value).toLowerCase(); + } + function toUpper(value) { + return toString2(value).toUpperCase(); + } + function trim(string, chars, guard) { + string = toString2(string); + if (string && (guard || chars === undefined2)) { + return baseTrim(string); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start = charsStartIndex(strSymbols, chrSymbols), end = charsEndIndex(strSymbols, chrSymbols) + 1; + return castSlice(strSymbols, start, end).join(""); + } + function trimEnd(string, chars, guard) { + string = toString2(string); + if (string && (guard || chars === undefined2)) { + return string.slice(0, trimmedEndIndex(string) + 1); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), end = charsEndIndex(strSymbols, stringToArray(chars)) + 1; + return castSlice(strSymbols, 0, end).join(""); + } + function trimStart(string, chars, guard) { + string = toString2(string); + if (string && (guard || chars === undefined2)) { + return string.replace(reTrimStart, ""); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), start = charsStartIndex(strSymbols, stringToArray(chars)); + return castSlice(strSymbols, start).join(""); + } + function truncate(string, options) { + var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION; + if (isObject2(options)) { + var separator = "separator" in options ? options.separator : separator; + length = "length" in options ? toInteger(options.length) : length; + omission = "omission" in options ? baseToString(options.omission) : omission; + } + string = toString2(string); + var strLength = string.length; + if (hasUnicode(string)) { + var strSymbols = stringToArray(string); + strLength = strSymbols.length; + } + if (length >= strLength) { + return string; + } + var end = length - stringSize(omission); + if (end < 1) { + return omission; + } + var result2 = strSymbols ? castSlice(strSymbols, 0, end).join("") : string.slice(0, end); + if (separator === undefined2) { + return result2 + omission; + } + if (strSymbols) { + end += result2.length - end; + } + if (isRegExp(separator)) { + if (string.slice(end).search(separator)) { + var match, substring = result2; + if (!separator.global) { + separator = RegExp2(separator.source, toString2(reFlags.exec(separator)) + "g"); + } + separator.lastIndex = 0; + while (match = separator.exec(substring)) { + var newEnd = match.index; + } + result2 = result2.slice(0, newEnd === undefined2 ? end : newEnd); + } + } else if (string.indexOf(baseToString(separator), end) != end) { + var index = result2.lastIndexOf(separator); + if (index > -1) { + result2 = result2.slice(0, index); + } + } + return result2 + omission; + } + function unescape2(string) { + string = toString2(string); + return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string; + } + var upperCase = createCompounder(function(result2, word, index) { + return result2 + (index ? " " : "") + word.toUpperCase(); + }); + var upperFirst = createCaseFirst("toUpperCase"); + function words(string, pattern, guard) { + string = toString2(string); + pattern = guard ? undefined2 : pattern; + if (pattern === undefined2) { + return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); + } + return string.match(pattern) || []; + } + var attempt = baseRest(function(func, args) { + try { + return apply(func, undefined2, args); + } catch (e2) { + return isError(e2) ? e2 : new Error2(e2); + } + }); + var bindAll = flatRest(function(object, methodNames) { + arrayEach(methodNames, function(key) { + key = toKey(key); + baseAssignValue(object, key, bind2(object[key], object)); + }); + return object; + }); + function cond(pairs) { + var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee(); + pairs = !length ? [] : arrayMap(pairs, function(pair) { + if (typeof pair[1] != "function") { + throw new TypeError2(FUNC_ERROR_TEXT); + } + return [toIteratee(pair[0]), pair[1]]; + }); + return baseRest(function(args) { + var index = -1; + while (++index < length) { + var pair = pairs[index]; + if (apply(pair[0], this, args)) { + return apply(pair[1], this, args); + } + } + }); + } + function conforms(source) { + return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); + } + function constant(value) { + return function() { + return value; + }; + } + function defaultTo(value, defaultValue) { + return value == null || value !== value ? defaultValue : value; + } + var flow4 = createFlow(); + var flowRight = createFlow(true); + function identity3(value) { + return value; + } + function iteratee(func) { + return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG)); + } + function matches(source) { + return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); + } + function matchesProperty(path, srcValue) { + return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); + } + var method = baseRest(function(path, args) { + return function(object) { + return baseInvoke(object, path, args); + }; + }); + var methodOf = baseRest(function(object, args) { + return function(path) { + return baseInvoke(object, path, args); + }; + }); + function mixin(object, source, options) { + var props = keys2(source), methodNames = baseFunctions(source, props); + if (options == null && !(isObject2(source) && (methodNames.length || !props.length))) { + options = source; + source = object; + object = this; + methodNames = baseFunctions(source, keys2(source)); + } + var chain2 = !(isObject2(options) && "chain" in options) || !!options.chain, isFunc = isFunction2(object); + arrayEach(methodNames, function(methodName) { + var func = source[methodName]; + object[methodName] = func; + if (isFunc) { + object.prototype[methodName] = function() { + var chainAll = this.__chain__; + if (chain2 || chainAll) { + var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__); + actions.push({ "func": func, "args": arguments, "thisArg": object }); + result2.__chain__ = chainAll; + return result2; + } + return func.apply(object, arrayPush([this.value()], arguments)); + }; + } + }); + return object; + } + function noConflict() { + if (root._ === this) { + root._ = oldDash; + } + return this; + } + function noop3() { + } + function nthArg(n2) { + n2 = toInteger(n2); + return baseRest(function(args) { + return baseNth(args, n2); + }); + } + var over = createOver(arrayMap); + var overEvery = createOver(arrayEvery); + var overSome = createOver(arraySome); + function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); + } + function propertyOf(object) { + return function(path) { + return object == null ? undefined2 : baseGet(object, path); + }; + } + var range3 = createRange(); + var rangeRight = createRange(true); + function stubArray() { + return []; + } + function stubFalse() { + return false; + } + function stubObject() { + return {}; + } + function stubString() { + return ""; + } + function stubTrue() { + return true; + } + function times(n2, iteratee2) { + n2 = toInteger(n2); + if (n2 < 1 || n2 > MAX_SAFE_INTEGER) { + return []; + } + var index = MAX_ARRAY_LENGTH, length = nativeMin(n2, MAX_ARRAY_LENGTH); + iteratee2 = getIteratee(iteratee2); + n2 -= MAX_ARRAY_LENGTH; + var result2 = baseTimes(length, iteratee2); + while (++index < n2) { + iteratee2(index); + } + return result2; + } + function toPath(value) { + if (isArray2(value)) { + return arrayMap(value, toKey); + } + return isSymbol(value) ? [value] : copyArray(stringToPath(toString2(value))); + } + function uniqueId(prefix) { + var id = ++idCounter; + return toString2(prefix) + id; + } + var add = createMathOperation(function(augend, addend) { + return augend + addend; + }, 0); + var ceil = createRound("ceil"); + var divide = createMathOperation(function(dividend, divisor) { + return dividend / divisor; + }, 1); + var floor2 = createRound("floor"); + function max2(array) { + return array && array.length ? baseExtremum(array, identity3, baseGt) : undefined2; + } + function maxBy(array, iteratee2) { + return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2; + } + function mean(array) { + return baseMean(array, identity3); + } + function meanBy(array, iteratee2) { + return baseMean(array, getIteratee(iteratee2, 2)); + } + function min2(array) { + return array && array.length ? baseExtremum(array, identity3, baseLt) : undefined2; + } + function minBy(array, iteratee2) { + return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined2; + } + var multiply = createMathOperation(function(multiplier, multiplicand) { + return multiplier * multiplicand; + }, 1); + var round2 = createRound("round"); + var subtract = createMathOperation(function(minuend, subtrahend) { + return minuend - subtrahend; + }, 0); + function sum(array) { + return array && array.length ? baseSum(array, identity3) : 0; + } + function sumBy(array, iteratee2) { + return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0; + } + lodash.after = after; + lodash.ary = ary; + lodash.assign = assign2; + lodash.assignIn = assignIn; + lodash.assignInWith = assignInWith; + lodash.assignWith = assignWith; + lodash.at = at2; + lodash.before = before; + lodash.bind = bind2; + lodash.bindAll = bindAll; + lodash.bindKey = bindKey; + lodash.castArray = castArray; + lodash.chain = chain; + lodash.chunk = chunk; + lodash.compact = compact; + lodash.concat = concat2; + lodash.cond = cond; + lodash.conforms = conforms; + lodash.constant = constant; + lodash.countBy = countBy; + lodash.create = create2; + lodash.curry = curry; + lodash.curryRight = curryRight; + lodash.debounce = debounce3; + lodash.defaults = defaults; + lodash.defaultsDeep = defaultsDeep; + lodash.defer = defer; + lodash.delay = delay; + lodash.difference = difference2; + lodash.differenceBy = differenceBy3; + lodash.differenceWith = differenceWith; + lodash.drop = drop; + lodash.dropRight = dropRight; + lodash.dropRightWhile = dropRightWhile; + lodash.dropWhile = dropWhile; + lodash.fill = fill; + lodash.filter = filter3; + lodash.flatMap = flatMap; + lodash.flatMapDeep = flatMapDeep; + lodash.flatMapDepth = flatMapDepth; + lodash.flatten = flatten2; + lodash.flattenDeep = flattenDeep; + lodash.flattenDepth = flattenDepth; + lodash.flip = flip2; + lodash.flow = flow4; + lodash.flowRight = flowRight; + lodash.fromPairs = fromPairs; + lodash.functions = functions; + lodash.functionsIn = functionsIn; + lodash.groupBy = groupBy4; + lodash.initial = initial; + lodash.intersection = intersection; + lodash.intersectionBy = intersectionBy; + lodash.intersectionWith = intersectionWith; + lodash.invert = invert; + lodash.invertBy = invertBy; + lodash.invokeMap = invokeMap; + lodash.iteratee = iteratee; + lodash.keyBy = keyBy; + lodash.keys = keys2; + lodash.keysIn = keysIn; + lodash.map = map2; + lodash.mapKeys = mapKeys; + lodash.mapValues = mapValues2; + lodash.matches = matches; + lodash.matchesProperty = matchesProperty; + lodash.memoize = memoize; + lodash.merge = merge; + lodash.mergeWith = mergeWith2; + lodash.method = method; + lodash.methodOf = methodOf; + lodash.mixin = mixin; + lodash.negate = negate; + lodash.nthArg = nthArg; + lodash.omit = omit2; + lodash.omitBy = omitBy; + lodash.once = once; + lodash.orderBy = orderBy; + lodash.over = over; + lodash.overArgs = overArgs; + lodash.overEvery = overEvery; + lodash.overSome = overSome; + lodash.partial = partial; + lodash.partialRight = partialRight; + lodash.partition = partition5; + lodash.pick = pick; + lodash.pickBy = pickBy; + lodash.property = property; + lodash.propertyOf = propertyOf; + lodash.pull = pull; + lodash.pullAll = pullAll; + lodash.pullAllBy = pullAllBy; + lodash.pullAllWith = pullAllWith; + lodash.pullAt = pullAt; + lodash.range = range3; + lodash.rangeRight = rangeRight; + lodash.rearg = rearg; + lodash.reject = reject; + lodash.remove = remove; + lodash.rest = rest; + lodash.reverse = reverse; + lodash.sampleSize = sampleSize; + lodash.set = set2; + lodash.setWith = setWith; + lodash.shuffle = shuffle; + lodash.slice = slice; + lodash.sortBy = sortBy2; + lodash.sortedUniq = sortedUniq; + lodash.sortedUniqBy = sortedUniqBy; + lodash.split = split; + lodash.spread = spread; + lodash.tail = tail; + lodash.take = take; + lodash.takeRight = takeRight; + lodash.takeRightWhile = takeRightWhile; + lodash.takeWhile = takeWhile; + lodash.tap = tap; + lodash.throttle = throttle; + lodash.thru = thru; + lodash.toArray = toArray; + lodash.toPairs = toPairs; + lodash.toPairsIn = toPairsIn; + lodash.toPath = toPath; + lodash.toPlainObject = toPlainObject; + lodash.transform = transform2; + lodash.unary = unary; + lodash.union = union; + lodash.unionBy = unionBy; + lodash.unionWith = unionWith; + lodash.uniq = uniq; + lodash.uniqBy = uniqBy3; + lodash.uniqWith = uniqWith; + lodash.unset = unset; + lodash.unzip = unzip; + lodash.unzipWith = unzipWith; + lodash.update = update2; + lodash.updateWith = updateWith; + lodash.values = values; + lodash.valuesIn = valuesIn; + lodash.without = without; + lodash.words = words; + lodash.wrap = wrap; + lodash.xor = xor; + lodash.xorBy = xorBy; + lodash.xorWith = xorWith; + lodash.zip = zip; + lodash.zipObject = zipObject; + lodash.zipObjectDeep = zipObjectDeep; + lodash.zipWith = zipWith; + lodash.entries = toPairs; + lodash.entriesIn = toPairsIn; + lodash.extend = assignIn; + lodash.extendWith = assignInWith; + mixin(lodash, lodash); + lodash.add = add; + lodash.attempt = attempt; + lodash.camelCase = camelCase; + lodash.capitalize = capitalize; + lodash.ceil = ceil; + lodash.clamp = clamp2; + lodash.clone = clone; + lodash.cloneDeep = cloneDeep; + lodash.cloneDeepWith = cloneDeepWith; + lodash.cloneWith = cloneWith; + lodash.conformsTo = conformsTo; + lodash.deburr = deburr; + lodash.defaultTo = defaultTo; + lodash.divide = divide; + lodash.endsWith = endsWith; + lodash.eq = eq; + lodash.escape = escape; + lodash.escapeRegExp = escapeRegExp; + lodash.every = every; + lodash.find = find2; + lodash.findIndex = findIndex; + lodash.findKey = findKey; + lodash.findLast = findLast; + lodash.findLastIndex = findLastIndex; + lodash.findLastKey = findLastKey; + lodash.floor = floor2; + lodash.forEach = forEach; + lodash.forEachRight = forEachRight; + lodash.forIn = forIn; + lodash.forInRight = forInRight; + lodash.forOwn = forOwn; + lodash.forOwnRight = forOwnRight; + lodash.get = get; + lodash.gt = gt2; + lodash.gte = gte; + lodash.has = has2; + lodash.hasIn = hasIn; + lodash.head = head; + lodash.identity = identity3; + lodash.includes = includes; + lodash.indexOf = indexOf; + lodash.inRange = inRange; + lodash.invoke = invoke; + lodash.isArguments = isArguments; + lodash.isArray = isArray2; + lodash.isArrayBuffer = isArrayBuffer; + lodash.isArrayLike = isArrayLike2; + lodash.isArrayLikeObject = isArrayLikeObject; + lodash.isBoolean = isBoolean2; + lodash.isBuffer = isBuffer; + lodash.isDate = isDate; + lodash.isElement = isElement3; + lodash.isEmpty = isEmpty3; + lodash.isEqual = isEqual2; + lodash.isEqualWith = isEqualWith; + lodash.isError = isError; + lodash.isFinite = isFinite2; + lodash.isFunction = isFunction2; + lodash.isInteger = isInteger; + lodash.isLength = isLength; + lodash.isMap = isMap2; + lodash.isMatch = isMatch; + lodash.isMatchWith = isMatchWith; + lodash.isNaN = isNaN2; + lodash.isNative = isNative; + lodash.isNil = isNil; + lodash.isNull = isNull2; + lodash.isNumber = isNumber2; + lodash.isObject = isObject2; + lodash.isObjectLike = isObjectLike; + lodash.isPlainObject = isPlainObject3; + lodash.isRegExp = isRegExp; + lodash.isSafeInteger = isSafeInteger; + lodash.isSet = isSet2; + lodash.isString = isString2; + lodash.isSymbol = isSymbol; + lodash.isTypedArray = isTypedArray; + lodash.isUndefined = isUndefined2; + lodash.isWeakMap = isWeakMap; + lodash.isWeakSet = isWeakSet; + lodash.join = join; + lodash.kebabCase = kebabCase; + lodash.last = last5; + lodash.lastIndexOf = lastIndexOf; + lodash.lowerCase = lowerCase; + lodash.lowerFirst = lowerFirst; + lodash.lt = lt2; + lodash.lte = lte; + lodash.max = max2; + lodash.maxBy = maxBy; + lodash.mean = mean; + lodash.meanBy = meanBy; + lodash.min = min2; + lodash.minBy = minBy; + lodash.stubArray = stubArray; + lodash.stubFalse = stubFalse; + lodash.stubObject = stubObject; + lodash.stubString = stubString; + lodash.stubTrue = stubTrue; + lodash.multiply = multiply; + lodash.nth = nth; + lodash.noConflict = noConflict; + lodash.noop = noop3; + lodash.now = now2; + lodash.pad = pad; + lodash.padEnd = padEnd; + lodash.padStart = padStart; + lodash.parseInt = parseInt2; + lodash.random = random; + lodash.reduce = reduce; + lodash.reduceRight = reduceRight; + lodash.repeat = repeat; + lodash.replace = replace; + lodash.result = result; + lodash.round = round2; + lodash.runInContext = runInContext2; + lodash.sample = sample; + lodash.size = size2; + lodash.snakeCase = snakeCase; + lodash.some = some; + lodash.sortedIndex = sortedIndex; + lodash.sortedIndexBy = sortedIndexBy; + lodash.sortedIndexOf = sortedIndexOf; + lodash.sortedLastIndex = sortedLastIndex; + lodash.sortedLastIndexBy = sortedLastIndexBy; + lodash.sortedLastIndexOf = sortedLastIndexOf; + lodash.startCase = startCase; + lodash.startsWith = startsWith; + lodash.subtract = subtract; + lodash.sum = sum; + lodash.sumBy = sumBy; + lodash.template = template; + lodash.times = times; + lodash.toFinite = toFinite; + lodash.toInteger = toInteger; + lodash.toLength = toLength; + lodash.toLower = toLower; + lodash.toNumber = toNumber; + lodash.toSafeInteger = toSafeInteger; + lodash.toString = toString2; + lodash.toUpper = toUpper; + lodash.trim = trim; + lodash.trimEnd = trimEnd; + lodash.trimStart = trimStart; + lodash.truncate = truncate; + lodash.unescape = unescape2; + lodash.uniqueId = uniqueId; + lodash.upperCase = upperCase; + lodash.upperFirst = upperFirst; + lodash.each = forEach; + lodash.eachRight = forEachRight; + lodash.first = head; + mixin(lodash, function() { + var source = {}; + baseForOwn(lodash, function(func, methodName) { + if (!hasOwnProperty2.call(lodash.prototype, methodName)) { + source[methodName] = func; + } + }); + return source; + }(), { "chain": false }); + lodash.VERSION = VERSION; + arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) { + lodash[methodName].placeholder = lodash; + }); + arrayEach(["drop", "take"], function(methodName, index) { + LazyWrapper.prototype[methodName] = function(n2) { + n2 = n2 === undefined2 ? 1 : nativeMax(toInteger(n2), 0); + var result2 = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone(); + if (result2.__filtered__) { + result2.__takeCount__ = nativeMin(n2, result2.__takeCount__); + } else { + result2.__views__.push({ + "size": nativeMin(n2, MAX_ARRAY_LENGTH), + "type": methodName + (result2.__dir__ < 0 ? "Right" : "") + }); + } + return result2; + }; + LazyWrapper.prototype[methodName + "Right"] = function(n2) { + return this.reverse()[methodName](n2).reverse(); + }; + }); + arrayEach(["filter", "map", "takeWhile"], function(methodName, index) { + var type = index + 1, isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; + LazyWrapper.prototype[methodName] = function(iteratee2) { + var result2 = this.clone(); + result2.__iteratees__.push({ + "iteratee": getIteratee(iteratee2, 3), + "type": type + }); + result2.__filtered__ = result2.__filtered__ || isFilter; + return result2; + }; + }); + arrayEach(["head", "last"], function(methodName, index) { + var takeName = "take" + (index ? "Right" : ""); + LazyWrapper.prototype[methodName] = function() { + return this[takeName](1).value()[0]; + }; + }); + arrayEach(["initial", "tail"], function(methodName, index) { + var dropName = "drop" + (index ? "" : "Right"); + LazyWrapper.prototype[methodName] = function() { + return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); + }; + }); + LazyWrapper.prototype.compact = function() { + return this.filter(identity3); + }; + LazyWrapper.prototype.find = function(predicate) { + return this.filter(predicate).head(); + }; + LazyWrapper.prototype.findLast = function(predicate) { + return this.reverse().find(predicate); + }; + LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { + if (typeof path == "function") { + return new LazyWrapper(this); + } + return this.map(function(value) { + return baseInvoke(value, path, args); + }); + }); + LazyWrapper.prototype.reject = function(predicate) { + return this.filter(negate(getIteratee(predicate))); + }; + LazyWrapper.prototype.slice = function(start, end) { + start = toInteger(start); + var result2 = this; + if (result2.__filtered__ && (start > 0 || end < 0)) { + return new LazyWrapper(result2); + } + if (start < 0) { + result2 = result2.takeRight(-start); + } else if (start) { + result2 = result2.drop(start); + } + if (end !== undefined2) { + end = toInteger(end); + result2 = end < 0 ? result2.dropRight(-end) : result2.take(end - start); + } + return result2; + }; + LazyWrapper.prototype.takeRightWhile = function(predicate) { + return this.reverse().takeWhile(predicate).reverse(); + }; + LazyWrapper.prototype.toArray = function() { + return this.take(MAX_ARRAY_LENGTH); + }; + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName); + if (!lodashFunc) { + return; + } + lodash.prototype[methodName] = function() { + var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray2(value); + var interceptor = function(value2) { + var result3 = lodashFunc.apply(lodash, arrayPush([value2], args)); + return isTaker && chainAll ? result3[0] : result3; + }; + if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) { + isLazy = useLazy = false; + } + var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid; + if (!retUnwrapped && useLazy) { + value = onlyLazy ? value : new LazyWrapper(this); + var result2 = func.apply(value, args); + result2.__actions__.push({ "func": thru, "args": [interceptor], "thisArg": undefined2 }); + return new LodashWrapper(result2, chainAll); + } + if (isUnwrapped && onlyLazy) { + return func.apply(this, args); + } + result2 = this.thru(interceptor); + return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2; + }; + }); + arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) { + var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName); + lodash.prototype[methodName] = function() { + var args = arguments; + if (retUnwrapped && !this.__chain__) { + var value = this.value(); + return func.apply(isArray2(value) ? value : [], args); + } + return this[chainName](function(value2) { + return func.apply(isArray2(value2) ? value2 : [], args); + }); + }; + }); + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var lodashFunc = lodash[methodName]; + if (lodashFunc) { + var key = lodashFunc.name + ""; + if (!hasOwnProperty2.call(realNames, key)) { + realNames[key] = []; + } + realNames[key].push({ "name": methodName, "func": lodashFunc }); + } + }); + realNames[createHybrid(undefined2, WRAP_BIND_KEY_FLAG).name] = [{ + "name": "wrapper", + "func": undefined2 + }]; + LazyWrapper.prototype.clone = lazyClone; + LazyWrapper.prototype.reverse = lazyReverse; + LazyWrapper.prototype.value = lazyValue; + lodash.prototype.at = wrapperAt; + lodash.prototype.chain = wrapperChain; + lodash.prototype.commit = wrapperCommit; + lodash.prototype.next = wrapperNext; + lodash.prototype.plant = wrapperPlant; + lodash.prototype.reverse = wrapperReverse; + lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; + lodash.prototype.first = lodash.prototype.head; + if (symIterator) { + lodash.prototype[symIterator] = wrapperToIterator; + } + return lodash; + }; + var _2 = runInContext(); + if (typeof define == "function" && typeof define.amd == "object" && define.amd) { + root._ = _2; + define(function() { + return _2; + }); + } else if (freeModule) { + (freeModule.exports = _2)._ = _2; + freeExports._ = _2; + } else { + root._ = _2; + } + }).call(exports); + } +}); + +// node_modules/fraction.js/fraction.js +var require_fraction = __commonJS({ + "node_modules/fraction.js/fraction.js"(exports, module2) { + (function(root) { + "use strict"; + var MAX_CYCLE_LEN = 2e3; + var P2 = { + "s": 1, + "n": 0, + "d": 1 + }; + function createError(name) { + function errorConstructor() { + var temp = Error.apply(this, arguments); + temp["name"] = this["name"] = name; + this["stack"] = temp["stack"]; + this["message"] = temp["message"]; + } + function IntermediateInheritor() { + } + IntermediateInheritor.prototype = Error.prototype; + errorConstructor.prototype = new IntermediateInheritor(); + return errorConstructor; + } + var DivisionByZero = Fraction2["DivisionByZero"] = createError("DivisionByZero"); + var InvalidParameter = Fraction2["InvalidParameter"] = createError("InvalidParameter"); + function assign2(n2, s2) { + if (isNaN(n2 = parseInt(n2, 10))) { + throwInvalidParam(); + } + return n2 * s2; + } + function throwInvalidParam() { + throw new InvalidParameter(); + } + function factorize(num) { + var factors = {}; + var n2 = num; + var i2 = 2; + var s2 = 4; + while (s2 <= n2) { + while (n2 % i2 === 0) { + n2 /= i2; + factors[i2] = (factors[i2] || 0) + 1; + } + s2 += 1 + 2 * i2++; + } + if (n2 !== num) { + if (n2 > 1) + factors[n2] = (factors[n2] || 0) + 1; + } else { + factors[num] = (factors[num] || 0) + 1; + } + return factors; + } + var parse = function(p1, p2) { + var n2 = 0, d2 = 1, s2 = 1; + var v2 = 0, w2 = 0, x2 = 0, y2 = 1, z2 = 1; + var A2 = 0, B2 = 1; + var C2 = 1, D2 = 1; + var N2 = 1e7; + var M2; + if (p1 === void 0 || p1 === null) { + } else if (p2 !== void 0) { + n2 = p1; + d2 = p2; + s2 = n2 * d2; + } else + switch (typeof p1) { + case "object": { + if ("d" in p1 && "n" in p1) { + n2 = p1["n"]; + d2 = p1["d"]; + if ("s" in p1) + n2 *= p1["s"]; + } else if (0 in p1) { + n2 = p1[0]; + if (1 in p1) + d2 = p1[1]; + } else { + throwInvalidParam(); + } + s2 = n2 * d2; + break; + } + case "number": { + if (p1 < 0) { + s2 = p1; + p1 = -p1; + } + if (p1 % 1 === 0) { + n2 = p1; + } else if (p1 > 0) { + if (p1 >= 1) { + z2 = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10)); + p1 /= z2; + } + while (B2 <= N2 && D2 <= N2) { + M2 = (A2 + C2) / (B2 + D2); + if (p1 === M2) { + if (B2 + D2 <= N2) { + n2 = A2 + C2; + d2 = B2 + D2; + } else if (D2 > B2) { + n2 = C2; + d2 = D2; + } else { + n2 = A2; + d2 = B2; + } + break; + } else { + if (p1 > M2) { + A2 += C2; + B2 += D2; + } else { + C2 += A2; + D2 += B2; + } + if (B2 > N2) { + n2 = C2; + d2 = D2; + } else { + n2 = A2; + d2 = B2; + } + } + } + n2 *= z2; + } else if (isNaN(p1) || isNaN(p2)) { + d2 = n2 = NaN; + } + break; + } + case "string": { + B2 = p1.match(/\d+|./g); + if (B2 === null) + throwInvalidParam(); + if (B2[A2] === "-") { + s2 = -1; + A2++; + } else if (B2[A2] === "+") { + A2++; + } + if (B2.length === A2 + 1) { + w2 = assign2(B2[A2++], s2); + } else if (B2[A2 + 1] === "." || B2[A2] === ".") { + if (B2[A2] !== ".") { + v2 = assign2(B2[A2++], s2); + } + A2++; + if (A2 + 1 === B2.length || B2[A2 + 1] === "(" && B2[A2 + 3] === ")" || B2[A2 + 1] === "'" && B2[A2 + 3] === "'") { + w2 = assign2(B2[A2], s2); + y2 = Math.pow(10, B2[A2].length); + A2++; + } + if (B2[A2] === "(" && B2[A2 + 2] === ")" || B2[A2] === "'" && B2[A2 + 2] === "'") { + x2 = assign2(B2[A2 + 1], s2); + z2 = Math.pow(10, B2[A2 + 1].length) - 1; + A2 += 3; + } + } else if (B2[A2 + 1] === "/" || B2[A2 + 1] === ":") { + w2 = assign2(B2[A2], s2); + y2 = assign2(B2[A2 + 2], 1); + A2 += 3; + } else if (B2[A2 + 3] === "/" && B2[A2 + 1] === " ") { + v2 = assign2(B2[A2], s2); + w2 = assign2(B2[A2 + 2], s2); + y2 = assign2(B2[A2 + 4], 1); + A2 += 5; + } + if (B2.length <= A2) { + d2 = y2 * z2; + s2 = /* void */ + n2 = x2 + d2 * v2 + z2 * w2; + break; + } + } + default: + throwInvalidParam(); + } + if (d2 === 0) { + throw new DivisionByZero(); + } + P2["s"] = s2 < 0 ? -1 : 1; + P2["n"] = Math.abs(n2); + P2["d"] = Math.abs(d2); + }; + function modpow(b2, e2, m2) { + var r2 = 1; + for (; e2 > 0; b2 = b2 * b2 % m2, e2 >>= 1) { + if (e2 & 1) { + r2 = r2 * b2 % m2; + } + } + return r2; + } + function cycleLen(n2, d2) { + for (; d2 % 2 === 0; d2 /= 2) { + } + for (; d2 % 5 === 0; d2 /= 5) { + } + if (d2 === 1) + return 0; + var rem = 10 % d2; + var t2 = 1; + for (; rem !== 1; t2++) { + rem = rem * 10 % d2; + if (t2 > MAX_CYCLE_LEN) + return 0; + } + return t2; + } + function cycleStart(n2, d2, len) { + var rem1 = 1; + var rem2 = modpow(10, len, d2); + for (var t2 = 0; t2 < 300; t2++) { + if (rem1 === rem2) + return t2; + rem1 = rem1 * 10 % d2; + rem2 = rem2 * 10 % d2; + } + return 0; + } + function gcd(a2, b2) { + if (!a2) + return b2; + if (!b2) + return a2; + while (1) { + a2 %= b2; + if (!a2) + return b2; + b2 %= a2; + if (!b2) + return a2; + } + } + ; + function Fraction2(a2, b2) { + if (!(this instanceof Fraction2)) { + return new Fraction2(a2, b2); + } + parse(a2, b2); + if (Fraction2["REDUCE"]) { + a2 = gcd(P2["d"], P2["n"]); + } else { + a2 = 1; + } + this["s"] = P2["s"]; + this["n"] = P2["n"] / a2; + this["d"] = P2["d"] / a2; + } + Fraction2["REDUCE"] = 1; + Fraction2.prototype = { + "s": 1, + "n": 0, + "d": 1, + /** + * Calculates the absolute value + * + * Ex: new Fraction(-4).abs() => 4 + **/ + "abs": function() { + return new Fraction2(this["n"], this["d"]); + }, + /** + * Inverts the sign of the current fraction + * + * Ex: new Fraction(-4).neg() => 4 + **/ + "neg": function() { + return new Fraction2(-this["s"] * this["n"], this["d"]); + }, + /** + * Adds two rational numbers + * + * Ex: new Fraction({n: 2, d: 3}).add("14.9") => 467 / 30 + **/ + "add": function(a2, b2) { + parse(a2, b2); + return new Fraction2( + this["s"] * this["n"] * P2["d"] + P2["s"] * this["d"] * P2["n"], + this["d"] * P2["d"] + ); + }, + /** + * Subtracts two rational numbers + * + * Ex: new Fraction({n: 2, d: 3}).add("14.9") => -427 / 30 + **/ + "sub": function(a2, b2) { + parse(a2, b2); + return new Fraction2( + this["s"] * this["n"] * P2["d"] - P2["s"] * this["d"] * P2["n"], + this["d"] * P2["d"] + ); + }, + /** + * Multiplies two rational numbers + * + * Ex: new Fraction("-17.(345)").mul(3) => 5776 / 111 + **/ + "mul": function(a2, b2) { + parse(a2, b2); + return new Fraction2( + this["s"] * P2["s"] * this["n"] * P2["n"], + this["d"] * P2["d"] + ); + }, + /** + * Divides two rational numbers + * + * Ex: new Fraction("-17.(345)").inverse().div(3) + **/ + "div": function(a2, b2) { + parse(a2, b2); + return new Fraction2( + this["s"] * P2["s"] * this["n"] * P2["d"], + this["d"] * P2["n"] + ); + }, + /** + * Clones the actual object + * + * Ex: new Fraction("-17.(345)").clone() + **/ + "clone": function() { + return new Fraction2(this); + }, + /** + * Calculates the modulo of two rational numbers - a more precise fmod + * + * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6) + **/ + "mod": function(a2, b2) { + if (isNaN(this["n"]) || isNaN(this["d"])) { + return new Fraction2(NaN); + } + if (a2 === void 0) { + return new Fraction2(this["s"] * this["n"] % this["d"], 1); + } + parse(a2, b2); + if (0 === P2["n"] && 0 === this["d"]) { + Fraction2(0, 0); + } + return new Fraction2( + this["s"] * (P2["d"] * this["n"]) % (P2["n"] * this["d"]), + P2["d"] * this["d"] + ); + }, + /** + * Calculates the fractional gcd of two rational numbers + * + * Ex: new Fraction(5,8).gcd(3,7) => 1/56 + */ + "gcd": function(a2, b2) { + parse(a2, b2); + return new Fraction2(gcd(P2["n"], this["n"]) * gcd(P2["d"], this["d"]), P2["d"] * this["d"]); + }, + /** + * Calculates the fractional lcm of two rational numbers + * + * Ex: new Fraction(5,8).lcm(3,7) => 15 + */ + "lcm": function(a2, b2) { + parse(a2, b2); + if (P2["n"] === 0 && this["n"] === 0) { + return new Fraction2(); + } + return new Fraction2(P2["n"] * this["n"], gcd(P2["n"], this["n"]) * gcd(P2["d"], this["d"])); + }, + /** + * Calculates the ceil of a rational number + * + * Ex: new Fraction('4.(3)').ceil() => (5 / 1) + **/ + "ceil": function(places) { + places = Math.pow(10, places || 0); + if (isNaN(this["n"]) || isNaN(this["d"])) { + return new Fraction2(NaN); + } + return new Fraction2(Math.ceil(places * this["s"] * this["n"] / this["d"]), places); + }, + /** + * Calculates the floor of a rational number + * + * Ex: new Fraction('4.(3)').floor() => (4 / 1) + **/ + "floor": function(places) { + places = Math.pow(10, places || 0); + if (isNaN(this["n"]) || isNaN(this["d"])) { + return new Fraction2(NaN); + } + return new Fraction2(Math.floor(places * this["s"] * this["n"] / this["d"]), places); + }, + /** + * Rounds a rational numbers + * + * Ex: new Fraction('4.(3)').round() => (4 / 1) + **/ + "round": function(places) { + places = Math.pow(10, places || 0); + if (isNaN(this["n"]) || isNaN(this["d"])) { + return new Fraction2(NaN); + } + return new Fraction2(Math.round(places * this["s"] * this["n"] / this["d"]), places); + }, + /** + * Gets the inverse of the fraction, means numerator and denominator are exchanged + * + * Ex: new Fraction([-3, 4]).inverse() => -4 / 3 + **/ + "inverse": function() { + return new Fraction2(this["s"] * this["d"], this["n"]); + }, + /** + * Calculates the fraction to some rational exponent, if possible + * + * Ex: new Fraction(-1,2).pow(-3) => -8 + */ + "pow": function(a2, b2) { + parse(a2, b2); + if (P2["d"] === 1) { + if (P2["s"] < 0) { + return new Fraction2(Math.pow(this["s"] * this["d"], P2["n"]), Math.pow(this["n"], P2["n"])); + } else { + return new Fraction2(Math.pow(this["s"] * this["n"], P2["n"]), Math.pow(this["d"], P2["n"])); + } + } + if (this["s"] < 0) + return null; + var N2 = factorize(this["n"]); + var D2 = factorize(this["d"]); + var n2 = 1; + var d2 = 1; + for (var k2 in N2) { + if (k2 === "1") + continue; + if (k2 === "0") { + n2 = 0; + break; + } + N2[k2] *= P2["n"]; + if (N2[k2] % P2["d"] === 0) { + N2[k2] /= P2["d"]; + } else + return null; + n2 *= Math.pow(k2, N2[k2]); + } + for (var k2 in D2) { + if (k2 === "1") + continue; + D2[k2] *= P2["n"]; + if (D2[k2] % P2["d"] === 0) { + D2[k2] /= P2["d"]; + } else + return null; + d2 *= Math.pow(k2, D2[k2]); + } + if (P2["s"] < 0) { + return new Fraction2(d2, n2); + } + return new Fraction2(n2, d2); + }, + /** + * Check if two rational numbers are the same + * + * Ex: new Fraction(19.6).equals([98, 5]); + **/ + "equals": function(a2, b2) { + parse(a2, b2); + return this["s"] * this["n"] * P2["d"] === P2["s"] * P2["n"] * this["d"]; + }, + /** + * Check if two rational numbers are the same + * + * Ex: new Fraction(19.6).equals([98, 5]); + **/ + "compare": function(a2, b2) { + parse(a2, b2); + var t2 = this["s"] * this["n"] * P2["d"] - P2["s"] * P2["n"] * this["d"]; + return (0 < t2) - (t2 < 0); + }, + "simplify": function(eps) { + if (isNaN(this["n"]) || isNaN(this["d"])) { + return this; + } + var cont = this["abs"]()["toContinued"](); + eps = eps || 1e-3; + function rec(a2) { + if (a2.length === 1) + return new Fraction2(a2[0]); + return rec(a2.slice(1))["inverse"]()["add"](a2[0]); + } + for (var i2 = 0; i2 < cont.length; i2++) { + var tmp = rec(cont.slice(0, i2 + 1)); + if (tmp["sub"](this["abs"]())["abs"]().valueOf() < eps) { + return tmp["mul"](this["s"]); + } + } + return this; + }, + /** + * Check if two rational numbers are divisible + * + * Ex: new Fraction(19.6).divisible(1.5); + */ + "divisible": function(a2, b2) { + parse(a2, b2); + return !(!(P2["n"] * this["d"]) || this["n"] * P2["d"] % (P2["n"] * this["d"])); + }, + /** + * Returns a decimal representation of the fraction + * + * Ex: new Fraction("100.'91823'").valueOf() => 100.91823918239183 + **/ + "valueOf": function() { + return this["s"] * this["n"] / this["d"]; + }, + /** + * Returns a string-fraction representation of a Fraction object + * + * Ex: new Fraction("1.'3'").toFraction() => "4 1/3" + **/ + "toFraction": function(excludeWhole) { + var whole, str = ""; + var n2 = this["n"]; + var d2 = this["d"]; + if (this["s"] < 0) { + str += "-"; + } + if (d2 === 1) { + str += n2; + } else { + if (excludeWhole && (whole = Math.floor(n2 / d2)) > 0) { + str += whole; + str += " "; + n2 %= d2; + } + str += n2; + str += "/"; + str += d2; + } + return str; + }, + /** + * Returns a latex representation of a Fraction object + * + * Ex: new Fraction("1.'3'").toLatex() => "\frac{4}{3}" + **/ + "toLatex": function(excludeWhole) { + var whole, str = ""; + var n2 = this["n"]; + var d2 = this["d"]; + if (this["s"] < 0) { + str += "-"; + } + if (d2 === 1) { + str += n2; + } else { + if (excludeWhole && (whole = Math.floor(n2 / d2)) > 0) { + str += whole; + n2 %= d2; + } + str += "\\frac{"; + str += n2; + str += "}{"; + str += d2; + str += "}"; + } + return str; + }, + /** + * Returns an array of continued fraction elements + * + * Ex: new Fraction("7/8").toContinued() => [0,1,7] + */ + "toContinued": function() { + var t2; + var a2 = this["n"]; + var b2 = this["d"]; + var res = []; + if (isNaN(a2) || isNaN(b2)) { + return res; + } + do { + res.push(Math.floor(a2 / b2)); + t2 = a2 % b2; + a2 = b2; + b2 = t2; + } while (a2 !== 1); + return res; + }, + /** + * Creates a string representation of a fraction with all digits + * + * Ex: new Fraction("100.'91823'").toString() => "100.(91823)" + **/ + "toString": function(dec) { + var g2; + var N2 = this["n"]; + var D2 = this["d"]; + if (isNaN(N2) || isNaN(D2)) { + return "NaN"; + } + if (!Fraction2["REDUCE"]) { + g2 = gcd(N2, D2); + N2 /= g2; + D2 /= g2; + } + dec = dec || 15; + var cycLen = cycleLen(N2, D2); + var cycOff = cycleStart(N2, D2, cycLen); + var str = this["s"] === -1 ? "-" : ""; + str += N2 / D2 | 0; + N2 %= D2; + N2 *= 10; + if (N2) + str += "."; + if (cycLen) { + for (var i2 = cycOff; i2--; ) { + str += N2 / D2 | 0; + N2 %= D2; + N2 *= 10; + } + str += "("; + for (var i2 = cycLen; i2--; ) { + str += N2 / D2 | 0; + N2 %= D2; + N2 *= 10; + } + str += ")"; + } else { + for (var i2 = dec; N2 && i2--; ) { + str += N2 / D2 | 0; + N2 %= D2; + N2 *= 10; + } + } + return str; + } + }; + if (typeof define === "function" && define["amd"]) { + define([], function() { + return Fraction2; + }); + } else if (typeof exports === "object") { + Object.defineProperty(Fraction2, "__esModule", { "value": true }); + Fraction2["default"] = Fraction2; + Fraction2["Fraction"] = Fraction2; + module2["exports"] = Fraction2; + } else { + root["Fraction"] = Fraction2; + } + })(exports); + } +}); + +// node_modules/moment-timezone/moment-timezone.js +var require_moment_timezone = __commonJS({ + "node_modules/moment-timezone/moment-timezone.js"(exports, module2) { + (function(root, factory) { + "use strict"; + if (typeof module2 === "object" && module2.exports) { + module2.exports = factory(require_moment()); + } else if (typeof define === "function" && define.amd) { + define(["moment"], factory); + } else { + factory(root.moment); + } + })(exports, function(moment3) { + "use strict"; + if (moment3.version === void 0 && moment3.default) { + moment3 = moment3.default; + } + var VERSION = "0.5.45", zones = {}, links = {}, countries = {}, names = {}, guesses = {}, cachedGuess; + if (!moment3 || typeof moment3.version !== "string") { + logError("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/"); + } + var momentVersion = moment3.version.split("."), major = +momentVersion[0], minor = +momentVersion[1]; + if (major < 2 || major === 2 && minor < 6) { + logError("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js " + moment3.version + ". See momentjs.com"); + } + function charCodeToInt(charCode) { + if (charCode > 96) { + return charCode - 87; + } else if (charCode > 64) { + return charCode - 29; + } + return charCode - 48; + } + function unpackBase60(string) { + var i2 = 0, parts = string.split("."), whole = parts[0], fractional = parts[1] || "", multiplier = 1, num, out = 0, sign = 1; + if (string.charCodeAt(0) === 45) { + i2 = 1; + sign = -1; + } + for (i2; i2 < whole.length; i2++) { + num = charCodeToInt(whole.charCodeAt(i2)); + out = 60 * out + num; + } + for (i2 = 0; i2 < fractional.length; i2++) { + multiplier = multiplier / 60; + num = charCodeToInt(fractional.charCodeAt(i2)); + out += num * multiplier; + } + return out * sign; + } + function arrayToInt(array) { + for (var i2 = 0; i2 < array.length; i2++) { + array[i2] = unpackBase60(array[i2]); + } + } + function intToUntil(array, length) { + for (var i2 = 0; i2 < length; i2++) { + array[i2] = Math.round((array[i2 - 1] || 0) + array[i2] * 6e4); + } + array[length - 1] = Infinity; + } + function mapIndices(source, indices) { + var out = [], i2; + for (i2 = 0; i2 < indices.length; i2++) { + out[i2] = source[indices[i2]]; + } + return out; + } + function unpack(string) { + var data = string.split("|"), offsets = data[2].split(" "), indices = data[3].split(""), untils = data[4].split(" "); + arrayToInt(offsets); + arrayToInt(indices); + arrayToInt(untils); + intToUntil(untils, indices.length); + return { + name: data[0], + abbrs: mapIndices(data[1].split(" "), indices), + offsets: mapIndices(offsets, indices), + untils, + population: data[5] | 0 + }; + } + function Zone(packedString) { + if (packedString) { + this._set(unpack(packedString)); + } + } + function closest2(num, arr) { + var len = arr.length; + if (num < arr[0]) { + return 0; + } else if (len > 1 && arr[len - 1] === Infinity && num >= arr[len - 2]) { + return len - 1; + } else if (num >= arr[len - 1]) { + return -1; + } + var mid; + var lo = 0; + var hi = len - 1; + while (hi - lo > 1) { + mid = Math.floor((lo + hi) / 2); + if (arr[mid] <= num) { + lo = mid; + } else { + hi = mid; + } + } + return hi; + } + Zone.prototype = { + _set: function(unpacked) { + this.name = unpacked.name; + this.abbrs = unpacked.abbrs; + this.untils = unpacked.untils; + this.offsets = unpacked.offsets; + this.population = unpacked.population; + }, + _index: function(timestamp) { + var target = +timestamp, untils = this.untils, i2; + i2 = closest2(target, untils); + if (i2 >= 0) { + return i2; + } + }, + countries: function() { + var zone_name = this.name; + return Object.keys(countries).filter(function(country_code) { + return countries[country_code].zones.indexOf(zone_name) !== -1; + }); + }, + parse: function(timestamp) { + var target = +timestamp, offsets = this.offsets, untils = this.untils, max2 = untils.length - 1, offset3, offsetNext, offsetPrev, i2; + for (i2 = 0; i2 < max2; i2++) { + offset3 = offsets[i2]; + offsetNext = offsets[i2 + 1]; + offsetPrev = offsets[i2 ? i2 - 1 : i2]; + if (offset3 < offsetNext && tz2.moveAmbiguousForward) { + offset3 = offsetNext; + } else if (offset3 > offsetPrev && tz2.moveInvalidForward) { + offset3 = offsetPrev; + } + if (target < untils[i2] - offset3 * 6e4) { + return offsets[i2]; + } + } + return offsets[max2]; + }, + abbr: function(mom) { + return this.abbrs[this._index(mom)]; + }, + offset: function(mom) { + logError("zone.offset has been deprecated in favor of zone.utcOffset"); + return this.offsets[this._index(mom)]; + }, + utcOffset: function(mom) { + return this.offsets[this._index(mom)]; + } + }; + function Country(country_name, zone_names) { + this.name = country_name; + this.zones = zone_names; + } + function OffsetAt(at2) { + var timeString = at2.toTimeString(); + var abbr = timeString.match(/\([a-z ]+\)/i); + if (abbr && abbr[0]) { + abbr = abbr[0].match(/[A-Z]/g); + abbr = abbr ? abbr.join("") : void 0; + } else { + abbr = timeString.match(/[A-Z]{3,5}/g); + abbr = abbr ? abbr[0] : void 0; + } + if (abbr === "GMT") { + abbr = void 0; + } + this.at = +at2; + this.abbr = abbr; + this.offset = at2.getTimezoneOffset(); + } + function ZoneScore(zone) { + this.zone = zone; + this.offsetScore = 0; + this.abbrScore = 0; + } + ZoneScore.prototype.scoreOffsetAt = function(offsetAt) { + this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset); + if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, "") !== offsetAt.abbr) { + this.abbrScore++; + } + }; + function findChange(low, high) { + var mid, diff; + while (diff = ((high.at - low.at) / 12e4 | 0) * 6e4) { + mid = new OffsetAt(new Date(low.at + diff)); + if (mid.offset === low.offset) { + low = mid; + } else { + high = mid; + } + } + return low; + } + function userOffsets() { + var startYear = (/* @__PURE__ */ new Date()).getFullYear() - 2, last5 = new OffsetAt(new Date(startYear, 0, 1)), lastOffset = last5.offset, offsets = [last5], change, next, nextOffset, i2; + for (i2 = 1; i2 < 48; i2++) { + nextOffset = new Date(startYear, i2, 1).getTimezoneOffset(); + if (nextOffset !== lastOffset) { + next = new OffsetAt(new Date(startYear, i2, 1)); + change = findChange(last5, next); + offsets.push(change); + offsets.push(new OffsetAt(new Date(change.at + 6e4))); + last5 = next; + lastOffset = nextOffset; + } + } + for (i2 = 0; i2 < 4; i2++) { + offsets.push(new OffsetAt(new Date(startYear + i2, 0, 1))); + offsets.push(new OffsetAt(new Date(startYear + i2, 6, 1))); + } + return offsets; + } + function sortZoneScores(a2, b2) { + if (a2.offsetScore !== b2.offsetScore) { + return a2.offsetScore - b2.offsetScore; + } + if (a2.abbrScore !== b2.abbrScore) { + return a2.abbrScore - b2.abbrScore; + } + if (a2.zone.population !== b2.zone.population) { + return b2.zone.population - a2.zone.population; + } + return b2.zone.name.localeCompare(a2.zone.name); + } + function addToGuesses(name, offsets) { + var i2, offset3; + arrayToInt(offsets); + for (i2 = 0; i2 < offsets.length; i2++) { + offset3 = offsets[i2]; + guesses[offset3] = guesses[offset3] || {}; + guesses[offset3][name] = true; + } + } + function guessesForUserOffsets(offsets) { + var offsetsLength = offsets.length, filteredGuesses = {}, out = [], checkedOffsets = {}, i2, j2, offset3, guessesOffset; + for (i2 = 0; i2 < offsetsLength; i2++) { + offset3 = offsets[i2].offset; + if (checkedOffsets.hasOwnProperty(offset3)) { + continue; + } + guessesOffset = guesses[offset3] || {}; + for (j2 in guessesOffset) { + if (guessesOffset.hasOwnProperty(j2)) { + filteredGuesses[j2] = true; + } + } + checkedOffsets[offset3] = true; + } + for (i2 in filteredGuesses) { + if (filteredGuesses.hasOwnProperty(i2)) { + out.push(names[i2]); + } + } + return out; + } + function rebuildGuess() { + try { + var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone; + if (intlName && intlName.length > 3) { + var name = names[normalizeName(intlName)]; + if (name) { + return name; + } + logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded."); + } + } catch (e2) { + } + var offsets = userOffsets(), offsetsLength = offsets.length, guesses2 = guessesForUserOffsets(offsets), zoneScores = [], zoneScore, i2, j2; + for (i2 = 0; i2 < guesses2.length; i2++) { + zoneScore = new ZoneScore(getZone(guesses2[i2]), offsetsLength); + for (j2 = 0; j2 < offsetsLength; j2++) { + zoneScore.scoreOffsetAt(offsets[j2]); + } + zoneScores.push(zoneScore); + } + zoneScores.sort(sortZoneScores); + return zoneScores.length > 0 ? zoneScores[0].zone.name : void 0; + } + function guess(ignoreCache) { + if (!cachedGuess || ignoreCache) { + cachedGuess = rebuildGuess(); + } + return cachedGuess; + } + function normalizeName(name) { + return (name || "").toLowerCase().replace(/\//g, "_"); + } + function addZone(packed) { + var i2, name, split, normalized; + if (typeof packed === "string") { + packed = [packed]; + } + for (i2 = 0; i2 < packed.length; i2++) { + split = packed[i2].split("|"); + name = split[0]; + normalized = normalizeName(name); + zones[normalized] = packed[i2]; + names[normalized] = name; + addToGuesses(normalized, split[2].split(" ")); + } + } + function getZone(name, caller) { + name = normalizeName(name); + var zone = zones[name]; + var link; + if (zone instanceof Zone) { + return zone; + } + if (typeof zone === "string") { + zone = new Zone(zone); + zones[name] = zone; + return zone; + } + if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) { + zone = zones[name] = new Zone(); + zone._set(link); + zone.name = names[name]; + return zone; + } + return null; + } + function getNames() { + var i2, out = []; + for (i2 in names) { + if (names.hasOwnProperty(i2) && (zones[i2] || zones[links[i2]]) && names[i2]) { + out.push(names[i2]); + } + } + return out.sort(); + } + function getCountryNames() { + return Object.keys(countries); + } + function addLink(aliases) { + var i2, alias, normal0, normal1; + if (typeof aliases === "string") { + aliases = [aliases]; + } + for (i2 = 0; i2 < aliases.length; i2++) { + alias = aliases[i2].split("|"); + normal0 = normalizeName(alias[0]); + normal1 = normalizeName(alias[1]); + links[normal0] = normal1; + names[normal0] = alias[0]; + links[normal1] = normal0; + names[normal1] = alias[1]; + } + } + function addCountries(data) { + var i2, country_code, country_zones, split; + if (!data || !data.length) + return; + for (i2 = 0; i2 < data.length; i2++) { + split = data[i2].split("|"); + country_code = split[0].toUpperCase(); + country_zones = split[1].split(" "); + countries[country_code] = new Country( + country_code, + country_zones + ); + } + } + function getCountry(name) { + name = name.toUpperCase(); + return countries[name] || null; + } + function zonesForCountry(country, with_offset) { + country = getCountry(country); + if (!country) + return null; + var zones2 = country.zones.sort(); + if (with_offset) { + return zones2.map(function(zone_name) { + var zone = getZone(zone_name); + return { + name: zone_name, + offset: zone.utcOffset(/* @__PURE__ */ new Date()) + }; + }); + } + return zones2; + } + function loadData(data) { + addZone(data.zones); + addLink(data.links); + addCountries(data.countries); + tz2.dataVersion = data.version; + } + function zoneExists(name) { + if (!zoneExists.didShowError) { + zoneExists.didShowError = true; + logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')"); + } + return !!getZone(name); + } + function needsOffset(m2) { + var isUnixTimestamp = m2._f === "X" || m2._f === "x"; + return !!(m2._a && m2._tzm === void 0 && !isUnixTimestamp); + } + function logError(message) { + if (typeof console !== "undefined" && typeof console.error === "function") { + console.error(message); + } + } + function tz2(input) { + var args = Array.prototype.slice.call(arguments, 0, -1), name = arguments[arguments.length - 1], out = moment3.utc.apply(null, args), zone; + if (!moment3.isMoment(input) && needsOffset(out) && (zone = getZone(name))) { + out.add(zone.parse(out), "minutes"); + } + out.tz(name); + return out; + } + tz2.version = VERSION; + tz2.dataVersion = ""; + tz2._zones = zones; + tz2._links = links; + tz2._names = names; + tz2._countries = countries; + tz2.add = addZone; + tz2.link = addLink; + tz2.load = loadData; + tz2.zone = getZone; + tz2.zoneExists = zoneExists; + tz2.guess = guess; + tz2.names = getNames; + tz2.Zone = Zone; + tz2.unpack = unpack; + tz2.unpackBase60 = unpackBase60; + tz2.needsOffset = needsOffset; + tz2.moveInvalidForward = true; + tz2.moveAmbiguousForward = false; + tz2.countries = getCountryNames; + tz2.zonesForCountry = zonesForCountry; + var fn = moment3.fn; + moment3.tz = tz2; + moment3.defaultZone = null; + moment3.updateOffset = function(mom, keepTime) { + var zone = moment3.defaultZone, offset3; + if (mom._z === void 0) { + if (zone && needsOffset(mom) && !mom._isUTC && mom.isValid()) { + mom._d = moment3.utc(mom._a)._d; + mom.utc().add(zone.parse(mom), "minutes"); + } + mom._z = zone; + } + if (mom._z) { + offset3 = mom._z.utcOffset(mom); + if (Math.abs(offset3) < 16) { + offset3 = offset3 / 60; + } + if (mom.utcOffset !== void 0) { + var z2 = mom._z; + mom.utcOffset(-offset3, keepTime); + mom._z = z2; + } else { + mom.zone(offset3, keepTime); + } + } + }; + fn.tz = function(name, keepTime) { + if (name) { + if (typeof name !== "string") { + throw new Error("Time zone name must be a string, got " + name + " [" + typeof name + "]"); + } + this._z = getZone(name); + if (this._z) { + moment3.updateOffset(this, keepTime); + } else { + logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/."); + } + return this; + } + if (this._z) { + return this._z.name; + } + }; + function abbrWrap(old) { + return function() { + if (this._z) { + return this._z.abbr(this); + } + return old.call(this); + }; + } + function resetZoneWrap(old) { + return function() { + this._z = null; + return old.apply(this, arguments); + }; + } + function resetZoneWrap2(old) { + return function() { + if (arguments.length > 0) + this._z = null; + return old.apply(this, arguments); + }; + } + fn.zoneName = abbrWrap(fn.zoneName); + fn.zoneAbbr = abbrWrap(fn.zoneAbbr); + fn.utc = resetZoneWrap(fn.utc); + fn.local = resetZoneWrap(fn.local); + fn.utcOffset = resetZoneWrap2(fn.utcOffset); + moment3.tz.setDefault = function(name) { + if (major < 2 || major === 2 && minor < 9) { + logError("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js " + moment3.version + "."); + } + moment3.defaultZone = name ? getZone(name) : null; + return moment3; + }; + var momentProperties = moment3.momentProperties; + if (Object.prototype.toString.call(momentProperties) === "[object Array]") { + momentProperties.push("_z"); + momentProperties.push("_a"); + } else if (momentProperties) { + momentProperties._z = null; + } + return moment3; + }); + } +}); + +// node_modules/moment-timezone/data/packed/latest.json +var require_latest = __commonJS({ + "node_modules/moment-timezone/data/packed/latest.json"(exports, module2) { + module2.exports = { + version: "2024a", + zones: [ + "Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5", + "Africa/Nairobi|LMT +0230 EAT +0245|-2r.g -2u -30 -2J|012132|-2ua2r.g N6nV.g 3Fbu h1cu dzbJ|47e5", + "Africa/Algiers|LMT PMT WET WEST CET CEST|-c.c -9.l 0 -10 -10 -20|01232323232323232454542423234542324|-3bQ0c.c MDA2.P cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5", + "Africa/Lagos|LMT GMT +0030 WAT|-d.z 0 -u -10|01023|-2B40d.z 7iod.z dnXK.p dLzH.z|17e6", + "Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4", + "Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5", + "Africa/Cairo|LMT EET EEST|-25.9 -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBC5.9 1AQM5.9 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0 kSp0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0|15e6", + "Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5", + "Africa/Ceuta|LMT WET WEST CET CEST|l.g 0 -10 -10 -20|0121212121212121212121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2M0M0 GdX0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|85e3", + "Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|20e4", + "Africa/Johannesburg|LMT SAST SAST SAST|-1Q -1u -20 -30|0123232|-39EpQ qTcm 1Ajdu 1cL0 1cN0 1cL0|84e5", + "Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|012121212121212121212121212121212131|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 PeX0|", + "Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5", + "Africa/Monrovia|LMT MMT MMT GMT|H.8 H.8 I.u 0|0123|-3ygng.Q 1usM0 28G01.m|11e5", + "Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5", + "Africa/Sao_Tome|LMT LMT GMT WAT|-q.U A.J 0 -10|01232|-3tooq.U 18aoq.U 4i6N0 2q00|", + "Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5", + "Africa/Tunis|LMT PMT CET CEST|-E.I -9.l -10 -20|01232323232323232323232323232323232|-3zO0E.I 1cBAv.n 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5", + "Africa/Windhoek|LMT +0130 SAST SAST CAT WAT|-18.o -1u -20 -30 -20 -10|012324545454545454545454545454545454545454545454545454|-39Ep8.o qTbC.o 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4", + "America/Adak|LMT LMT NST NWT NPT BST BDT AHST HST HDT|-cd.m bK.C b0 a0 a0 b0 a0 a0 a0 90|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVzf.p 1EX1d.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326", + "America/Anchorage|LMT LMT AST AWT APT AHST AHDT YST AKST AKDT|-e0.o 9X.A a0 90 90 a0 90 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVxs.n 1EX20.o 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4", + "America/Puerto_Rico|LMT AST AWT APT|4o.p 40 30 30|01231|-2Qi7z.z 1IUbz.z 7XT0 iu0|24e5", + "America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4", + "America/Argentina/Buenos_Aires|LMT CMT -04 -03 -02|3R.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343434343|-331U6.c 125cn pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|", + "America/Argentina/Catamarca|LMT CMT -04 -03 -02|4n.8 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243432343|-331TA.Q 125bR.E pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|", + "America/Argentina/Cordoba|LMT CMT -04 -03 -02|4g.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243434343|-331TH.c 125c0 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|", + "America/Argentina/Jujuy|LMT CMT -04 -03 -02|4l.c 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232434343|-331TC.M 125bT.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|", + "America/Argentina/La_Rioja|LMT CMT -04 -03 -02|4r.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tw.A 125bN.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|", + "America/Argentina/Mendoza|LMT CMT -04 -03 -02|4z.g 4g.M 40 30 20|012323232323232323232323232323232323232323234343423232432343|-331To.I 125bF.w pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|", + "America/Argentina/Rio_Gallegos|LMT CMT -04 -03 -02|4A.Q 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tn.8 125bD.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|", + "America/Argentina/Salta|LMT CMT -04 -03 -02|4l.E 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342434343|-331TC.k 125bT.8 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|", + "America/Argentina/San_Juan|LMT CMT -04 -03 -02|4y.4 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tp.U 125bG.I pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|", + "America/Argentina/San_Luis|LMT CMT -04 -03 -02|4p.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232323432323|-331Ty.A 125bP.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|", + "America/Argentina/Tucuman|LMT CMT -04 -03 -02|4k.Q 4g.M 40 30 20|01232323232323232323232323232323232323232323434343424343234343|-331TD.8 125bT.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|", + "America/Argentina/Ushuaia|LMT CMT -04 -03 -02|4x.c 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tq.M 125bH.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|", + "America/Asuncion|LMT AMT -04 -03|3O.E 3O.E 40 30|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-3eLw9.k 1FGo0 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0|28e5", + "America/Panama|LMT CMT EST|5i.8 5j.A 50|012|-3eLuF.Q Iy01.s|15e5", + "America/Bahia_Banderas|LMT MST CST MDT PST CDT|71 70 60 60 80 50|0121312141313131313131313131313131313152525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|84e3", + "America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5", + "America/Barbados|LMT AST ADT -0330|3W.t 40 30 3u|0121213121212121|-2m4k1.v 1eAN1.v RB0 1Bz0 Op0 1rb0 11d0 1jJc0 IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4", + "America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5", + "America/Belize|LMT CST -0530 CWT CPT CDT|5Q.M 60 5u 50 50 50|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121215151|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu Rcu 7Bt0 Ni0 4nd0 Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu e9Au qn0 lxB0 mn0|57e3", + "America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2", + "America/Bogota|LMT BMT -05 -04|4U.g 4U.g 50 40|01232|-3sTv3.I 1eIo0 38yo3.I 1PX0|90e5", + "America/Boise|LMT PST PDT MST MWT MPT MDT|7I.N 80 70 70 60 60 60|01212134536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-3tFE0 1nEe0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4", + "America/Cambridge_Bay|-00 MST MWT MPT MDT CST CDT EST|0 70 60 60 60 60 50 50|012314141414141414141414141414141414141414141414141414141414567541414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-21Jc0 RO90 8x20 ix0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2", + "America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4", + "America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4", + "America/Caracas|LMT CMT -0430 -04|4r.I 4r.E 4u 40|012323|-3eLvw.g ROnX.U 28KM2.k 1IwOu kqo0|29e5", + "America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3", + "America/Chicago|LMT CST CDT EST CWT CPT|5O.A 60 50 50 50 50|012121212121212121212121212121212121213121212121214512121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5", + "America/Chihuahua|LMT MST CST MDT CDT|74.k 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4", + "America/Ciudad_Juarez|LMT MST CST MDT CDT|75.U 70 60 60 50|01213124242313131313131313131313131313131313131313131313131321313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Costa_Rica|LMT SJMT CST CDT|5A.d 5A.d 60 50|01232323232|-3eLun.L 1fyo0 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5", + "America/Phoenix|LMT MST MDT MWT|7s.i 70 60 60|012121313121|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5", + "America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4", + "America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8", + "America/Dawson_Creek|LMT PST PDT PWT PPT MST|80.U 80 70 70 70 70|01213412121212121212121212121212121212121212121212121212125|-3tofX.4 1nspX.4 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3", + "America/Dawson|LMT YST YDT YWT YPT YDDT PST PDT MST|9h.E 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeG.k GWpG.k 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|13e2", + "America/Denver|LMT MST MDT MWT MPT|6X.U 70 60 60 60|012121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFF0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5", + "America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|0123425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 JxX1 SMX 1cN0 1cL0 aW10 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5", + "America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|0121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 XQp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5", + "America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3", + "America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5", + "America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 4Q00 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5", + "America/Fort_Nelson|LMT PST PDT PWT PPT MST|8a.L 80 70 70 70 70|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121215|-3tofN.d 1nspN.d 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2", + "America/Fort_Wayne|LMT CST CDT CWT CPT EST EDT|5I.C 60 50 50 50 50 40|0121212134121212121212121212151565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5", + "America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3", + "America/Godthab|LMT -03 -02 -01|3q.U 30 20 10|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e3", + "America/Goose_Bay|LMT NST NDT NST NDT NWT NPT AST ADT ADDT|41.E 3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|0121343434343434356343434343434343434343434343434343434343437878787878787878787878787878787878787878787879787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-3tojW.k 1nspt.c 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2", + "America/Grand_Turk|LMT KMT EST EDT AST|4I.w 57.a 50 40 40|01232323232323232323232323232323232323232323232323232323232323232323232323243232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLvf.s RK0m.C 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2", + "America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5", + "America/Guayaquil|LMT QMT -05 -04|5j.k 5e 50 40|01232|-3eLuE.E 1DNzS.E 2uILK rz0|27e5", + "America/Guyana|LMT -04 -0345 -03|3Q.D 40 3J 30|01231|-2mf87.l 8Hc7.l 2r7bJ Ey0f|80e4", + "America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4", + "America/Havana|LMT HMT CST CDT|5t.s 5t.A 50 40|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLuu.w 1qx00.8 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5", + "America/Hermosillo|LMT MST CST MDT PST|7n.Q 70 60 60 80|0121312141313131|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4", + "America/Indiana/Knox|LMT CST CDT CWT CPT EST|5K.u 60 50 50 50 50|01212134121212121212121212121212121212151212121212121212121212121212121212121212121212121252121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Marengo|LMT CST CDT CWT CPT EST EDT|5J.n 60 50 50 50 50 40|01212134121212121212121215656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Petersburg|LMT CST CDT CWT CPT EST EDT|5N.7 60 50 50 50 50 40|012121341212121212121212121215121212121212121212121252125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Tell_City|LMT CST CDT CWT CPT EST EDT|5L.3 60 50 50 50 50 40|012121341212121212121212121512165652121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 8wn0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Vevay|LMT CST CDT CWT CPT EST EDT|5E.g 60 50 50 50 50 40|0121213415656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Vincennes|LMT CST CDT CWT CPT EST EDT|5O.7 60 50 50 50 50 40|012121341212121212121212121212121565652125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Indiana/Winamac|LMT CST CDT CWT CPT EST EDT|5K.p 60 50 50 50 50 40|012121341212121212121212121212121212121565652165656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Inuvik|-00 PST PDT MDT MST|0 80 70 60 70|01212121212121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-FnA0 L3K0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2", + "America/Iqaluit|-00 EWT EPT EST EDT CST CDT|0 40 40 50 40 60 50|0123434343434343434343434343434343434343434343434343434343456343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-16K00 7nX0 iv0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2", + "America/Jamaica|LMT KMT EST EDT|57.a 57.a 50 40|01232323232323232323232|-3eLuQ.O RK00 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4", + "America/Juneau|LMT LMT PST PWT PPT PDT YDT YST AKST AKDT|-f2.j 8V.F 80 70 70 70 80 90 90 80|0123425252525252525252525252625252578989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVwq.s 1EX12.j 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3", + "America/Kentucky/Louisville|LMT CST CDT CWT CPT EST EDT|5H.2 60 50 50 50 50 40|01212121213412121212121212121212121212565656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 1nX1 e0X 9vd0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Kentucky/Monticello|LMT CST CDT CWT CPT EST EDT|5D.o 60 50 50 50 50 40|01212134121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/La_Paz|LMT CMT BST -04|4w.A 4w.A 3w.A 40|0123|-3eLvr.o 1FIo0 13b0|19e5", + "America/Lima|LMT LMT -05 -04|58.c 58.A 50 40|01232323232323232|-3eLuP.M JcM0.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6", + "America/Los_Angeles|LMT PST PDT PWT PPT|7Q.W 80 70 70 70|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFE0 1nEe0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6", + "America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4", + "America/Managua|LMT MMT CST EST CDT|5J.8 5J.c 60 50 50|01232424232324242|-3eLue.Q 1Mhc0.4 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5", + "America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5", + "America/Martinique|LMT FFMT AST ADT|44.k 44.k 40 30|01232|-3eLvT.E PTA0 2LPbT.E 19X0|39e4", + "America/Matamoros|LMT CST CDT|6u 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4", + "America/Mazatlan|LMT MST CST MDT PST|75.E 70 60 60 80|0121312141313131313131313131313131313131313131313131313131313131|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4", + "America/Menominee|LMT CST CDT CWT CPT EST|5O.r 60 50 50 50 50|012121341212152121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3pdG9.x 1jce9.x 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2", + "America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|11e5", + "America/Metlakatla|LMT LMT PST PWT PPT PDT AKST AKDT|-fd.G 8K.i 80 70 70 70 90 80|0123425252525252525252525252525252526767672676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwf.5 1EX1d.G 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2", + "America/Mexico_City|LMT MST CST MDT CDT CWT|6A.A 70 60 60 50 50|012131242425242424242424242424242424242424242424242424242424242424242|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6", + "America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mxUf.k 2LHcf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2", + "America/Moncton|LMT EST AST ADT AWT APT|4j.8 50 40 30 30 30|0123232323232323232323245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3txvE.Q J4ME.Q CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3", + "America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|41e5", + "America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5", + "America/Toronto|LMT EST EDT EWT EPT|5h.w 50 40 40 40|012121212121212121212121212121212121212121212123412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-32B6G.s UFdG.s 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1qL0 11B0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5", + "America/New_York|LMT EST EDT EWT EPT|4U.2 50 40 40 40|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFH0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6", + "America/Nome|LMT LMT NST NWT NPT BST BDT YST AKST AKDT|-cW.m b1.C b0 a0 a0 b0 a0 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVyu.p 1EX1W.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2", + "America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2", + "America/North_Dakota/Beulah|LMT MST MDT MWT MPT CST CDT|6L.7 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/North_Dakota/Center|LMT MST MDT MWT MPT CST CDT|6J.c 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/North_Dakota/New_Salem|LMT MST MDT MWT MPT CST CDT|6J.D 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "America/Ojinaga|LMT MST CST MDT CDT|6V.E 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3", + "America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4", + "America/Port-au-Prince|LMT PPMT EST EDT|4N.k 4N 50 40|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLva.E 15RLX.E 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5", + "America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4", + "America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4", + "America/Punta_Arenas|LMT SMT -05 -04 -03|4H.E 4G.J 50 40 30|01213132323232323232343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvg.k MJbX.5 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|", + "America/Winnipeg|LMT CST CDT CWT CPT|6s.A 60 50 50 50|0121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3kLtv.o 1a3bv.o WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4", + "America/Rankin_Inlet|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-vDc0 Bjk0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2", + "America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5", + "America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4", + "America/Resolute|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-SnA0 103I0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229", + "America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4", + "America/Santiago|LMT SMT -05 -04 -03|4G.J 4G.J 50 40 30|0121313232323232323432343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvh.f MJc0 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 hX0 1q10 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|62e5", + "America/Santo_Domingo|LMT SDMT EST EDT -0430 AST|4D.A 4E 50 40 4u 40|012324242424242525|-3eLvk.o 1Jic0.o 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5", + "America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6", + "America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|012132323232323232323232323232323232323232323232323232323232323232323232323232323232323232121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 2pA0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|452", + "America/Sitka|LMT LMT PST PWT PPT PDT YST AKST AKDT|-eW.L 91.d 80 70 70 70 90 90 80|0123425252525252525252525252525252567878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-48Pzs.L 1jVwu 1EX0W.L 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2", + "America/St_Johns|LMT NST NDT NST NDT NWT NPT NDDT|3u.Q 3u.Q 2u.Q 3u 2u 2u 2u 1u|012121212121212121212121212121212121213434343434343435634343434343434343434343434343434343434343434343434343434343434343434343434343434343437343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tokt.8 1l020 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4", + "America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3", + "America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5", + "America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656", + "America/Vancouver|LMT PST PDT PWT PPT|8c.s 80 70 70 70|01213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tofL.w 1nspL.w 1in0 UGp0 8x10 iy0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5", + "America/Whitehorse|LMT YST YDT YWT YPT YDDT PST PDT MST|90.c 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeX.M GWpX.M 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 LA0 ytd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3", + "America/Yakutat|LMT LMT YST YWT YPT YDT AKST AKDT|-eF.5 9i.T 90 80 80 80 90 80|0123425252525252525252525252525252526767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwL.G 1EX1F.5 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642", + "Antarctica/Casey|-00 +08 +11|0 -80 -b0|012121212121212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01 14kX 1lf1 14kX 1lf1 13bX|10", + "Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70", + "Pacific/Port_Moresby|LMT PMMT +10|-9M.E -9M.w -a0|012|-3D8VM.E AvA0.8|25e4", + "Antarctica/Macquarie|-00 AEST AEDT|0 -a0 -b0|0121012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2OPc0 Fb40 1a00 4SK0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 3Co0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|1", + "Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60", + "Pacific/Auckland|LMT NZMT NZST NZST NZDT|-bD.4 -bu -cu -c0 -d0|012131313131313131313131313134343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-46jLD.4 2nEO9.4 Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5", + "Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40", + "Antarctica/Rothera|-00 -03|0 30|01|gOo0|130", + "Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5", + "Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|40", + "Antarctica/Vostok|-00 +07 +05|0 -70 -50|01012|-tjA0 1rWh0 1Nj0 1aTv0|25", + "Europe/Berlin|LMT CET CEST CEMT|-R.s -10 -20 -30|012121212121212321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36RcR.s UbWR.s 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e5", + "Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|0123232323232323232323212323232323232323232323232321|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 L4m0|15e5", + "Asia/Amman|LMT EET EEST +03|-2n.I -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5", + "Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3", + "Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4", + "Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4", + "Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4", + "Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|", + "Asia/Baghdad|LMT BMT +03 +04|-2V.E -2V.A -30 -40|0123232323232323232323232323232323232323232323232323232|-3eLCV.E 18ao0.4 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5", + "Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4", + "Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5", + "Asia/Bangkok|LMT BMT +07|-6G.4 -6G.4 -70|012|-3D8SG.4 1C000|15e6", + "Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|", + "Asia/Beirut|LMT EET EEST|-2m -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3D8Om 1BWom 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|22e5", + "Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4", + "Asia/Brunei|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|42e4", + "Asia/Kolkata|LMT HMT MMT IST +0630|-5R.s -5R.k -5l.a -5u -6u|01234343|-4Fg5R.s BKo0.8 1rDcw.a 1r2LP.a 1un0 HB0 7zX0|15e6", + "Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4", + "Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3", + "Asia/Shanghai|LMT CST CDT|-85.H -80 -90|012121212121212121212121212121|-2M0U5.H Iuo5.H 18n0 OjB0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6", + "Asia/Colombo|LMT MMT +0530 +06 +0630|-5j.o -5j.w -5u -60 -6u|012342432|-3D8Rj.o 13inX.Q 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5", + "Asia/Dhaka|LMT HMT +0630 +0530 +06 +07|-61.E -5R.k -6u -5u -60 -70|01232454|-3eLG1.E 26008.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6", + "Asia/Damascus|LMT EET EEST +03|-2p.c -20 -30 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5", + "Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4", + "Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5", + "Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4", + "Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", + "Asia/Gaza|LMT EET EEST IST IDT|-2h.Q -20 -30 -20 -30|0121212121212121212121212121212121234343434343434343434343434343431212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCh.Q 1Azeh.Q MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|18e5", + "Asia/Hebron|LMT EET EEST IST IDT|-2k.n -20 -30 -20 -30|012121212121212121212121212121212123434343434343434343434343434343121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCk.n 1Azek.n MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|25e4", + "Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.u -76.u -70 -80 -90|0123423232|-2yC76.u bK00 1h7b6.u 5lz0 18o0 3Oq0 k5c0 aVX0 BAM0|90e5", + "Asia/Hong_Kong|LMT HKT HKST HKWT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5", + "Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3", + "Asia/Irkutsk|LMT IMT +07 +08 +09|-6V.5 -6V.5 -70 -80 -90|012343434343434343434343234343434343434343434343434343434343434343|-3D8SV.5 1Bxc0 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4", + "Europe/Istanbul|LMT IMT EET EEST +03 +04|-1T.Q -1U.U -20 -30 -30 -40|01232323232323232323232323232323232323232323232345423232323232323232323232323232323232323232323232323232323232323234|-3D8NT.Q 1ePXW.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSN0 CL0 mp0 1Vz0 1gN0 8yn0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1ip0 19X0 1ip0 17b0 qdB0 38L0 1jd0 Tz0 l6O0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6", + "Asia/Jakarta|LMT BMT +0720 +0730 +09 +08 WIB|-77.c -77.c -7k -7u -90 -80 -70|012343536|-49jH7.c 2hiLL.c luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6", + "Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4", + "Asia/Jerusalem|LMT JMT IST IDT IDDT|-2k.S -2k.E -20 -30 -40|012323232323232432323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8Ok.S 1wvA0.e SyOk.E MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 3LA0 Eo0 oo0 1co0 1dA0 16o0 10M0 1jc0 1tA0 14o0 1cM0 1a00 11A0 1Nc0 Ao0 1Nc0 Ao0 1Ko0 LA0 1o00 WM0 EQK0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0|81e4", + "Asia/Kabul|LMT +04 +0430|-4A.M -40 -4u|012|-3eLEA.M 2dTcA.M|46e5", + "Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4", + "Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6", + "Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5", + "Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5", + "Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2", + "Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5", + "Asia/Kuala_Lumpur|LMT SMT +07 +0720 +0730 +09 +08|-6T.p -6T.p -70 -7k -7u -90 -80|01234546|-2M0ST.p aIM0 17anT.p l5XE 17bO 8Fyu 1so10|71e5", + "Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4", + "Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3", + "Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5", + "Asia/Manila|LMT LMT PST PDT JST|fU -84 -80 -90 -90|01232423232|-54m84 2clc0 1vfc4 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6", + "Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|32e4", + "Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4", + "Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5", + "Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5", + "Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4", + "Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4", + "Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5", + "Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 Mv90|", + "Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4", + "Asia/Rangoon|LMT RMT +0630 +09|-6o.L -6o.L -6u -90|01232|-3D8So.L 1BnA0 SmnS.L 7j9u|48e5", + "Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4", + "Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4", + "Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -a0 -9u|012343434343151515151515134343|-2um8r.Q 97XV.Q 1m1zu 6CM0 Fz0 1kN0 14n0 1kN0 14L0 1zd0 On0 69B0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6", + "Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2", + "Asia/Taipei|LMT CST JST CDT|-86 -80 -90 -90|012131313131313131313131313131313131313131|-30bk6 1FDc6 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5", + "Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5", + "Asia/Tbilisi|LMT TBMT +03 +04 +05|-2X.b -2X.b -30 -40 -50|01234343434343434343434323232343434343434343434323|-3D8OX.b 1LUM0 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5", + "Asia/Tehran|LMT TMT +0330 +0430 +04 +05|-3p.I -3p.I -3u -4u -40 -50|012345423232323232323232323232323232323232323232323232323232323232323232|-2btDp.I Llc0 1FHaT.I 1pc0 120u Rc0 XA0 Wou JX0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6", + "Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3", + "Asia/Tokyo|LMT JST JDT|-9i.X -90 -a0|0121212121|-3jE90 2qSo0 Rc0 1lc0 14o0 1zc0 Oo0 1zc0 Oo0|38e6", + "Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5", + "Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5", + "Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2", + "Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4", + "Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4", + "Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5", + "Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5", + "Atlantic/Azores|LMT HMT -02 -01 +00 WET|1G.E 1S.w 20 10 0 0|01232323232323232323232323232323232323232323234323432343234323232323232323232323232323232323232323232343434343434343434343434343434345434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tomh.k 18aoh.k aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|25e4", + "Atlantic/Bermuda|LMT BMT BST AST ADT|4j.i 4j.i 3j.i 40 30|0121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3eLvE.G 16mo0 1bb0 1i10 11X0 ru30 thbE.G 1PX0 11B0 1tz0 Rd0 1zb0 Op0 1zb0 3I10 Lz0 1EN0 FX0 1HB0 FX0 1Kp0 Db0 1Kp0 Db0 1Kp0 FX0 93d0 11z0 GAp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3", + "Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4", + "Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4", + "Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|49e3", + "Atlantic/Madeira|LMT FMT -01 +00 +01 WET WEST|17.A 17.A 10 0 -10 0 -10|01232323232323232323232323232323232323232323234323432343234323232323232323232323232323232323232323232565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tomQ.o 18anQ.o aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e4", + "Atlantic/South_Georgia|LMT -02|2q.8 20|01|-3eLxx.Q|30", + "Atlantic/Stanley|LMT SMT -04 -03 -02|3P.o 3P.o 40 30 20|0123232323232323434323232323232323232323232323232323232323232323232323|-3eLw8.A S200 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2", + "Australia/Sydney|LMT AEST AEDT|-a4.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oW4.Q RlC4.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5", + "Australia/Adelaide|LMT ACST ACST ACDT|-9e.k -90 -9u -au|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-32oVe.k ak0e.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5", + "Australia/Brisbane|LMT AEST AEDT|-ac.8 -a0 -b0|012121212121212121|-32Bmc.8 Ry2c.8 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5", + "Australia/Broken_Hill|LMT AEST ACST ACST ACDT|-9p.M -a0 -90 -9u -au|0123434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-32oVp.M 3Lzp.M 6wp0 H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|18e3", + "Australia/Hobart|LMT AEST AEDT|-9N.g -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-3109N.g Pk1N.g 1a00 1qM0 Oo0 1zc0 Oo0 TAo0 yM0 1cM0 1cM0 1fA0 1a00 VfA0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|21e4", + "Australia/Darwin|LMT ACST ACST ACDT|-8H.k -90 -9u -au|01232323232|-32oUH.k ajXH.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00|12e4", + "Australia/Eucla|LMT +0845 +0945|-8z.s -8J -9J|01212121212121212121|-30nIz.s PkpO.s xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368", + "Australia/Lord_Howe|LMT AEST +1030 +1130 +11|-aA.k -a0 -au -bu -b0|01232323232424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424|-32oWA.k 3tzAA.k 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347", + "Australia/Lindeman|LMT AEST AEDT|-9T.U -a0 -b0|0121212121212121212121|-32BlT.U Ry1T.U xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10", + "Australia/Melbourne|LMT AEST AEDT|-9D.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oVD.Q RlBD.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|39e5", + "Australia/Perth|LMT AWST AWDT|-7H.o -80 -90|01212121212121212121|-30nHH.o PkpH.o xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5", + "CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", + "Pacific/Easter|LMT EMT -07 -06 -05|7h.s 7h.s 70 60 50|0123232323232323232323232323234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLsG.w 1HRc0 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|30e2", + "CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", + "Europe/Dublin|LMT DMT IST GMT BST IST|p.l p.l -y.D 0 -10 -10|012343434343435353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353|-3BHby.D 1ra20 Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", + "EST|EST|50|0||", + "EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "Etc/GMT-0|GMT|0|0||", + "Etc/GMT-1|+01|-10|0||", + "Etc/GMT-10|+10|-a0|0||", + "Etc/GMT-11|+11|-b0|0||", + "Etc/GMT-12|+12|-c0|0||", + "Etc/GMT-13|+13|-d0|0||", + "Etc/GMT-14|+14|-e0|0||", + "Etc/GMT-2|+02|-20|0||", + "Etc/GMT-3|+03|-30|0||", + "Etc/GMT-4|+04|-40|0||", + "Etc/GMT-5|+05|-50|0||", + "Etc/GMT-6|+06|-60|0||", + "Etc/GMT-7|+07|-70|0||", + "Etc/GMT-8|+08|-80|0||", + "Etc/GMT-9|+09|-90|0||", + "Etc/GMT+1|-01|10|0||", + "Etc/GMT+10|-10|a0|0||", + "Etc/GMT+11|-11|b0|0||", + "Etc/GMT+12|-12|c0|0||", + "Etc/GMT+2|-02|20|0||", + "Etc/GMT+3|-03|30|0||", + "Etc/GMT+4|-04|40|0||", + "Etc/GMT+5|-05|50|0||", + "Etc/GMT+6|-06|60|0||", + "Etc/GMT+7|-07|70|0||", + "Etc/GMT+8|-08|80|0||", + "Etc/GMT+9|-09|90|0||", + "Etc/UTC|UTC|0|0||", + "Europe/Brussels|LMT BMT WET CET CEST WEST|-h.u -h.u 0 -10 -20 -10|012343434325252525252525252525252525252525252525252525434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8Mh.u u1Ah.u SO00 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|21e5", + "Europe/Andorra|LMT WET CET CEST|-6.4 0 -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2M0M6.4 1Pnc6.4 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|79e3", + "Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5", + "Europe/Athens|LMT AMT EET EEST CEST CET|-1y.Q -1y.Q -20 -30 -20 -10|0123234545232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-30SNy.Q OMM1 CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|35e5", + "Europe/London|LMT GMT BST BDST|1.f 0 -10 -20|01212121212121212121212121212121212121212121212121232323232321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-4VgnW.J 2KHdW.J Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|10e6", + "Europe/Belgrade|LMT CET CEST|-1m -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3topm 2juLm 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", + "Europe/Prague|LMT PMT CET CEST GMT|-V.I -V.I -10 -20 0|0123232323232323232423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4QbAV.I 1FDc0 XPaV.I 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|13e5", + "Europe/Bucharest|LMT BMT EET EEST|-1I.o -1I.o -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3awpI.o 1AU00 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|19e5", + "Europe/Budapest|LMT CET CEST|-1g.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3cK1g.k 124Lg.k 11d0 1iO0 11A0 1o00 11A0 1oo0 11c0 1lc0 17c0 O1V0 3Nf0 WM0 1fA0 1cM0 1cM0 1oJ0 1dd0 1020 1fX0 1cp0 1cM0 1cM0 1cM0 1fA0 1a00 bhy0 Rb0 1wr0 Rc0 1C00 LA0 1C00 LA0 SNW0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cO0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5", + "Europe/Zurich|LMT BMT CET CEST|-y.8 -t.K -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4HyMy.8 1Dw04.m 1SfAt.K 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|38e4", + "Europe/Chisinau|LMT CMT BMT EET EEST CEST CET MSK MSD|-1T.k -1T -1I.o -20 -30 -20 -10 -30 -40|0123434343434343434345656578787878787878787878434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8NT.k 1wNA0.k wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|67e4", + "Europe/Gibraltar|LMT GMT BST BDST CET CEST|l.o 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123232323232121232121212121212121212145454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-3BHbC.A 1ra1C.A Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|30e3", + "Europe/Helsinki|LMT HMT EET EEST|-1D.N -1D.N -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3H0ND.N 1Iu00 OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", + "Europe/Kaliningrad|LMT CET CEST EET EEST MSK MSD +03|-1m -10 -20 -20 -30 -30 -40 -30|012121212121212343565656565656565654343434343434343434343434343434343434343434373|-36Rdm UbXm 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 390 7A0 1en0 12N0 1pbb0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4", + "Europe/Kiev|LMT KMT EET MSK CEST CET MSD EEST|-22.4 -22.4 -20 -30 -20 -10 -40 -30|01234545363636363636363636367272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-3D8O2.4 1LUM0 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o10 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|34e5", + "Europe/Kirov|LMT +03 +04 +05 MSD MSK MSK|-3i.M -30 -40 -50 -40 -30 -40|0123232323232323232454524545454545454545454545454545454545454565|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4", + "Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5", + "Europe/Madrid|LMT WET WEST WEMT CET CEST|e.I 0 -10 -20 -10 -20|0121212121212121212321454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2M0M0 G5z0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|62e5", + "Europe/Malta|LMT CET CEST|-W.4 -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-35rcW.4 SXzW.4 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4", + "Europe/Minsk|LMT MMT EET MSK CEST CET MSD EEST +03|-1O.g -1O -20 -30 -20 -10 -40 -30 -30|012345454363636363636363636372727272727272727272727272727272727272728|-3D8NO.g 1LUM0.g eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5", + "Europe/Paris|LMT PMT WET WEST CEST CET WEMT|-9.l -9.l 0 -10 -20 -10 -20|01232323232323232323232323232323232323232323232323234545463654545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-3bQ09.l MDA0 cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|11e6", + "Europe/Moscow|LMT MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|01232434565756865656565656565656565698656565656565656565656565656565656565656a6|-3D8Ou.h 1sQM0 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6", + "Europe/Riga|LMT RMT LST EET MSK CEST CET MSD EEST|-1A.y -1A.y -2A.y -20 -30 -20 -10 -40 -30|0121213456565647474747474747474838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383|-3D8NA.y 1xde0 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|64e4", + "Europe/Rome|LMT RMT CET CEST|-N.U -N.U -10 -20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4aU0N.U 15snN.U T000 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|39e5", + "Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5", + "Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|", + "Europe/Simferopol|LMT SMT EET MSK CEST CET MSD EEST MSK|-2g.o -2g -20 -30 -20 -10 -40 -30 -40|0123454543636363636363636363272727636363727272727272727272727272727272727283|-3D8Og.o 1LUM0.o eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eN0 1cM0 1cM0 1cM0 1cM0 dV0 WO0 1cM0 1cM0 1fy0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4", + "Europe/Sofia|LMT IMT EET CET CEST EEST|-1x.g -1U.U -20 -10 -20 -30|0123434325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-3D8Nx.g AiLA.k 1UFeU.U WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5", + "Europe/Tallinn|LMT TMT CET CEST EET MSK MSD EEST|-1D -1D -10 -20 -20 -30 -40 -30|0123214532323565656565656565657474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474|-3D8ND 1wI00 teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e4", + "Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4", + "Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5", + "Europe/Vienna|LMT CET CEST|-15.l -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36Rd5.l UbX5.l 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1ao0 1co0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|18e5", + "Europe/Vilnius|LMT WMT KMT CET EET MSK CEST MSD EEST|-1F.g -1o -1z.A -10 -20 -30 -20 -40 -30|0123435636365757575757575757584848484848484848463648484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484|-3D8NF.g 1u5Ah.g 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4", + "Europe/Volgograd|LMT +03 +04 +05 MSD MSK MSK|-2V.E -30 -40 -50 -40 -30 -40|012323232323232324545452454545454545454545454545454545454545456525|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0 5gn0|10e5", + "Europe/Warsaw|LMT WMT CET CEST EET EEST|-1o -1o -10 -20 -20 -30|0123232345423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8No 1qDA0 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5", + "HST|HST|a0|0||", + "Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2", + "Indian/Maldives|LMT MMT +05|-4S -4S -50|012|-3D8QS 3eLA0|35e4", + "Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4", + "Pacific/Kwajalein|LMT +11 +10 +09 -12 +12|-b9.k -b0 -a0 -90 c0 -c0|0123145|-2M0X9.k 1rDA9.k akp0 6Up0 12ry0 Wan0|14e3", + "MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|", + "MST|MST|70|0||", + "MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "Pacific/Chatham|LMT +1215 +1245 +1345|-cd.M -cf -cJ -dJ|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-46jMd.M 37RbW.M 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|600", + "Pacific/Apia|LMT LMT -1130 -11 -10 +14 +13|-cx.4 bq.U bu b0 a0 -e0 -d0|012343456565656565656565656|-38Fox.4 J1A0 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3", + "Pacific/Bougainville|LMT PMMT +10 +09 +11|-am.g -9M.w -a0 -90 -b0|012324|-3D8Wm.g AvAx.I 1TCLM.w 7CN0 2MQp0|18e4", + "Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|012121212121212121212121|-2l9nd.g 2uNXd.g Dc0 n610 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3", + "Pacific/Enderbury|-00 -12 -11 +13|0 c0 b0 -d0|0123|-1iIo0 1GsA0 B7X0|1", + "Pacific/Fakaofo|LMT -11 +13|bo.U b0 -d0|012|-2M0Az.4 4ufXz.4|483", + "Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|012121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0|88e4", + "Pacific/Tarawa|LMT +12|-bw.4 -c0|01|-2M0Xw.4|29e3", + "Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3", + "Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125", + "Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4", + "Pacific/Guam|LMT LMT GST +09 GDT ChST|el -9D -a0 -90 -b0 -a0|0123242424242424242425|-54m9D 2glc0 1DFbD 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4", + "Pacific/Honolulu|LMT HST HDT HWT HPT HST|av.q au 9u 9u 9u a0|01213415|-3061s.y 1uMdW.y 8x0 lef0 8wWu iAu 46p0|37e4", + "Pacific/Kiritimati|LMT -1040 -10 +14|at.k aE a0 -e0|0123|-2M0Bu.E 3bIMa.E B7Xk|51e2", + "Pacific/Kosrae|LMT LMT +11 +09 +10 +12|d8.4 -aP.U -b0 -90 -a0 -c0|0123243252|-54maP.U 2glc0 xsnP.U axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2", + "Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2", + "Pacific/Pago_Pago|LMT LMT SST|-cB.c bm.M b0|012|-38FoB.c J1A0|37e2", + "Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3", + "Pacific/Niue|LMT -1120 -11|bj.E bk b0|012|-FScE.k suo0.k|12e2", + "Pacific/Norfolk|LMT +1112 +1130 +1230 +11 +12|-bb.Q -bc -bu -cu -b0 -c0|0123245454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2M0Xb.Q 21ILX.Q W01G Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4", + "Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3", + "Pacific/Palau|LMT LMT +09|f2.4 -8V.U -90|012|-54m8V.U 2glc0|21e3", + "Pacific/Pitcairn|LMT -0830 -08|8E.k 8u 80|012|-2M0Dj.E 3UVXN.E|56", + "Pacific/Rarotonga|LMT LMT -1030 -0930 -10|-dk.U aD.4 au 9u a0|01234343434343434343434343434|-2Otpk.U 28zc0 13tbO.U IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3", + "Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4", + "Pacific/Tongatapu|LMT +1220 +13 +14|-cj.c -ck -d0 -e0|01232323232|-XbMj.c BgLX.c 1yndk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3", + "PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|", + "WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|" + ], + links: [ + "Africa/Abidjan|Africa/Accra", + "Africa/Abidjan|Africa/Bamako", + "Africa/Abidjan|Africa/Banjul", + "Africa/Abidjan|Africa/Conakry", + "Africa/Abidjan|Africa/Dakar", + "Africa/Abidjan|Africa/Freetown", + "Africa/Abidjan|Africa/Lome", + "Africa/Abidjan|Africa/Nouakchott", + "Africa/Abidjan|Africa/Ouagadougou", + "Africa/Abidjan|Africa/Timbuktu", + "Africa/Abidjan|Atlantic/Reykjavik", + "Africa/Abidjan|Atlantic/St_Helena", + "Africa/Abidjan|Iceland", + "Africa/Cairo|Egypt", + "Africa/Johannesburg|Africa/Maseru", + "Africa/Johannesburg|Africa/Mbabane", + "Africa/Lagos|Africa/Bangui", + "Africa/Lagos|Africa/Brazzaville", + "Africa/Lagos|Africa/Douala", + "Africa/Lagos|Africa/Kinshasa", + "Africa/Lagos|Africa/Libreville", + "Africa/Lagos|Africa/Luanda", + "Africa/Lagos|Africa/Malabo", + "Africa/Lagos|Africa/Niamey", + "Africa/Lagos|Africa/Porto-Novo", + "Africa/Maputo|Africa/Blantyre", + "Africa/Maputo|Africa/Bujumbura", + "Africa/Maputo|Africa/Gaborone", + "Africa/Maputo|Africa/Harare", + "Africa/Maputo|Africa/Kigali", + "Africa/Maputo|Africa/Lubumbashi", + "Africa/Maputo|Africa/Lusaka", + "Africa/Nairobi|Africa/Addis_Ababa", + "Africa/Nairobi|Africa/Asmara", + "Africa/Nairobi|Africa/Asmera", + "Africa/Nairobi|Africa/Dar_es_Salaam", + "Africa/Nairobi|Africa/Djibouti", + "Africa/Nairobi|Africa/Kampala", + "Africa/Nairobi|Africa/Mogadishu", + "Africa/Nairobi|Indian/Antananarivo", + "Africa/Nairobi|Indian/Comoro", + "Africa/Nairobi|Indian/Mayotte", + "Africa/Tripoli|Libya", + "America/Adak|America/Atka", + "America/Adak|US/Aleutian", + "America/Anchorage|US/Alaska", + "America/Argentina/Buenos_Aires|America/Buenos_Aires", + "America/Argentina/Catamarca|America/Argentina/ComodRivadavia", + "America/Argentina/Catamarca|America/Catamarca", + "America/Argentina/Cordoba|America/Cordoba", + "America/Argentina/Cordoba|America/Rosario", + "America/Argentina/Jujuy|America/Jujuy", + "America/Argentina/Mendoza|America/Mendoza", + "America/Chicago|US/Central", + "America/Denver|America/Shiprock", + "America/Denver|Navajo", + "America/Denver|US/Mountain", + "America/Detroit|US/Michigan", + "America/Edmonton|America/Yellowknife", + "America/Edmonton|Canada/Mountain", + "America/Fort_Wayne|America/Indiana/Indianapolis", + "America/Fort_Wayne|America/Indianapolis", + "America/Fort_Wayne|US/East-Indiana", + "America/Godthab|America/Nuuk", + "America/Halifax|Canada/Atlantic", + "America/Havana|Cuba", + "America/Indiana/Knox|America/Knox_IN", + "America/Indiana/Knox|US/Indiana-Starke", + "America/Iqaluit|America/Pangnirtung", + "America/Jamaica|Jamaica", + "America/Kentucky/Louisville|America/Louisville", + "America/Los_Angeles|US/Pacific", + "America/Manaus|Brazil/West", + "America/Mazatlan|Mexico/BajaSur", + "America/Mexico_City|Mexico/General", + "America/New_York|US/Eastern", + "America/Noronha|Brazil/DeNoronha", + "America/Panama|America/Atikokan", + "America/Panama|America/Cayman", + "America/Panama|America/Coral_Harbour", + "America/Phoenix|America/Creston", + "America/Phoenix|US/Arizona", + "America/Puerto_Rico|America/Anguilla", + "America/Puerto_Rico|America/Antigua", + "America/Puerto_Rico|America/Aruba", + "America/Puerto_Rico|America/Blanc-Sablon", + "America/Puerto_Rico|America/Curacao", + "America/Puerto_Rico|America/Dominica", + "America/Puerto_Rico|America/Grenada", + "America/Puerto_Rico|America/Guadeloupe", + "America/Puerto_Rico|America/Kralendijk", + "America/Puerto_Rico|America/Lower_Princes", + "America/Puerto_Rico|America/Marigot", + "America/Puerto_Rico|America/Montserrat", + "America/Puerto_Rico|America/Port_of_Spain", + "America/Puerto_Rico|America/St_Barthelemy", + "America/Puerto_Rico|America/St_Kitts", + "America/Puerto_Rico|America/St_Lucia", + "America/Puerto_Rico|America/St_Thomas", + "America/Puerto_Rico|America/St_Vincent", + "America/Puerto_Rico|America/Tortola", + "America/Puerto_Rico|America/Virgin", + "America/Regina|Canada/Saskatchewan", + "America/Rio_Branco|America/Porto_Acre", + "America/Rio_Branco|Brazil/Acre", + "America/Santiago|Chile/Continental", + "America/Sao_Paulo|Brazil/East", + "America/St_Johns|Canada/Newfoundland", + "America/Tijuana|America/Ensenada", + "America/Tijuana|America/Santa_Isabel", + "America/Tijuana|Mexico/BajaNorte", + "America/Toronto|America/Montreal", + "America/Toronto|America/Nassau", + "America/Toronto|America/Nipigon", + "America/Toronto|America/Thunder_Bay", + "America/Toronto|Canada/Eastern", + "America/Vancouver|Canada/Pacific", + "America/Whitehorse|Canada/Yukon", + "America/Winnipeg|America/Rainy_River", + "America/Winnipeg|Canada/Central", + "Asia/Ashgabat|Asia/Ashkhabad", + "Asia/Bangkok|Asia/Phnom_Penh", + "Asia/Bangkok|Asia/Vientiane", + "Asia/Bangkok|Indian/Christmas", + "Asia/Brunei|Asia/Kuching", + "Asia/Dhaka|Asia/Dacca", + "Asia/Dubai|Asia/Muscat", + "Asia/Dubai|Indian/Mahe", + "Asia/Dubai|Indian/Reunion", + "Asia/Ho_Chi_Minh|Asia/Saigon", + "Asia/Hong_Kong|Hongkong", + "Asia/Jerusalem|Asia/Tel_Aviv", + "Asia/Jerusalem|Israel", + "Asia/Kathmandu|Asia/Katmandu", + "Asia/Kolkata|Asia/Calcutta", + "Asia/Kuala_Lumpur|Asia/Singapore", + "Asia/Kuala_Lumpur|Singapore", + "Asia/Macau|Asia/Macao", + "Asia/Makassar|Asia/Ujung_Pandang", + "Asia/Nicosia|Europe/Nicosia", + "Asia/Qatar|Asia/Bahrain", + "Asia/Rangoon|Asia/Yangon", + "Asia/Rangoon|Indian/Cocos", + "Asia/Riyadh|Antarctica/Syowa", + "Asia/Riyadh|Asia/Aden", + "Asia/Riyadh|Asia/Kuwait", + "Asia/Seoul|ROK", + "Asia/Shanghai|Asia/Chongqing", + "Asia/Shanghai|Asia/Chungking", + "Asia/Shanghai|Asia/Harbin", + "Asia/Shanghai|PRC", + "Asia/Taipei|ROC", + "Asia/Tehran|Iran", + "Asia/Thimphu|Asia/Thimbu", + "Asia/Tokyo|Japan", + "Asia/Ulaanbaatar|Asia/Ulan_Bator", + "Asia/Urumqi|Asia/Kashgar", + "Atlantic/Faroe|Atlantic/Faeroe", + "Australia/Adelaide|Australia/South", + "Australia/Brisbane|Australia/Queensland", + "Australia/Broken_Hill|Australia/Yancowinna", + "Australia/Darwin|Australia/North", + "Australia/Hobart|Australia/Currie", + "Australia/Hobart|Australia/Tasmania", + "Australia/Lord_Howe|Australia/LHI", + "Australia/Melbourne|Australia/Victoria", + "Australia/Perth|Australia/West", + "Australia/Sydney|Australia/ACT", + "Australia/Sydney|Australia/Canberra", + "Australia/Sydney|Australia/NSW", + "Etc/GMT-0|Etc/GMT", + "Etc/GMT-0|Etc/GMT+0", + "Etc/GMT-0|Etc/GMT0", + "Etc/GMT-0|Etc/Greenwich", + "Etc/GMT-0|GMT", + "Etc/GMT-0|GMT+0", + "Etc/GMT-0|GMT-0", + "Etc/GMT-0|GMT0", + "Etc/GMT-0|Greenwich", + "Etc/UTC|Etc/UCT", + "Etc/UTC|Etc/Universal", + "Etc/UTC|Etc/Zulu", + "Etc/UTC|UCT", + "Etc/UTC|UTC", + "Etc/UTC|Universal", + "Etc/UTC|Zulu", + "Europe/Belgrade|Europe/Ljubljana", + "Europe/Belgrade|Europe/Podgorica", + "Europe/Belgrade|Europe/Sarajevo", + "Europe/Belgrade|Europe/Skopje", + "Europe/Belgrade|Europe/Zagreb", + "Europe/Berlin|Arctic/Longyearbyen", + "Europe/Berlin|Atlantic/Jan_Mayen", + "Europe/Berlin|Europe/Copenhagen", + "Europe/Berlin|Europe/Oslo", + "Europe/Berlin|Europe/Stockholm", + "Europe/Brussels|Europe/Amsterdam", + "Europe/Brussels|Europe/Luxembourg", + "Europe/Chisinau|Europe/Tiraspol", + "Europe/Dublin|Eire", + "Europe/Helsinki|Europe/Mariehamn", + "Europe/Istanbul|Asia/Istanbul", + "Europe/Istanbul|Turkey", + "Europe/Kiev|Europe/Kyiv", + "Europe/Kiev|Europe/Uzhgorod", + "Europe/Kiev|Europe/Zaporozhye", + "Europe/Lisbon|Portugal", + "Europe/London|Europe/Belfast", + "Europe/London|Europe/Guernsey", + "Europe/London|Europe/Isle_of_Man", + "Europe/London|Europe/Jersey", + "Europe/London|GB", + "Europe/London|GB-Eire", + "Europe/Moscow|W-SU", + "Europe/Paris|Europe/Monaco", + "Europe/Prague|Europe/Bratislava", + "Europe/Rome|Europe/San_Marino", + "Europe/Rome|Europe/Vatican", + "Europe/Warsaw|Poland", + "Europe/Zurich|Europe/Busingen", + "Europe/Zurich|Europe/Vaduz", + "Indian/Maldives|Indian/Kerguelen", + "Pacific/Auckland|Antarctica/McMurdo", + "Pacific/Auckland|Antarctica/South_Pole", + "Pacific/Auckland|NZ", + "Pacific/Chatham|NZ-CHAT", + "Pacific/Easter|Chile/EasterIsland", + "Pacific/Enderbury|Pacific/Kanton", + "Pacific/Guadalcanal|Pacific/Pohnpei", + "Pacific/Guadalcanal|Pacific/Ponape", + "Pacific/Guam|Pacific/Saipan", + "Pacific/Honolulu|Pacific/Johnston", + "Pacific/Honolulu|US/Hawaii", + "Pacific/Kwajalein|Kwajalein", + "Pacific/Pago_Pago|Pacific/Midway", + "Pacific/Pago_Pago|Pacific/Samoa", + "Pacific/Pago_Pago|US/Samoa", + "Pacific/Port_Moresby|Antarctica/DumontDUrville", + "Pacific/Port_Moresby|Pacific/Chuuk", + "Pacific/Port_Moresby|Pacific/Truk", + "Pacific/Port_Moresby|Pacific/Yap", + "Pacific/Tarawa|Pacific/Funafuti", + "Pacific/Tarawa|Pacific/Majuro", + "Pacific/Tarawa|Pacific/Wake", + "Pacific/Tarawa|Pacific/Wallis" + ], + countries: [ + "AD|Europe/Andorra", + "AE|Asia/Dubai", + "AF|Asia/Kabul", + "AG|America/Puerto_Rico America/Antigua", + "AI|America/Puerto_Rico America/Anguilla", + "AL|Europe/Tirane", + "AM|Asia/Yerevan", + "AO|Africa/Lagos Africa/Luanda", + "AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa", + "AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia", + "AS|Pacific/Pago_Pago", + "AT|Europe/Vienna", + "AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla", + "AW|America/Puerto_Rico America/Aruba", + "AX|Europe/Helsinki Europe/Mariehamn", + "AZ|Asia/Baku", + "BA|Europe/Belgrade Europe/Sarajevo", + "BB|America/Barbados", + "BD|Asia/Dhaka", + "BE|Europe/Brussels", + "BF|Africa/Abidjan Africa/Ouagadougou", + "BG|Europe/Sofia", + "BH|Asia/Qatar Asia/Bahrain", + "BI|Africa/Maputo Africa/Bujumbura", + "BJ|Africa/Lagos Africa/Porto-Novo", + "BL|America/Puerto_Rico America/St_Barthelemy", + "BM|Atlantic/Bermuda", + "BN|Asia/Kuching Asia/Brunei", + "BO|America/La_Paz", + "BQ|America/Puerto_Rico America/Kralendijk", + "BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco", + "BS|America/Toronto America/Nassau", + "BT|Asia/Thimphu", + "BW|Africa/Maputo Africa/Gaborone", + "BY|Europe/Minsk", + "BZ|America/Belize", + "CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston", + "CC|Asia/Yangon Indian/Cocos", + "CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi", + "CF|Africa/Lagos Africa/Bangui", + "CG|Africa/Lagos Africa/Brazzaville", + "CH|Europe/Zurich", + "CI|Africa/Abidjan", + "CK|Pacific/Rarotonga", + "CL|America/Santiago America/Punta_Arenas Pacific/Easter", + "CM|Africa/Lagos Africa/Douala", + "CN|Asia/Shanghai Asia/Urumqi", + "CO|America/Bogota", + "CR|America/Costa_Rica", + "CU|America/Havana", + "CV|Atlantic/Cape_Verde", + "CW|America/Puerto_Rico America/Curacao", + "CX|Asia/Bangkok Indian/Christmas", + "CY|Asia/Nicosia Asia/Famagusta", + "CZ|Europe/Prague", + "DE|Europe/Zurich Europe/Berlin Europe/Busingen", + "DJ|Africa/Nairobi Africa/Djibouti", + "DK|Europe/Berlin Europe/Copenhagen", + "DM|America/Puerto_Rico America/Dominica", + "DO|America/Santo_Domingo", + "DZ|Africa/Algiers", + "EC|America/Guayaquil Pacific/Galapagos", + "EE|Europe/Tallinn", + "EG|Africa/Cairo", + "EH|Africa/El_Aaiun", + "ER|Africa/Nairobi Africa/Asmara", + "ES|Europe/Madrid Africa/Ceuta Atlantic/Canary", + "ET|Africa/Nairobi Africa/Addis_Ababa", + "FI|Europe/Helsinki", + "FJ|Pacific/Fiji", + "FK|Atlantic/Stanley", + "FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei", + "FO|Atlantic/Faroe", + "FR|Europe/Paris", + "GA|Africa/Lagos Africa/Libreville", + "GB|Europe/London", + "GD|America/Puerto_Rico America/Grenada", + "GE|Asia/Tbilisi", + "GF|America/Cayenne", + "GG|Europe/London Europe/Guernsey", + "GH|Africa/Abidjan Africa/Accra", + "GI|Europe/Gibraltar", + "GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule", + "GM|Africa/Abidjan Africa/Banjul", + "GN|Africa/Abidjan Africa/Conakry", + "GP|America/Puerto_Rico America/Guadeloupe", + "GQ|Africa/Lagos Africa/Malabo", + "GR|Europe/Athens", + "GS|Atlantic/South_Georgia", + "GT|America/Guatemala", + "GU|Pacific/Guam", + "GW|Africa/Bissau", + "GY|America/Guyana", + "HK|Asia/Hong_Kong", + "HN|America/Tegucigalpa", + "HR|Europe/Belgrade Europe/Zagreb", + "HT|America/Port-au-Prince", + "HU|Europe/Budapest", + "ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura", + "IE|Europe/Dublin", + "IL|Asia/Jerusalem", + "IM|Europe/London Europe/Isle_of_Man", + "IN|Asia/Kolkata", + "IO|Indian/Chagos", + "IQ|Asia/Baghdad", + "IR|Asia/Tehran", + "IS|Africa/Abidjan Atlantic/Reykjavik", + "IT|Europe/Rome", + "JE|Europe/London Europe/Jersey", + "JM|America/Jamaica", + "JO|Asia/Amman", + "JP|Asia/Tokyo", + "KE|Africa/Nairobi", + "KG|Asia/Bishkek", + "KH|Asia/Bangkok Asia/Phnom_Penh", + "KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati", + "KM|Africa/Nairobi Indian/Comoro", + "KN|America/Puerto_Rico America/St_Kitts", + "KP|Asia/Pyongyang", + "KR|Asia/Seoul", + "KW|Asia/Riyadh Asia/Kuwait", + "KY|America/Panama America/Cayman", + "KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral", + "LA|Asia/Bangkok Asia/Vientiane", + "LB|Asia/Beirut", + "LC|America/Puerto_Rico America/St_Lucia", + "LI|Europe/Zurich Europe/Vaduz", + "LK|Asia/Colombo", + "LR|Africa/Monrovia", + "LS|Africa/Johannesburg Africa/Maseru", + "LT|Europe/Vilnius", + "LU|Europe/Brussels Europe/Luxembourg", + "LV|Europe/Riga", + "LY|Africa/Tripoli", + "MA|Africa/Casablanca", + "MC|Europe/Paris Europe/Monaco", + "MD|Europe/Chisinau", + "ME|Europe/Belgrade Europe/Podgorica", + "MF|America/Puerto_Rico America/Marigot", + "MG|Africa/Nairobi Indian/Antananarivo", + "MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro", + "MK|Europe/Belgrade Europe/Skopje", + "ML|Africa/Abidjan Africa/Bamako", + "MM|Asia/Yangon", + "MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan", + "MO|Asia/Macau", + "MP|Pacific/Guam Pacific/Saipan", + "MQ|America/Martinique", + "MR|Africa/Abidjan Africa/Nouakchott", + "MS|America/Puerto_Rico America/Montserrat", + "MT|Europe/Malta", + "MU|Indian/Mauritius", + "MV|Indian/Maldives", + "MW|Africa/Maputo Africa/Blantyre", + "MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana", + "MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur", + "MZ|Africa/Maputo", + "NA|Africa/Windhoek", + "NC|Pacific/Noumea", + "NE|Africa/Lagos Africa/Niamey", + "NF|Pacific/Norfolk", + "NG|Africa/Lagos", + "NI|America/Managua", + "NL|Europe/Brussels Europe/Amsterdam", + "NO|Europe/Berlin Europe/Oslo", + "NP|Asia/Kathmandu", + "NR|Pacific/Nauru", + "NU|Pacific/Niue", + "NZ|Pacific/Auckland Pacific/Chatham", + "OM|Asia/Dubai Asia/Muscat", + "PA|America/Panama", + "PE|America/Lima", + "PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier", + "PG|Pacific/Port_Moresby Pacific/Bougainville", + "PH|Asia/Manila", + "PK|Asia/Karachi", + "PL|Europe/Warsaw", + "PM|America/Miquelon", + "PN|Pacific/Pitcairn", + "PR|America/Puerto_Rico", + "PS|Asia/Gaza Asia/Hebron", + "PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores", + "PW|Pacific/Palau", + "PY|America/Asuncion", + "QA|Asia/Qatar", + "RE|Asia/Dubai Indian/Reunion", + "RO|Europe/Bucharest", + "RS|Europe/Belgrade", + "RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr", + "RW|Africa/Maputo Africa/Kigali", + "SA|Asia/Riyadh", + "SB|Pacific/Guadalcanal", + "SC|Asia/Dubai Indian/Mahe", + "SD|Africa/Khartoum", + "SE|Europe/Berlin Europe/Stockholm", + "SG|Asia/Singapore", + "SH|Africa/Abidjan Atlantic/St_Helena", + "SI|Europe/Belgrade Europe/Ljubljana", + "SJ|Europe/Berlin Arctic/Longyearbyen", + "SK|Europe/Prague Europe/Bratislava", + "SL|Africa/Abidjan Africa/Freetown", + "SM|Europe/Rome Europe/San_Marino", + "SN|Africa/Abidjan Africa/Dakar", + "SO|Africa/Nairobi Africa/Mogadishu", + "SR|America/Paramaribo", + "SS|Africa/Juba", + "ST|Africa/Sao_Tome", + "SV|America/El_Salvador", + "SX|America/Puerto_Rico America/Lower_Princes", + "SY|Asia/Damascus", + "SZ|Africa/Johannesburg Africa/Mbabane", + "TC|America/Grand_Turk", + "TD|Africa/Ndjamena", + "TF|Asia/Dubai Indian/Maldives Indian/Kerguelen", + "TG|Africa/Abidjan Africa/Lome", + "TH|Asia/Bangkok", + "TJ|Asia/Dushanbe", + "TK|Pacific/Fakaofo", + "TL|Asia/Dili", + "TM|Asia/Ashgabat", + "TN|Africa/Tunis", + "TO|Pacific/Tongatapu", + "TR|Europe/Istanbul", + "TT|America/Puerto_Rico America/Port_of_Spain", + "TV|Pacific/Tarawa Pacific/Funafuti", + "TW|Asia/Taipei", + "TZ|Africa/Nairobi Africa/Dar_es_Salaam", + "UA|Europe/Simferopol Europe/Kyiv", + "UG|Africa/Nairobi Africa/Kampala", + "UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake", + "US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu", + "UY|America/Montevideo", + "UZ|Asia/Samarkand Asia/Tashkent", + "VA|Europe/Rome Europe/Vatican", + "VC|America/Puerto_Rico America/St_Vincent", + "VE|America/Caracas", + "VG|America/Puerto_Rico America/Tortola", + "VI|America/Puerto_Rico America/St_Thomas", + "VN|Asia/Bangkok Asia/Ho_Chi_Minh", + "VU|Pacific/Efate", + "WF|Pacific/Tarawa Pacific/Wallis", + "WS|Pacific/Apia", + "YE|Asia/Riyadh Asia/Aden", + "YT|Africa/Nairobi Indian/Mayotte", + "ZA|Africa/Johannesburg", + "ZM|Africa/Maputo Africa/Lusaka", + "ZW|Africa/Maputo Africa/Harare" + ] + }; + } +}); + +// node_modules/moment-timezone/index.js +var require_moment_timezone2 = __commonJS({ + "node_modules/moment-timezone/index.js"(exports, module2) { + var moment3 = module2.exports = require_moment_timezone(); + moment3.tz.load(require_latest()); + } +}); + +// node_modules/axios/dist/browser/axios.cjs +var require_axios = __commonJS({ + "node_modules/axios/dist/browser/axios.cjs"(exports, module2) { + "use strict"; + function bind2(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; + } + var { toString: toString2 } = Object.prototype; + var { getPrototypeOf: getPrototypeOf2 } = Object; + var kindOf = ((cache) => (thing) => { + const str = toString2.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); + })(/* @__PURE__ */ Object.create(null)); + var kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type; + }; + var typeOfTest = (type) => (thing) => typeof thing === type; + var { isArray: isArray2 } = Array; + var isUndefined2 = typeOfTest("undefined"); + function isBuffer(val) { + return val !== null && !isUndefined2(val) && val.constructor !== null && !isUndefined2(val.constructor) && isFunction2(val.constructor.isBuffer) && val.constructor.isBuffer(val); + } + var isArrayBuffer = kindOfTest("ArrayBuffer"); + function isArrayBufferView(val) { + let result; + if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) { + result = ArrayBuffer.isView(val); + } else { + result = val && val.buffer && isArrayBuffer(val.buffer); + } + return result; + } + var isString2 = typeOfTest("string"); + var isFunction2 = typeOfTest("function"); + var isNumber2 = typeOfTest("number"); + var isObject2 = (thing) => thing !== null && typeof thing === "object"; + var isBoolean2 = (thing) => thing === true || thing === false; + var isPlainObject3 = (val) => { + if (kindOf(val) !== "object") { + return false; + } + const prototype2 = getPrototypeOf2(val); + return (prototype2 === null || prototype2 === Object.prototype || Object.getPrototypeOf(prototype2) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); + }; + var isDate = kindOfTest("Date"); + var isFile = kindOfTest("File"); + var isBlob = kindOfTest("Blob"); + var isFileList = kindOfTest("FileList"); + var isStream = (val) => isObject2(val) && isFunction2(val.pipe); + var isFormData = (thing) => { + let kind; + return thing && (typeof FormData === "function" && thing instanceof FormData || isFunction2(thing.append) && ((kind = kindOf(thing)) === "formdata" || // detect form-data instance + kind === "object" && isFunction2(thing.toString) && thing.toString() === "[object FormData]")); + }; + var isURLSearchParams = kindOfTest("URLSearchParams"); + var trim = (str) => str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); + function forEach(obj, fn, { allOwnKeys = false } = {}) { + if (obj === null || typeof obj === "undefined") { + return; + } + let i2; + let l2; + if (typeof obj !== "object") { + obj = [obj]; + } + if (isArray2(obj)) { + for (i2 = 0, l2 = obj.length; i2 < l2; i2++) { + fn.call(null, obj[i2], i2, obj); + } + } else { + const keys2 = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys2.length; + let key; + for (i2 = 0; i2 < len; i2++) { + key = keys2[i2]; + fn.call(null, obj[key], key, obj); + } + } + } + function findKey(obj, key) { + key = key.toLowerCase(); + const keys2 = Object.keys(obj); + let i2 = keys2.length; + let _key; + while (i2-- > 0) { + _key = keys2[i2]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; + } + var _global = (() => { + if (typeof globalThis !== "undefined") + return globalThis; + return typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global; + })(); + var isContextDefined = (context) => !isUndefined2(context) && context !== _global; + function merge() { + const { caseless } = isContextDefined(this) && this || {}; + const result = {}; + const assignValue = (val, key) => { + const targetKey = caseless && findKey(result, key) || key; + if (isPlainObject3(result[targetKey]) && isPlainObject3(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject3(val)) { + result[targetKey] = merge({}, val); + } else if (isArray2(val)) { + result[targetKey] = val.slice(); + } else { + result[targetKey] = val; + } + }; + for (let i2 = 0, l2 = arguments.length; i2 < l2; i2++) { + arguments[i2] && forEach(arguments[i2], assignValue); + } + return result; + } + var extend = (a2, b2, thisArg, { allOwnKeys } = {}) => { + forEach(b2, (val, key) => { + if (thisArg && isFunction2(val)) { + a2[key] = bind2(val, thisArg); + } else { + a2[key] = val; + } + }, { allOwnKeys }); + return a2; + }; + var stripBOM = (content) => { + if (content.charCodeAt(0) === 65279) { + content = content.slice(1); + } + return content; + }; + var inherits = (constructor, superConstructor, props, descriptors2) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors2); + constructor.prototype.constructor = constructor; + Object.defineProperty(constructor, "super", { + value: superConstructor.prototype + }); + props && Object.assign(constructor.prototype, props); + }; + var toFlatObject = (sourceObj, destObj, filter3, propFilter) => { + let props; + let i2; + let prop; + const merged = {}; + destObj = destObj || {}; + if (sourceObj == null) + return destObj; + do { + props = Object.getOwnPropertyNames(sourceObj); + i2 = props.length; + while (i2-- > 0) { + prop = props[i2]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter3 !== false && getPrototypeOf2(sourceObj); + } while (sourceObj && (!filter3 || filter3(sourceObj, destObj)) && sourceObj !== Object.prototype); + return destObj; + }; + var endsWith = (str, searchString, position) => { + str = String(str); + if (position === void 0 || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }; + var toArray = (thing) => { + if (!thing) + return null; + if (isArray2(thing)) + return thing; + let i2 = thing.length; + if (!isNumber2(i2)) + return null; + const arr = new Array(i2); + while (i2-- > 0) { + arr[i2] = thing[i2]; + } + return arr; + }; + var isTypedArray = ((TypedArray) => { + return (thing) => { + return TypedArray && thing instanceof TypedArray; + }; + })(typeof Uint8Array !== "undefined" && getPrototypeOf2(Uint8Array)); + var forEachEntry = (obj, fn) => { + const generator = obj && obj[Symbol.iterator]; + const iterator = generator.call(obj); + let result; + while ((result = iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } + }; + var matchAll = (regExp, str) => { + let matches; + const arr = []; + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + return arr; + }; + var isHTMLForm = kindOfTest("HTMLFormElement"); + var toCamelCase = (str) => { + return str.toLowerCase().replace( + /[-_\s]([a-z\d])(\w*)/g, + function replacer(m2, p1, p2) { + return p1.toUpperCase() + p2; + } + ); + }; + var hasOwnProperty2 = (({ hasOwnProperty: hasOwnProperty3 }) => (obj, prop) => hasOwnProperty3.call(obj, prop))(Object.prototype); + var isRegExp = kindOfTest("RegExp"); + var reduceDescriptors = (obj, reducer) => { + const descriptors2 = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + forEach(descriptors2, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + Object.defineProperties(obj, reducedDescriptors); + }; + var freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + if (isFunction2(obj) && ["arguments", "caller", "callee"].indexOf(name) !== -1) { + return false; + } + const value = obj[name]; + if (!isFunction2(value)) + return; + descriptor.enumerable = false; + if ("writable" in descriptor) { + descriptor.writable = false; + return; + } + if (!descriptor.set) { + descriptor.set = () => { + throw Error("Can not rewrite read-only method '" + name + "'"); + }; + } + }); + }; + var toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + const define2 = (arr) => { + arr.forEach((value) => { + obj[value] = true; + }); + }; + isArray2(arrayOrString) ? define2(arrayOrString) : define2(String(arrayOrString).split(delimiter)); + return obj; + }; + var noop3 = () => { + }; + var toFiniteNumber = (value, defaultValue) => { + value = +value; + return Number.isFinite(value) ? value : defaultValue; + }; + var ALPHA = "abcdefghijklmnopqrstuvwxyz"; + var DIGIT = "0123456789"; + var ALPHABET = { + DIGIT, + ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT + }; + var generateString = (size2 = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { + let str = ""; + const { length } = alphabet; + while (size2--) { + str += alphabet[Math.random() * length | 0]; + } + return str; + }; + function isSpecCompliantForm(thing) { + return !!(thing && isFunction2(thing.append) && thing[Symbol.toStringTag] === "FormData" && thing[Symbol.iterator]); + } + var toJSONObject = (obj) => { + const stack = new Array(10); + const visit = (source, i2) => { + if (isObject2(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + if (!("toJSON" in source)) { + stack[i2] = source; + const target = isArray2(source) ? [] : {}; + forEach(source, (value, key) => { + const reducedValue = visit(value, i2 + 1); + !isUndefined2(reducedValue) && (target[key] = reducedValue); + }); + stack[i2] = void 0; + return target; + } + } + return source; + }; + return visit(obj, 0); + }; + var isAsyncFn = kindOfTest("AsyncFunction"); + var isThenable = (thing) => thing && (isObject2(thing) || isFunction2(thing)) && isFunction2(thing.then) && isFunction2(thing.catch); + var utils$1 = { + isArray: isArray2, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString: isString2, + isNumber: isNumber2, + isBoolean: isBoolean2, + isObject: isObject2, + isPlainObject: isPlainObject3, + isUndefined: isUndefined2, + isDate, + isFile, + isBlob, + isRegExp, + isFunction: isFunction2, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty: hasOwnProperty2, + hasOwnProp: hasOwnProperty2, + // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop: noop3, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + ALPHABET, + generateString, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable + }; + function AxiosError(message, code, config, request2, response) { + Error.call(this); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } else { + this.stack = new Error().stack; + } + this.message = message; + this.name = "AxiosError"; + code && (this.code = code); + config && (this.config = config); + request2 && (this.request = request2); + response && (this.response = response); + } + utils$1.inherits(AxiosError, Error, { + toJSON: function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.response && this.response.status ? this.response.status : null + }; + } + }); + var prototype$1 = AxiosError.prototype; + var descriptors = {}; + [ + "ERR_BAD_OPTION_VALUE", + "ERR_BAD_OPTION", + "ECONNABORTED", + "ETIMEDOUT", + "ERR_NETWORK", + "ERR_FR_TOO_MANY_REDIRECTS", + "ERR_DEPRECATED", + "ERR_BAD_RESPONSE", + "ERR_BAD_REQUEST", + "ERR_CANCELED", + "ERR_NOT_SUPPORT", + "ERR_INVALID_URL" + // eslint-disable-next-line func-names + ].forEach((code) => { + descriptors[code] = { value: code }; + }); + Object.defineProperties(AxiosError, descriptors); + Object.defineProperty(prototype$1, "isAxiosError", { value: true }); + AxiosError.from = (error, code, config, request2, response, customProps) => { + const axiosError = Object.create(prototype$1); + utils$1.toFlatObject(error, axiosError, function filter3(obj) { + return obj !== Error.prototype; + }, (prop) => { + return prop !== "isAxiosError"; + }); + AxiosError.call(axiosError, error.message, code, config, request2, response); + axiosError.cause = error; + axiosError.name = error.name; + customProps && Object.assign(axiosError, customProps); + return axiosError; + }; + var httpAdapter = null; + function isVisitable(thing) { + return utils$1.isPlainObject(thing) || utils$1.isArray(thing); + } + function removeBrackets(key) { + return utils$1.endsWith(key, "[]") ? key.slice(0, -2) : key; + } + function renderKey(path, key, dots) { + if (!path) + return key; + return path.concat(key).map(function each3(token, i2) { + token = removeBrackets(token); + return !dots && i2 ? "[" + token + "]" : token; + }).join(dots ? "." : ""); + } + function isFlatArray(arr) { + return utils$1.isArray(arr) && !arr.some(isVisitable); + } + var predicates = utils$1.toFlatObject(utils$1, {}, null, function filter3(prop) { + return /^is[A-Z]/.test(prop); + }); + function toFormData(obj, formData, options) { + if (!utils$1.isObject(obj)) { + throw new TypeError("target must be an object"); + } + formData = formData || new FormData(); + options = utils$1.toFlatObject(options, { + metaTokens: true, + dots: false, + indexes: false + }, false, function defined(option, source) { + return !utils$1.isUndefined(source[option]); + }); + const metaTokens = options.metaTokens; + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || typeof Blob !== "undefined" && Blob; + const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); + if (!utils$1.isFunction(visitor)) { + throw new TypeError("visitor must be a function"); + } + function convertValue(value) { + if (value === null) + return ""; + if (utils$1.isDate(value)) { + return value.toISOString(); + } + if (!useBlob && utils$1.isBlob(value)) { + throw new AxiosError("Blob is not supported. Use a Buffer instead."); + } + if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { + return useBlob && typeof Blob === "function" ? new Blob([value]) : Buffer.from(value); + } + return value; + } + function defaultVisitor(value, key, path) { + let arr = value; + if (value && !path && typeof value === "object") { + if (utils$1.endsWith(key, "{}")) { + key = metaTokens ? key : key.slice(0, -2); + value = JSON.stringify(value); + } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, "[]")) && (arr = utils$1.toArray(value))) { + key = removeBrackets(key); + arr.forEach(function each3(el, index) { + !(utils$1.isUndefined(el) || el === null) && formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + "[]", + convertValue(el) + ); + }); + return false; + } + } + if (isVisitable(value)) { + return true; + } + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } + const stack = []; + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable + }); + function build(value, path) { + if (utils$1.isUndefined(value)) + return; + if (stack.indexOf(value) !== -1) { + throw Error("Circular reference detected in " + path.join(".")); + } + stack.push(value); + utils$1.forEach(value, function each3(el, key) { + const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( + formData, + el, + utils$1.isString(key) ? key.trim() : key, + path, + exposedHelpers + ); + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + stack.pop(); + } + if (!utils$1.isObject(obj)) { + throw new TypeError("data must be an object"); + } + build(obj); + return formData; + } + function encode$1(str) { + const charMap = { + "!": "%21", + "'": "%27", + "(": "%28", + ")": "%29", + "~": "%7E", + "%20": "+", + "%00": "\0" + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); + } + function AxiosURLSearchParams(params, options) { + this._pairs = []; + params && toFormData(params, this, options); + } + var prototype = AxiosURLSearchParams.prototype; + prototype.append = function append2(name, value) { + this._pairs.push([name, value]); + }; + prototype.toString = function toString3(encoder) { + const _encode = encoder ? function(value) { + return encoder.call(this, value, encode$1); + } : encode$1; + return this._pairs.map(function each3(pair) { + return _encode(pair[0]) + "=" + _encode(pair[1]); + }, "").join("&"); + }; + function encode(val) { + return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]"); + } + function buildURL(url, params, options) { + if (!params) { + return url; + } + const _encode = options && options.encode || encode; + const serializeFn = options && options.serialize; + let serializedParams; + if (serializeFn) { + serializedParams = serializeFn(params, options); + } else { + serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode); + } + if (serializedParams) { + const hashmarkIndex = url.indexOf("#"); + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf("?") === -1 ? "?" : "&") + serializedParams; + } + return url; + } + var InterceptorManager = class { + constructor() { + this.handlers = []; + } + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; + } + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils$1.forEach(this.handlers, function forEachHandler(h2) { + if (h2 !== null) { + fn(h2); + } + }); + } + }; + var InterceptorManager$1 = InterceptorManager; + var transitionalDefaults = { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false + }; + var URLSearchParams$1 = typeof URLSearchParams !== "undefined" ? URLSearchParams : AxiosURLSearchParams; + var FormData$1 = typeof FormData !== "undefined" ? FormData : null; + var Blob$1 = typeof Blob !== "undefined" ? Blob : null; + var platform$1 = { + isBrowser: true, + classes: { + URLSearchParams: URLSearchParams$1, + FormData: FormData$1, + Blob: Blob$1 + }, + protocols: ["http", "https", "file", "blob", "url", "data"] + }; + var hasBrowserEnv = typeof window !== "undefined" && typeof document !== "undefined"; + var hasStandardBrowserEnv = ((product) => { + return hasBrowserEnv && ["ReactNative", "NativeScript", "NS"].indexOf(product) < 0; + })(typeof navigator !== "undefined" && navigator.product); + var hasStandardBrowserWebWorkerEnv = (() => { + return typeof WorkerGlobalScope !== "undefined" && // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && typeof self.importScripts === "function"; + })(); + var utils = /* @__PURE__ */ Object.freeze({ + __proto__: null, + hasBrowserEnv, + hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv + }); + var platform2 = { + ...utils, + ...platform$1 + }; + function toURLEncodedForm(data, options) { + return toFormData(data, new platform2.classes.URLSearchParams(), Object.assign({ + visitor: function(value, key, path, helpers) { + if (platform2.isNode && utils$1.isBuffer(value)) { + this.append(key, value.toString("base64")); + return false; + } + return helpers.defaultVisitor.apply(this, arguments); + } + }, options)); + } + function parsePropPath(name) { + return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { + return match[0] === "[]" ? "" : match[1] || match[0]; + }); + } + function arrayToObject(arr) { + const obj = {}; + const keys2 = Object.keys(arr); + let i2; + const len = keys2.length; + let key; + for (i2 = 0; i2 < len; i2++) { + key = keys2[i2]; + obj[key] = arr[key]; + } + return obj; + } + function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + let name = path[index++]; + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path.length; + name = !name && utils$1.isArray(target) ? target.length : name; + if (isLast) { + if (utils$1.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + return !isNumericKey; + } + if (!target[name] || !utils$1.isObject(target[name])) { + target[name] = []; + } + const result = buildPath(path, value, target[name], index); + if (result && utils$1.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + return !isNumericKey; + } + if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { + const obj = {}; + utils$1.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + return obj; + } + return null; + } + function stringifySafely(rawValue, parser, encoder) { + if (utils$1.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils$1.trim(rawValue); + } catch (e2) { + if (e2.name !== "SyntaxError") { + throw e2; + } + } + } + return (encoder || JSON.stringify)(rawValue); + } + var defaults = { + transitional: transitionalDefaults, + adapter: ["xhr", "http"], + transformRequest: [function transformRequest(data, headers) { + const contentType = headers.getContentType() || ""; + const hasJSONContentType = contentType.indexOf("application/json") > -1; + const isObjectPayload = utils$1.isObject(data); + if (isObjectPayload && utils$1.isHTMLForm(data)) { + data = new FormData(data); + } + const isFormData2 = utils$1.isFormData(data); + if (isFormData2) { + if (!hasJSONContentType) { + return data; + } + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data)) { + return data; + } + if (utils$1.isArrayBufferView(data)) { + return data.buffer; + } + if (utils$1.isURLSearchParams(data)) { + headers.setContentType("application/x-www-form-urlencoded;charset=utf-8", false); + return data.toString(); + } + let isFileList2; + if (isObjectPayload) { + if (contentType.indexOf("application/x-www-form-urlencoded") > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + if ((isFileList2 = utils$1.isFileList(data)) || contentType.indexOf("multipart/form-data") > -1) { + const _FormData = this.env && this.env.FormData; + return toFormData( + isFileList2 ? { "files[]": data } : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + if (isObjectPayload || hasJSONContentType) { + headers.setContentType("application/json", false); + return stringifySafely(data); + } + return data; + }], + transformResponse: [function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === "json"; + if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + try { + return JSON.parse(data); + } catch (e2) { + if (strictJSONParsing) { + if (e2.name === "SyntaxError") { + throw AxiosError.from(e2, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e2; + } + } + } + return data; + }], + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + xsrfCookieName: "XSRF-TOKEN", + xsrfHeaderName: "X-XSRF-TOKEN", + maxContentLength: -1, + maxBodyLength: -1, + env: { + FormData: platform2.classes.FormData, + Blob: platform2.classes.Blob + }, + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + headers: { + common: { + "Accept": "application/json, text/plain, */*", + "Content-Type": void 0 + } + } + }; + utils$1.forEach(["delete", "get", "head", "post", "put", "patch"], (method) => { + defaults.headers[method] = {}; + }); + var defaults$1 = defaults; + var ignoreDuplicateOf = utils$1.toObjectSet([ + "age", + "authorization", + "content-length", + "content-type", + "etag", + "expires", + "from", + "host", + "if-modified-since", + "if-unmodified-since", + "last-modified", + "location", + "max-forwards", + "proxy-authorization", + "referer", + "retry-after", + "user-agent" + ]); + var parseHeaders = (rawHeaders) => { + const parsed = {}; + let key; + let val; + let i2; + rawHeaders && rawHeaders.split("\n").forEach(function parser(line) { + i2 = line.indexOf(":"); + key = line.substring(0, i2).trim().toLowerCase(); + val = line.substring(i2 + 1).trim(); + if (!key || parsed[key] && ignoreDuplicateOf[key]) { + return; + } + if (key === "set-cookie") { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ", " + val : val; + } + }); + return parsed; + }; + var $internals = Symbol("internals"); + function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); + } + function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); + } + function parseTokens(str) { + const tokens = /* @__PURE__ */ Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + while (match = tokensRE.exec(str)) { + tokens[match[1]] = match[2]; + } + return tokens; + } + var isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + function matchHeaderValue(context, value, header, filter3, isHeaderNameFilter) { + if (utils$1.isFunction(filter3)) { + return filter3.call(this, value, header); + } + if (isHeaderNameFilter) { + value = header; + } + if (!utils$1.isString(value)) + return; + if (utils$1.isString(filter3)) { + return value.indexOf(filter3) !== -1; + } + if (utils$1.isRegExp(filter3)) { + return filter3.test(value); + } + } + function formatHeader(header) { + return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w2, char, str) => { + return char.toUpperCase() + str; + }); + } + function buildAccessors(obj, header) { + const accessorName = utils$1.toCamelCase(" " + header); + ["get", "set", "has"].forEach((methodName) => { + Object.defineProperty(obj, methodName + accessorName, { + value: function(arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true + }); + }); + } + var AxiosHeaders = class { + constructor(headers) { + headers && this.set(headers); + } + set(header, valueOrRewrite, rewrite) { + const self2 = this; + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + if (!lHeader) { + throw new Error("header name must be a non-empty string"); + } + const key = utils$1.findKey(self2, lHeader); + if (!key || self2[key] === void 0 || _rewrite === true || _rewrite === void 0 && self2[key] !== false) { + self2[key || _header] = normalizeValue(_value); + } + } + const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + if (utils$1.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + return this; + } + get(header, parser) { + header = normalizeHeader(header); + if (header) { + const key = utils$1.findKey(this, header); + if (key) { + const value = this[key]; + if (!parser) { + return value; + } + if (parser === true) { + return parseTokens(value); + } + if (utils$1.isFunction(parser)) { + return parser.call(this, value, key); + } + if (utils$1.isRegExp(parser)) { + return parser.exec(value); + } + throw new TypeError("parser must be boolean|regexp|function"); + } + } + } + has(header, matcher) { + header = normalizeHeader(header); + if (header) { + const key = utils$1.findKey(this, header); + return !!(key && this[key] !== void 0 && (!matcher || matchHeaderValue(this, this[key], key, matcher))); + } + return false; + } + delete(header, matcher) { + const self2 = this; + let deleted = false; + function deleteHeader(_header) { + _header = normalizeHeader(_header); + if (_header) { + const key = utils$1.findKey(self2, _header); + if (key && (!matcher || matchHeaderValue(self2, self2[key], key, matcher))) { + delete self2[key]; + deleted = true; + } + } + } + if (utils$1.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + return deleted; + } + clear(matcher) { + const keys2 = Object.keys(this); + let i2 = keys2.length; + let deleted = false; + while (i2--) { + const key = keys2[i2]; + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + return deleted; + } + normalize(format) { + const self2 = this; + const headers = {}; + utils$1.forEach(this, (value, header) => { + const key = utils$1.findKey(headers, header); + if (key) { + self2[key] = normalizeValue(value); + delete self2[header]; + return; + } + const normalized = format ? formatHeader(header) : String(header).trim(); + if (normalized !== header) { + delete self2[header]; + } + self2[normalized] = normalizeValue(value); + headers[normalized] = true; + }); + return this; + } + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + toJSON(asStrings) { + const obj = /* @__PURE__ */ Object.create(null); + utils$1.forEach(this, (value, header) => { + value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(", ") : value); + }); + return obj; + } + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + toString() { + return Object.entries(this.toJSON()).map(([header, value]) => header + ": " + value).join("\n"); + } + get [Symbol.toStringTag]() { + return "AxiosHeaders"; + } + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + static concat(first, ...targets) { + const computed = new this(first); + targets.forEach((target) => computed.set(target)); + return computed; + } + static accessor(header) { + const internals = this[$internals] = this[$internals] = { + accessors: {} + }; + const accessors = internals.accessors; + const prototype2 = this.prototype; + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + if (!accessors[lHeader]) { + buildAccessors(prototype2, _header); + accessors[lHeader] = true; + } + } + utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + return this; + } + }; + AxiosHeaders.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]); + utils$1.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + } + }; + }); + utils$1.freezeMethods(AxiosHeaders); + var AxiosHeaders$1 = AxiosHeaders; + function transformData(fns, response) { + const config = this || defaults$1; + const context = response || config; + const headers = AxiosHeaders$1.from(context.headers); + let data = context.data; + utils$1.forEach(fns, function transform2(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : void 0); + }); + headers.normalize(); + return data; + } + function isCancel(value) { + return !!(value && value.__CANCEL__); + } + function CanceledError(message, config, request2) { + AxiosError.call(this, message == null ? "canceled" : message, AxiosError.ERR_CANCELED, config, request2); + this.name = "CanceledError"; + } + utils$1.inherits(CanceledError, AxiosError, { + __CANCEL__: true + }); + function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(new AxiosError( + "Request failed with status code " + response.status, + [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], + response.config, + response.request, + response + )); + } + } + var cookies = platform2.hasStandardBrowserEnv ? ( + // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure) { + const cookie = [name + "=" + encodeURIComponent(value)]; + utils$1.isNumber(expires) && cookie.push("expires=" + new Date(expires).toGMTString()); + utils$1.isString(path) && cookie.push("path=" + path); + utils$1.isString(domain) && cookie.push("domain=" + domain); + secure === true && cookie.push("secure"); + document.cookie = cookie.join("; "); + }, + read(name) { + const match = document.cookie.match(new RegExp("(^|;\\s*)(" + name + ")=([^;]*)")); + return match ? decodeURIComponent(match[3]) : null; + }, + remove(name) { + this.write(name, "", Date.now() - 864e5); + } + } + ) : ( + // Non-standard browser env (web workers, react-native) lack needed support. + { + write() { + }, + read() { + return null; + }, + remove() { + } + } + ); + function isAbsoluteURL(url) { + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); + } + function combineURLs(baseURL, relativeURL) { + return relativeURL ? baseURL.replace(/\/?\/$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL; + } + function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; + } + var isURLSameOrigin = platform2.hasStandardBrowserEnv ? ( + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + function standardBrowserEnv() { + const msie = /(msie|trident)/i.test(navigator.userAgent); + const urlParsingNode = document.createElement("a"); + let originURL; + function resolveURL(url) { + let href = url; + if (msie) { + urlParsingNode.setAttribute("href", href); + href = urlParsingNode.href; + } + urlParsingNode.setAttribute("href", href); + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, "") : "", + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, "") : "", + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, "") : "", + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: urlParsingNode.pathname.charAt(0) === "/" ? urlParsingNode.pathname : "/" + urlParsingNode.pathname + }; + } + originURL = resolveURL(window.location.href); + return function isURLSameOrigin2(requestURL) { + const parsed = utils$1.isString(requestURL) ? resolveURL(requestURL) : requestURL; + return parsed.protocol === originURL.protocol && parsed.host === originURL.host; + }; + }() + ) : ( + // Non standard browser envs (web workers, react-native) lack needed support. + function nonStandardBrowserEnv() { + return function isURLSameOrigin2() { + return true; + }; + }() + ); + function parseProtocol(url) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return match && match[1] || ""; + } + function speedometer(samplesCount, min2) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + min2 = min2 !== void 0 ? min2 : 1e3; + return function push2(chunkLength) { + const now2 = Date.now(); + const startedAt = timestamps[tail]; + if (!firstSampleTS) { + firstSampleTS = now2; + } + bytes[head] = chunkLength; + timestamps[head] = now2; + let i2 = tail; + let bytesCount = 0; + while (i2 !== head) { + bytesCount += bytes[i2++]; + i2 = i2 % samplesCount; + } + head = (head + 1) % samplesCount; + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + if (now2 - firstSampleTS < min2) { + return; + } + const passed = startedAt && now2 - startedAt; + return passed ? Math.round(bytesCount * 1e3 / passed) : void 0; + }; + } + function progressEventReducer(listener, isDownloadStream) { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + return (e2) => { + const loaded = e2.loaded; + const total = e2.lengthComputable ? e2.total : void 0; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + bytesNotified = loaded; + const data = { + loaded, + total, + progress: total ? loaded / total : void 0, + bytes: progressBytes, + rate: rate ? rate : void 0, + estimated: rate && total && inRange ? (total - loaded) / rate : void 0, + event: e2 + }; + data[isDownloadStream ? "download" : "upload"] = true; + listener(data); + }; + } + var isXHRAdapterSupported = typeof XMLHttpRequest !== "undefined"; + var xhrAdapter = isXHRAdapterSupported && function(config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + let requestData = config.data; + const requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); + let { responseType, withXSRFToken } = config; + let onCanceled; + function done() { + if (config.cancelToken) { + config.cancelToken.unsubscribe(onCanceled); + } + if (config.signal) { + config.signal.removeEventListener("abort", onCanceled); + } + } + let contentType; + if (utils$1.isFormData(requestData)) { + if (platform2.hasStandardBrowserEnv || platform2.hasStandardBrowserWebWorkerEnv) { + requestHeaders.setContentType(false); + } else if ((contentType = requestHeaders.getContentType()) !== false) { + const [type, ...tokens] = contentType ? contentType.split(";").map((token) => token.trim()).filter(Boolean) : []; + requestHeaders.setContentType([type || "multipart/form-data", ...tokens].join("; ")); + } + } + let request2 = new XMLHttpRequest(); + if (config.auth) { + const username = config.auth.username || ""; + const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ""; + requestHeaders.set("Authorization", "Basic " + btoa(username + ":" + password)); + } + const fullPath = buildFullPath(config.baseURL, config.url); + request2.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + request2.timeout = config.timeout; + function onloadend() { + if (!request2) { + return; + } + const responseHeaders = AxiosHeaders$1.from( + "getAllResponseHeaders" in request2 && request2.getAllResponseHeaders() + ); + const responseData = !responseType || responseType === "text" || responseType === "json" ? request2.responseText : request2.response; + const response = { + data: responseData, + status: request2.status, + statusText: request2.statusText, + headers: responseHeaders, + config, + request: request2 + }; + settle(function _resolve(value) { + resolve(value); + done(); + }, function _reject(err) { + reject(err); + done(); + }, response); + request2 = null; + } + if ("onloadend" in request2) { + request2.onloadend = onloadend; + } else { + request2.onreadystatechange = function handleLoad() { + if (!request2 || request2.readyState !== 4) { + return; + } + if (request2.status === 0 && !(request2.responseURL && request2.responseURL.indexOf("file:") === 0)) { + return; + } + setTimeout(onloadend); + }; + } + request2.onabort = function handleAbort() { + if (!request2) { + return; + } + reject(new AxiosError("Request aborted", AxiosError.ECONNABORTED, config, request2)); + request2 = null; + }; + request2.onerror = function handleError() { + reject(new AxiosError("Network Error", AxiosError.ERR_NETWORK, config, request2)); + request2 = null; + }; + request2.ontimeout = function handleTimeout() { + let timeoutErrorMessage = config.timeout ? "timeout of " + config.timeout + "ms exceeded" : "timeout exceeded"; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + request2 + )); + request2 = null; + }; + if (platform2.hasStandardBrowserEnv) { + withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); + if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(fullPath)) { + const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); + if (xsrfValue) { + requestHeaders.set(config.xsrfHeaderName, xsrfValue); + } + } + } + requestData === void 0 && requestHeaders.setContentType(null); + if ("setRequestHeader" in request2) { + utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request2.setRequestHeader(key, val); + }); + } + if (!utils$1.isUndefined(config.withCredentials)) { + request2.withCredentials = !!config.withCredentials; + } + if (responseType && responseType !== "json") { + request2.responseType = config.responseType; + } + if (typeof config.onDownloadProgress === "function") { + request2.addEventListener("progress", progressEventReducer(config.onDownloadProgress, true)); + } + if (typeof config.onUploadProgress === "function" && request2.upload) { + request2.upload.addEventListener("progress", progressEventReducer(config.onUploadProgress)); + } + if (config.cancelToken || config.signal) { + onCanceled = (cancel) => { + if (!request2) { + return; + } + reject(!cancel || cancel.type ? new CanceledError(null, config, request2) : cancel); + request2.abort(); + request2 = null; + }; + config.cancelToken && config.cancelToken.subscribe(onCanceled); + if (config.signal) { + config.signal.aborted ? onCanceled() : config.signal.addEventListener("abort", onCanceled); + } + } + const protocol = parseProtocol(fullPath); + if (protocol && platform2.protocols.indexOf(protocol) === -1) { + reject(new AxiosError("Unsupported protocol " + protocol + ":", AxiosError.ERR_BAD_REQUEST, config)); + return; + } + request2.send(requestData || null); + }); + }; + var knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter + }; + utils$1.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, "name", { value }); + } catch (e2) { + } + Object.defineProperty(fn, "adapterName", { value }); + } + }); + var renderReason = (reason) => `- ${reason}`; + var isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; + var adapters = { + getAdapter: (adapters2) => { + adapters2 = utils$1.isArray(adapters2) ? adapters2 : [adapters2]; + const { length } = adapters2; + let nameOrAdapter; + let adapter; + const rejectedReasons = {}; + for (let i2 = 0; i2 < length; i2++) { + nameOrAdapter = adapters2[i2]; + let id; + adapter = nameOrAdapter; + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + if (adapter === void 0) { + throw new AxiosError(`Unknown adapter '${id}'`); + } + } + if (adapter) { + break; + } + rejectedReasons[id || "#" + i2] = adapter; + } + if (!adapter) { + const reasons = Object.entries(rejectedReasons).map( + ([id, state]) => `adapter ${id} ` + (state === false ? "is not supported by the environment" : "is not available in the build") + ); + let s2 = length ? reasons.length > 1 ? "since :\n" + reasons.map(renderReason).join("\n") : " " + renderReason(reasons[0]) : "as no adapter specified"; + throw new AxiosError( + `There is no suitable adapter to dispatch the request ` + s2, + "ERR_NOT_SUPPORT" + ); + } + return adapter; + }, + adapters: knownAdapters + }; + function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + if (config.signal && config.signal.aborted) { + throw new CanceledError(null, config); + } + } + function dispatchRequest(config) { + throwIfCancellationRequested(config); + config.headers = AxiosHeaders$1.from(config.headers); + config.data = transformData.call( + config, + config.transformRequest + ); + if (["post", "put", "patch"].indexOf(config.method) !== -1) { + config.headers.setContentType("application/x-www-form-urlencoded", false); + } + const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + response.data = transformData.call( + config, + config.transformResponse, + response + ); + response.headers = AxiosHeaders$1.from(response.headers); + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders$1.from(reason.response.headers); + } + } + return Promise.reject(reason); + }); + } + var headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? thing.toJSON() : thing; + function mergeConfig(config1, config2) { + config2 = config2 || {}; + const config = {}; + function getMergedValue(target, source, caseless) { + if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { + return utils$1.merge.call({ caseless }, target, source); + } else if (utils$1.isPlainObject(source)) { + return utils$1.merge({}, source); + } else if (utils$1.isArray(source)) { + return source.slice(); + } + return source; + } + function mergeDeepProperties(a2, b2, caseless) { + if (!utils$1.isUndefined(b2)) { + return getMergedValue(a2, b2, caseless); + } else if (!utils$1.isUndefined(a2)) { + return getMergedValue(void 0, a2, caseless); + } + } + function valueFromConfig2(a2, b2) { + if (!utils$1.isUndefined(b2)) { + return getMergedValue(void 0, b2); + } + } + function defaultToConfig2(a2, b2) { + if (!utils$1.isUndefined(b2)) { + return getMergedValue(void 0, b2); + } else if (!utils$1.isUndefined(a2)) { + return getMergedValue(void 0, a2); + } + } + function mergeDirectKeys(a2, b2, prop) { + if (prop in config2) { + return getMergedValue(a2, b2); + } else if (prop in config1) { + return getMergedValue(void 0, a2); + } + } + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a2, b2) => mergeDeepProperties(headersToObject(a2), headersToObject(b2), true) + }; + utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { + const merge2 = mergeMap[prop] || mergeDeepProperties; + const configValue = merge2(config1[prop], config2[prop], prop); + utils$1.isUndefined(configValue) && merge2 !== mergeDirectKeys || (config[prop] = configValue); + }); + return config; + } + var VERSION = "1.6.3"; + var validators$1 = {}; + ["object", "boolean", "number", "function", "string", "symbol"].forEach((type, i2) => { + validators$1[type] = function validator2(thing) { + return typeof thing === type || "a" + (i2 < 1 ? "n " : " ") + type; + }; + }); + var deprecatedWarnings = {}; + validators$1.transitional = function transitional(validator2, version, message) { + function formatMessage(opt, desc) { + return "[Axios v" + VERSION + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : ""); + } + return (value, opt, opts) => { + if (validator2 === false) { + throw new AxiosError( + formatMessage(opt, " has been removed" + (version ? " in " + version : "")), + AxiosError.ERR_DEPRECATED + ); + } + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + console.warn( + formatMessage( + opt, + " has been deprecated since v" + version + " and will be removed in the near future" + ) + ); + } + return validator2 ? validator2(value, opt, opts) : true; + }; + }; + function assertOptions(options, schema, allowUnknown) { + if (typeof options !== "object") { + throw new AxiosError("options must be an object", AxiosError.ERR_BAD_OPTION_VALUE); + } + const keys2 = Object.keys(options); + let i2 = keys2.length; + while (i2-- > 0) { + const opt = keys2[i2]; + const validator2 = schema[opt]; + if (validator2) { + const value = options[opt]; + const result = value === void 0 || validator2(value, opt, options); + if (result !== true) { + throw new AxiosError("option " + opt + " must be " + result, AxiosError.ERR_BAD_OPTION_VALUE); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError("Unknown option " + opt, AxiosError.ERR_BAD_OPTION); + } + } + } + var validator = { + assertOptions, + validators: validators$1 + }; + var validators = validator.validators; + var Axios = class { + constructor(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager$1(), + response: new InterceptorManager$1() + }; + } + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + request(configOrUrl, config) { + if (typeof configOrUrl === "string") { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + config = mergeConfig(this.defaults, config); + const { transitional, paramsSerializer, headers } = config; + if (transitional !== void 0) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean) + }, false); + } + if (paramsSerializer != null) { + if (utils$1.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer + }; + } else { + validator.assertOptions(paramsSerializer, { + encode: validators.function, + serialize: validators.function + }, true); + } + } + config.method = (config.method || this.defaults.method || "get").toLowerCase(); + let contextHeaders = headers && utils$1.merge( + headers.common, + headers[config.method] + ); + headers && utils$1.forEach( + ["delete", "get", "head", "post", "put", "patch", "common"], + (method) => { + delete headers[method]; + } + ); + config.headers = AxiosHeaders$1.concat(contextHeaders, headers); + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config) === false) { + return; + } + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + let promise2; + let i2 = 0; + let len; + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), void 0]; + chain.unshift.apply(chain, requestInterceptorChain); + chain.push.apply(chain, responseInterceptorChain); + len = chain.length; + promise2 = Promise.resolve(config); + while (i2 < len) { + promise2 = promise2.then(chain[i2++], chain[i2++]); + } + return promise2; + } + len = requestInterceptorChain.length; + let newConfig = config; + i2 = 0; + while (i2 < len) { + const onFulfilled = requestInterceptorChain[i2++]; + const onRejected = requestInterceptorChain[i2++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + try { + promise2 = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + i2 = 0; + len = responseInterceptorChain.length; + while (i2 < len) { + promise2 = promise2.then(responseInterceptorChain[i2++], responseInterceptorChain[i2++]); + } + return promise2; + } + getUri(config) { + config = mergeConfig(this.defaults, config); + const fullPath = buildFullPath(config.baseURL, config.url); + return buildURL(fullPath, config.params, config.paramsSerializer); + } + }; + utils$1.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method) { + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method, + url, + data: (config || {}).data + })); + }; + }); + utils$1.forEach(["post", "put", "patch"], function forEachMethodWithData(method) { + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request(mergeConfig(config || {}, { + method, + headers: isForm ? { + "Content-Type": "multipart/form-data" + } : {}, + url, + data + })); + }; + } + Axios.prototype[method] = generateHTTPMethod(); + Axios.prototype[method + "Form"] = generateHTTPMethod(true); + }); + var Axios$1 = Axios; + var CancelToken = class _CancelToken { + constructor(executor) { + if (typeof executor !== "function") { + throw new TypeError("executor must be a function."); + } + let resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + const token = this; + this.promise.then((cancel) => { + if (!token._listeners) + return; + let i2 = token._listeners.length; + while (i2-- > 0) { + token._listeners[i2](cancel); + } + token._listeners = null; + }); + this.promise.then = (onfulfilled) => { + let _resolve; + const promise2 = new Promise((resolve) => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + promise2.cancel = function reject() { + token.unsubscribe(_resolve); + }; + return promise2; + }; + executor(function cancel(message, config, request2) { + if (token.reason) { + return; + } + token.reason = new CanceledError(message, config, request2); + resolvePromise(token.reason); + }); + } + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + /** + * Subscribe to the cancel signal + */ + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + /** + * Unsubscribe from the cancel signal + */ + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new _CancelToken(function executor(c2) { + cancel = c2; + }); + return { + token, + cancel + }; + } + }; + var CancelToken$1 = CancelToken; + function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; + } + function isAxiosError(payload) { + return utils$1.isObject(payload) && payload.isAxiosError === true; + } + var HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511 + }; + Object.entries(HttpStatusCode).forEach(([key, value]) => { + HttpStatusCode[value] = key; + }); + var HttpStatusCode$1 = HttpStatusCode; + function createInstance(defaultConfig) { + const context = new Axios$1(defaultConfig); + const instance53 = bind2(Axios$1.prototype.request, context); + utils$1.extend(instance53, Axios$1.prototype, context, { allOwnKeys: true }); + utils$1.extend(instance53, context, null, { allOwnKeys: true }); + instance53.create = function create2(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + return instance53; + } + var axios = createInstance(defaults$1); + axios.Axios = Axios$1; + axios.CanceledError = CanceledError; + axios.CancelToken = CancelToken$1; + axios.isCancel = isCancel; + axios.VERSION = VERSION; + axios.toFormData = toFormData; + axios.AxiosError = AxiosError; + axios.Cancel = axios.CanceledError; + axios.all = function all(promises) { + return Promise.all(promises); + }; + axios.spread = spread; + axios.isAxiosError = isAxiosError; + axios.mergeConfig = mergeConfig; + axios.AxiosHeaders = AxiosHeaders$1; + axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); + axios.getAdapter = adapters.getAdapter; + axios.HttpStatusCode = HttpStatusCode$1; + axios.default = axios; + module2.exports = axios; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/rng.js +var require_rng = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/rng.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = rng; + var getRandomValues; + var rnds8 = new Uint8Array(16); + function rng() { + if (!getRandomValues) { + getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); + if (!getRandomValues) { + throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); + } + } + return getRandomValues(rnds8); + } + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/regex.js +var require_regex = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/regex.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/validate.js +var require_validate = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/validate.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _regex = _interopRequireDefault(require_regex()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function validate(uuid) { + return typeof uuid === "string" && _regex.default.test(uuid); + } + var _default = validate; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/stringify.js +var require_stringify = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/stringify.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + exports.unsafeStringify = unsafeStringify; + var _validate = _interopRequireDefault(require_validate()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var byteToHex = []; + for (let i2 = 0; i2 < 256; ++i2) { + byteToHex.push((i2 + 256).toString(16).slice(1)); + } + function unsafeStringify(arr, offset3 = 0) { + return byteToHex[arr[offset3 + 0]] + byteToHex[arr[offset3 + 1]] + byteToHex[arr[offset3 + 2]] + byteToHex[arr[offset3 + 3]] + "-" + byteToHex[arr[offset3 + 4]] + byteToHex[arr[offset3 + 5]] + "-" + byteToHex[arr[offset3 + 6]] + byteToHex[arr[offset3 + 7]] + "-" + byteToHex[arr[offset3 + 8]] + byteToHex[arr[offset3 + 9]] + "-" + byteToHex[arr[offset3 + 10]] + byteToHex[arr[offset3 + 11]] + byteToHex[arr[offset3 + 12]] + byteToHex[arr[offset3 + 13]] + byteToHex[arr[offset3 + 14]] + byteToHex[arr[offset3 + 15]]; + } + function stringify(arr, offset3 = 0) { + const uuid = unsafeStringify(arr, offset3); + if (!(0, _validate.default)(uuid)) { + throw TypeError("Stringified UUID is invalid"); + } + return uuid; + } + var _default = stringify; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/v1.js +var require_v1 = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/v1.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _rng = _interopRequireDefault(require_rng()); + var _stringify = require_stringify(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var _nodeId; + var _clockseq; + var _lastMSecs = 0; + var _lastNSecs = 0; + function v1(options, buf, offset3) { + let i2 = buf && offset3 || 0; + const b2 = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== void 0 ? options.clockseq : _clockseq; + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || _rng.default)(); + if (node == null) { + node = _nodeId = [seedBytes[0] | 1, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + if (clockseq == null) { + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 16383; + } + } + let msecs = options.msecs !== void 0 ? options.msecs : Date.now(); + let nsecs = options.nsecs !== void 0 ? options.nsecs : _lastNSecs + 1; + const dt2 = msecs - _lastMSecs + (nsecs - _lastNSecs) / 1e4; + if (dt2 < 0 && options.clockseq === void 0) { + clockseq = clockseq + 1 & 16383; + } + if ((dt2 < 0 || msecs > _lastMSecs) && options.nsecs === void 0) { + nsecs = 0; + } + if (nsecs >= 1e4) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + msecs += 122192928e5; + const tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296; + b2[i2++] = tl >>> 24 & 255; + b2[i2++] = tl >>> 16 & 255; + b2[i2++] = tl >>> 8 & 255; + b2[i2++] = tl & 255; + const tmh = msecs / 4294967296 * 1e4 & 268435455; + b2[i2++] = tmh >>> 8 & 255; + b2[i2++] = tmh & 255; + b2[i2++] = tmh >>> 24 & 15 | 16; + b2[i2++] = tmh >>> 16 & 255; + b2[i2++] = clockseq >>> 8 | 128; + b2[i2++] = clockseq & 255; + for (let n2 = 0; n2 < 6; ++n2) { + b2[i2 + n2] = node[n2]; + } + return buf || (0, _stringify.unsafeStringify)(b2); + } + var _default = v1; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/parse.js +var require_parse = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/parse.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _validate = _interopRequireDefault(require_validate()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function parse(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError("Invalid UUID"); + } + let v2; + const arr = new Uint8Array(16); + arr[0] = (v2 = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v2 >>> 16 & 255; + arr[2] = v2 >>> 8 & 255; + arr[3] = v2 & 255; + arr[4] = (v2 = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v2 & 255; + arr[6] = (v2 = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v2 & 255; + arr[8] = (v2 = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v2 & 255; + arr[10] = (v2 = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255; + arr[11] = v2 / 4294967296 & 255; + arr[12] = v2 >>> 24 & 255; + arr[13] = v2 >>> 16 & 255; + arr[14] = v2 >>> 8 & 255; + arr[15] = v2 & 255; + return arr; + } + var _default = parse; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/v35.js +var require_v35 = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/v35.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.URL = exports.DNS = void 0; + exports.default = v35; + var _stringify = require_stringify(); + var _parse = _interopRequireDefault(require_parse()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); + const bytes = []; + for (let i2 = 0; i2 < str.length; ++i2) { + bytes.push(str.charCodeAt(i2)); + } + return bytes; + } + var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; + exports.DNS = DNS; + var URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; + exports.URL = URL; + function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset3) { + var _namespace; + if (typeof value === "string") { + value = stringToBytes(value); + } + if (typeof namespace === "string") { + namespace = (0, _parse.default)(namespace); + } + if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) { + throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); + } + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 15 | version; + bytes[8] = bytes[8] & 63 | 128; + if (buf) { + offset3 = offset3 || 0; + for (let i2 = 0; i2 < 16; ++i2) { + buf[offset3 + i2] = bytes[i2]; + } + return buf; + } + return (0, _stringify.unsafeStringify)(bytes); + } + try { + generateUUID.name = name; + } catch (err) { + } + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; + } + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/md5.js +var require_md5 = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/md5.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + function md5(bytes) { + if (typeof bytes === "string") { + const msg = unescape(encodeURIComponent(bytes)); + bytes = new Uint8Array(msg.length); + for (let i2 = 0; i2 < msg.length; ++i2) { + bytes[i2] = msg.charCodeAt(i2); + } + } + return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8)); + } + function md5ToHexEncodedArray(input) { + const output = []; + const length32 = input.length * 32; + const hexTab = "0123456789abcdef"; + for (let i2 = 0; i2 < length32; i2 += 8) { + const x2 = input[i2 >> 5] >>> i2 % 32 & 255; + const hex = parseInt(hexTab.charAt(x2 >>> 4 & 15) + hexTab.charAt(x2 & 15), 16); + output.push(hex); + } + return output; + } + function getOutputLength(inputLength8) { + return (inputLength8 + 64 >>> 9 << 4) + 14 + 1; + } + function wordsToMd5(x2, len) { + x2[len >> 5] |= 128 << len % 32; + x2[getOutputLength(len) - 1] = len; + let a2 = 1732584193; + let b2 = -271733879; + let c2 = -1732584194; + let d2 = 271733878; + for (let i2 = 0; i2 < x2.length; i2 += 16) { + const olda = a2; + const oldb = b2; + const oldc = c2; + const oldd = d2; + a2 = md5ff(a2, b2, c2, d2, x2[i2], 7, -680876936); + d2 = md5ff(d2, a2, b2, c2, x2[i2 + 1], 12, -389564586); + c2 = md5ff(c2, d2, a2, b2, x2[i2 + 2], 17, 606105819); + b2 = md5ff(b2, c2, d2, a2, x2[i2 + 3], 22, -1044525330); + a2 = md5ff(a2, b2, c2, d2, x2[i2 + 4], 7, -176418897); + d2 = md5ff(d2, a2, b2, c2, x2[i2 + 5], 12, 1200080426); + c2 = md5ff(c2, d2, a2, b2, x2[i2 + 6], 17, -1473231341); + b2 = md5ff(b2, c2, d2, a2, x2[i2 + 7], 22, -45705983); + a2 = md5ff(a2, b2, c2, d2, x2[i2 + 8], 7, 1770035416); + d2 = md5ff(d2, a2, b2, c2, x2[i2 + 9], 12, -1958414417); + c2 = md5ff(c2, d2, a2, b2, x2[i2 + 10], 17, -42063); + b2 = md5ff(b2, c2, d2, a2, x2[i2 + 11], 22, -1990404162); + a2 = md5ff(a2, b2, c2, d2, x2[i2 + 12], 7, 1804603682); + d2 = md5ff(d2, a2, b2, c2, x2[i2 + 13], 12, -40341101); + c2 = md5ff(c2, d2, a2, b2, x2[i2 + 14], 17, -1502002290); + b2 = md5ff(b2, c2, d2, a2, x2[i2 + 15], 22, 1236535329); + a2 = md5gg(a2, b2, c2, d2, x2[i2 + 1], 5, -165796510); + d2 = md5gg(d2, a2, b2, c2, x2[i2 + 6], 9, -1069501632); + c2 = md5gg(c2, d2, a2, b2, x2[i2 + 11], 14, 643717713); + b2 = md5gg(b2, c2, d2, a2, x2[i2], 20, -373897302); + a2 = md5gg(a2, b2, c2, d2, x2[i2 + 5], 5, -701558691); + d2 = md5gg(d2, a2, b2, c2, x2[i2 + 10], 9, 38016083); + c2 = md5gg(c2, d2, a2, b2, x2[i2 + 15], 14, -660478335); + b2 = md5gg(b2, c2, d2, a2, x2[i2 + 4], 20, -405537848); + a2 = md5gg(a2, b2, c2, d2, x2[i2 + 9], 5, 568446438); + d2 = md5gg(d2, a2, b2, c2, x2[i2 + 14], 9, -1019803690); + c2 = md5gg(c2, d2, a2, b2, x2[i2 + 3], 14, -187363961); + b2 = md5gg(b2, c2, d2, a2, x2[i2 + 8], 20, 1163531501); + a2 = md5gg(a2, b2, c2, d2, x2[i2 + 13], 5, -1444681467); + d2 = md5gg(d2, a2, b2, c2, x2[i2 + 2], 9, -51403784); + c2 = md5gg(c2, d2, a2, b2, x2[i2 + 7], 14, 1735328473); + b2 = md5gg(b2, c2, d2, a2, x2[i2 + 12], 20, -1926607734); + a2 = md5hh(a2, b2, c2, d2, x2[i2 + 5], 4, -378558); + d2 = md5hh(d2, a2, b2, c2, x2[i2 + 8], 11, -2022574463); + c2 = md5hh(c2, d2, a2, b2, x2[i2 + 11], 16, 1839030562); + b2 = md5hh(b2, c2, d2, a2, x2[i2 + 14], 23, -35309556); + a2 = md5hh(a2, b2, c2, d2, x2[i2 + 1], 4, -1530992060); + d2 = md5hh(d2, a2, b2, c2, x2[i2 + 4], 11, 1272893353); + c2 = md5hh(c2, d2, a2, b2, x2[i2 + 7], 16, -155497632); + b2 = md5hh(b2, c2, d2, a2, x2[i2 + 10], 23, -1094730640); + a2 = md5hh(a2, b2, c2, d2, x2[i2 + 13], 4, 681279174); + d2 = md5hh(d2, a2, b2, c2, x2[i2], 11, -358537222); + c2 = md5hh(c2, d2, a2, b2, x2[i2 + 3], 16, -722521979); + b2 = md5hh(b2, c2, d2, a2, x2[i2 + 6], 23, 76029189); + a2 = md5hh(a2, b2, c2, d2, x2[i2 + 9], 4, -640364487); + d2 = md5hh(d2, a2, b2, c2, x2[i2 + 12], 11, -421815835); + c2 = md5hh(c2, d2, a2, b2, x2[i2 + 15], 16, 530742520); + b2 = md5hh(b2, c2, d2, a2, x2[i2 + 2], 23, -995338651); + a2 = md5ii(a2, b2, c2, d2, x2[i2], 6, -198630844); + d2 = md5ii(d2, a2, b2, c2, x2[i2 + 7], 10, 1126891415); + c2 = md5ii(c2, d2, a2, b2, x2[i2 + 14], 15, -1416354905); + b2 = md5ii(b2, c2, d2, a2, x2[i2 + 5], 21, -57434055); + a2 = md5ii(a2, b2, c2, d2, x2[i2 + 12], 6, 1700485571); + d2 = md5ii(d2, a2, b2, c2, x2[i2 + 3], 10, -1894986606); + c2 = md5ii(c2, d2, a2, b2, x2[i2 + 10], 15, -1051523); + b2 = md5ii(b2, c2, d2, a2, x2[i2 + 1], 21, -2054922799); + a2 = md5ii(a2, b2, c2, d2, x2[i2 + 8], 6, 1873313359); + d2 = md5ii(d2, a2, b2, c2, x2[i2 + 15], 10, -30611744); + c2 = md5ii(c2, d2, a2, b2, x2[i2 + 6], 15, -1560198380); + b2 = md5ii(b2, c2, d2, a2, x2[i2 + 13], 21, 1309151649); + a2 = md5ii(a2, b2, c2, d2, x2[i2 + 4], 6, -145523070); + d2 = md5ii(d2, a2, b2, c2, x2[i2 + 11], 10, -1120210379); + c2 = md5ii(c2, d2, a2, b2, x2[i2 + 2], 15, 718787259); + b2 = md5ii(b2, c2, d2, a2, x2[i2 + 9], 21, -343485551); + a2 = safeAdd(a2, olda); + b2 = safeAdd(b2, oldb); + c2 = safeAdd(c2, oldc); + d2 = safeAdd(d2, oldd); + } + return [a2, b2, c2, d2]; + } + function bytesToWords(input) { + if (input.length === 0) { + return []; + } + const length8 = input.length * 8; + const output = new Uint32Array(getOutputLength(length8)); + for (let i2 = 0; i2 < length8; i2 += 8) { + output[i2 >> 5] |= (input[i2 / 8] & 255) << i2 % 32; + } + return output; + } + function safeAdd(x2, y2) { + const lsw = (x2 & 65535) + (y2 & 65535); + const msw = (x2 >> 16) + (y2 >> 16) + (lsw >> 16); + return msw << 16 | lsw & 65535; + } + function bitRotateLeft(num, cnt) { + return num << cnt | num >>> 32 - cnt; + } + function md5cmn(q2, a2, b2, x2, s2, t2) { + return safeAdd(bitRotateLeft(safeAdd(safeAdd(a2, q2), safeAdd(x2, t2)), s2), b2); + } + function md5ff(a2, b2, c2, d2, x2, s2, t2) { + return md5cmn(b2 & c2 | ~b2 & d2, a2, b2, x2, s2, t2); + } + function md5gg(a2, b2, c2, d2, x2, s2, t2) { + return md5cmn(b2 & d2 | c2 & ~d2, a2, b2, x2, s2, t2); + } + function md5hh(a2, b2, c2, d2, x2, s2, t2) { + return md5cmn(b2 ^ c2 ^ d2, a2, b2, x2, s2, t2); + } + function md5ii(a2, b2, c2, d2, x2, s2, t2) { + return md5cmn(c2 ^ (b2 | ~d2), a2, b2, x2, s2, t2); + } + var _default = md5; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/v3.js +var require_v3 = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/v3.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _v = _interopRequireDefault(require_v35()); + var _md = _interopRequireDefault(require_md5()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var v3 = (0, _v.default)("v3", 48, _md.default); + var _default = v3; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/native.js +var require_native = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/native.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); + var _default = { + randomUUID + }; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/v4.js +var require_v4 = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/v4.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _native = _interopRequireDefault(require_native()); + var _rng = _interopRequireDefault(require_rng()); + var _stringify = require_stringify(); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function v4(options, buf, offset3) { + if (_native.default.randomUUID && !buf && !options) { + return _native.default.randomUUID(); + } + options = options || {}; + const rnds = options.random || (options.rng || _rng.default)(); + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset3 = offset3 || 0; + for (let i2 = 0; i2 < 16; ++i2) { + buf[offset3 + i2] = rnds[i2]; + } + return buf; + } + return (0, _stringify.unsafeStringify)(rnds); + } + var _default = v4; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/sha1.js +var require_sha1 = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/sha1.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + function f2(s2, x2, y2, z2) { + switch (s2) { + case 0: + return x2 & y2 ^ ~x2 & z2; + case 1: + return x2 ^ y2 ^ z2; + case 2: + return x2 & y2 ^ x2 & z2 ^ y2 & z2; + case 3: + return x2 ^ y2 ^ z2; + } + } + function ROTL(x2, n2) { + return x2 << n2 | x2 >>> 32 - n2; + } + function sha1(bytes) { + const K2 = [1518500249, 1859775393, 2400959708, 3395469782]; + const H2 = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; + if (typeof bytes === "string") { + const msg = unescape(encodeURIComponent(bytes)); + bytes = []; + for (let i2 = 0; i2 < msg.length; ++i2) { + bytes.push(msg.charCodeAt(i2)); + } + } else if (!Array.isArray(bytes)) { + bytes = Array.prototype.slice.call(bytes); + } + bytes.push(128); + const l2 = bytes.length / 4 + 2; + const N2 = Math.ceil(l2 / 16); + const M2 = new Array(N2); + for (let i2 = 0; i2 < N2; ++i2) { + const arr = new Uint32Array(16); + for (let j2 = 0; j2 < 16; ++j2) { + arr[j2] = bytes[i2 * 64 + j2 * 4] << 24 | bytes[i2 * 64 + j2 * 4 + 1] << 16 | bytes[i2 * 64 + j2 * 4 + 2] << 8 | bytes[i2 * 64 + j2 * 4 + 3]; + } + M2[i2] = arr; + } + M2[N2 - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32); + M2[N2 - 1][14] = Math.floor(M2[N2 - 1][14]); + M2[N2 - 1][15] = (bytes.length - 1) * 8 & 4294967295; + for (let i2 = 0; i2 < N2; ++i2) { + const W2 = new Uint32Array(80); + for (let t2 = 0; t2 < 16; ++t2) { + W2[t2] = M2[i2][t2]; + } + for (let t2 = 16; t2 < 80; ++t2) { + W2[t2] = ROTL(W2[t2 - 3] ^ W2[t2 - 8] ^ W2[t2 - 14] ^ W2[t2 - 16], 1); + } + let a2 = H2[0]; + let b2 = H2[1]; + let c2 = H2[2]; + let d2 = H2[3]; + let e2 = H2[4]; + for (let t2 = 0; t2 < 80; ++t2) { + const s2 = Math.floor(t2 / 20); + const T2 = ROTL(a2, 5) + f2(s2, b2, c2, d2) + e2 + K2[s2] + W2[t2] >>> 0; + e2 = d2; + d2 = c2; + c2 = ROTL(b2, 30) >>> 0; + b2 = a2; + a2 = T2; + } + H2[0] = H2[0] + a2 >>> 0; + H2[1] = H2[1] + b2 >>> 0; + H2[2] = H2[2] + c2 >>> 0; + H2[3] = H2[3] + d2 >>> 0; + H2[4] = H2[4] + e2 >>> 0; + } + return [H2[0] >> 24 & 255, H2[0] >> 16 & 255, H2[0] >> 8 & 255, H2[0] & 255, H2[1] >> 24 & 255, H2[1] >> 16 & 255, H2[1] >> 8 & 255, H2[1] & 255, H2[2] >> 24 & 255, H2[2] >> 16 & 255, H2[2] >> 8 & 255, H2[2] & 255, H2[3] >> 24 & 255, H2[3] >> 16 & 255, H2[3] >> 8 & 255, H2[3] & 255, H2[4] >> 24 & 255, H2[4] >> 16 & 255, H2[4] >> 8 & 255, H2[4] & 255]; + } + var _default = sha1; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/v5.js +var require_v5 = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/v5.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _v = _interopRequireDefault(require_v35()); + var _sha = _interopRequireDefault(require_sha1()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + var v5 = (0, _v.default)("v5", 80, _sha.default); + var _default = v5; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/nil.js +var require_nil = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/nil.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _default = "00000000-0000-0000-0000-000000000000"; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/version.js +var require_version = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/version.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.default = void 0; + var _validate = _interopRequireDefault(require_validate()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function version(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError("Invalid UUID"); + } + return parseInt(uuid.slice(14, 15), 16); + } + var _default = version; + exports.default = _default; + } +}); + +// node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/index.js +var require_commonjs_browser = __commonJS({ + "node_modules/node-ical/node_modules/uuid/dist/commonjs-browser/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); + Object.defineProperty(exports, "NIL", { + enumerable: true, + get: function get() { + return _nil.default; + } + }); + Object.defineProperty(exports, "parse", { + enumerable: true, + get: function get() { + return _parse.default; + } + }); + Object.defineProperty(exports, "stringify", { + enumerable: true, + get: function get() { + return _stringify.default; + } + }); + Object.defineProperty(exports, "v1", { + enumerable: true, + get: function get() { + return _v.default; + } + }); + Object.defineProperty(exports, "v3", { + enumerable: true, + get: function get() { + return _v2.default; + } + }); + Object.defineProperty(exports, "v4", { + enumerable: true, + get: function get() { + return _v3.default; + } + }); + Object.defineProperty(exports, "v5", { + enumerable: true, + get: function get() { + return _v4.default; + } + }); + Object.defineProperty(exports, "validate", { + enumerable: true, + get: function get() { + return _validate.default; + } + }); + Object.defineProperty(exports, "version", { + enumerable: true, + get: function get() { + return _version.default; + } + }); + var _v = _interopRequireDefault(require_v1()); + var _v2 = _interopRequireDefault(require_v3()); + var _v3 = _interopRequireDefault(require_v4()); + var _v4 = _interopRequireDefault(require_v5()); + var _nil = _interopRequireDefault(require_nil()); + var _version = _interopRequireDefault(require_version()); + var _validate = _interopRequireDefault(require_validate()); + var _stringify = _interopRequireDefault(require_stringify()); + var _parse = _interopRequireDefault(require_parse()); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + } +}); + +// node_modules/rrule/dist/es5/rrule.js +var require_rrule = __commonJS({ + "node_modules/rrule/dist/es5/rrule.js"(exports, module2) { + (function webpackUniversalModuleDefinition(root, factory) { + if (typeof exports === "object" && typeof module2 === "object") + module2.exports = factory(); + else if (typeof define === "function" && define.amd) + define([], factory); + else if (typeof exports === "object") + exports["rrule"] = factory(); + else + root["rrule"] = factory(); + })(typeof self !== "undefined" ? self : exports, () => { + return ( + /******/ + (() => { + "use strict"; + var __webpack_require__ = {}; + (() => { + __webpack_require__.d = (exports2, definition) => { + for (var key in definition) { + if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports2, key)) { + Object.defineProperty(exports2, key, { enumerable: true, get: definition[key] }); + } + } + }; + })(); + (() => { + __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); + })(); + (() => { + __webpack_require__.r = (exports2) => { + if (typeof Symbol !== "undefined" && Symbol.toStringTag) { + Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" }); + } + Object.defineProperty(exports2, "__esModule", { value: true }); + }; + })(); + var __webpack_exports__ = {}; + __webpack_require__.r(__webpack_exports__); + __webpack_require__.d(__webpack_exports__, { + "ALL_WEEKDAYS": () => ( + /* reexport */ + ALL_WEEKDAYS + ), + "Frequency": () => ( + /* reexport */ + Frequency + ), + "RRule": () => ( + /* reexport */ + RRule + ), + "RRuleSet": () => ( + /* reexport */ + RRuleSet + ), + "Weekday": () => ( + /* reexport */ + Weekday + ), + "datetime": () => ( + /* reexport */ + datetime + ), + "rrulestr": () => ( + /* reexport */ + rrulestr + ) + }); + ; + var ALL_WEEKDAYS = [ + "MO", + "TU", + "WE", + "TH", + "FR", + "SA", + "SU" + ]; + var Weekday = ( + /** @class */ + function() { + function Weekday2(weekday, n2) { + if (n2 === 0) + throw new Error("Can't create weekday with n == 0"); + this.weekday = weekday; + this.n = n2; + } + Weekday2.fromStr = function(str) { + return new Weekday2(ALL_WEEKDAYS.indexOf(str)); + }; + Weekday2.prototype.nth = function(n2) { + return this.n === n2 ? this : new Weekday2(this.weekday, n2); + }; + Weekday2.prototype.equals = function(other) { + return this.weekday === other.weekday && this.n === other.n; + }; + Weekday2.prototype.toString = function() { + var s2 = ALL_WEEKDAYS[this.weekday]; + if (this.n) + s2 = (this.n > 0 ? "+" : "") + String(this.n) + s2; + return s2; + }; + Weekday2.prototype.getJsWeekday = function() { + return this.weekday === 6 ? 0 : this.weekday + 1; + }; + return Weekday2; + }() + ); + ; + var isPresent = function(value) { + return value !== null && value !== void 0; + }; + var isNumber2 = function(value) { + return typeof value === "number"; + }; + var isWeekdayStr = function(value) { + return typeof value === "string" && ALL_WEEKDAYS.includes(value); + }; + var isArray2 = Array.isArray; + var range3 = function(start, end) { + if (end === void 0) { + end = start; + } + if (arguments.length === 1) { + end = start; + start = 0; + } + var rang = []; + for (var i2 = start; i2 < end; i2++) + rang.push(i2); + return rang; + }; + var clone = function(array) { + return [].concat(array); + }; + var repeat = function(value, times) { + var i2 = 0; + var array = []; + if (isArray2(value)) { + for (; i2 < times; i2++) + array[i2] = [].concat(value); + } else { + for (; i2 < times; i2++) + array[i2] = value; + } + return array; + }; + var toArray = function(item) { + if (isArray2(item)) { + return item; + } + return [item]; + }; + function padStart(item, targetLength, padString) { + if (padString === void 0) { + padString = " "; + } + var str = String(item); + targetLength = targetLength >> 0; + if (str.length > targetLength) { + return String(str); + } + targetLength = targetLength - str.length; + if (targetLength > padString.length) { + padString += repeat(padString, targetLength / padString.length); + } + return padString.slice(0, targetLength) + String(str); + } + var split = function(str, sep, num) { + var splits = str.split(sep); + return num ? splits.slice(0, num).concat([splits.slice(num).join(sep)]) : splits; + }; + var pymod = function(a2, b2) { + var r2 = a2 % b2; + return r2 * b2 < 0 ? r2 + b2 : r2; + }; + var divmod = function(a2, b2) { + return { div: Math.floor(a2 / b2), mod: pymod(a2, b2) }; + }; + var empty3 = function(obj) { + return !isPresent(obj) || obj.length === 0; + }; + var notEmpty = function(obj) { + return !empty3(obj); + }; + var includes = function(arr, val) { + return notEmpty(arr) && arr.indexOf(val) !== -1; + }; + ; + var datetime = function(y2, m2, d2, h2, i2, s2) { + if (h2 === void 0) { + h2 = 0; + } + if (i2 === void 0) { + i2 = 0; + } + if (s2 === void 0) { + s2 = 0; + } + return new Date(Date.UTC(y2, m2 - 1, d2, h2, i2, s2)); + }; + var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + var ONE_DAY = 1e3 * 60 * 60 * 24; + var MAXYEAR = 9999; + var ORDINAL_BASE = datetime(1970, 1, 1); + var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5]; + var getYearDay = function(date2) { + var dateNoTime = new Date(date2.getUTCFullYear(), date2.getUTCMonth(), date2.getUTCDate()); + return Math.ceil((dateNoTime.valueOf() - new Date(date2.getUTCFullYear(), 0, 1).valueOf()) / ONE_DAY) + 1; + }; + var isLeapYear = function(year) { + return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; + }; + var isDate = function(value) { + return value instanceof Date; + }; + var isValidDate = function(value) { + return isDate(value) && !isNaN(value.getTime()); + }; + var tzOffset = function(date2) { + return date2.getTimezoneOffset() * 60 * 1e3; + }; + var daysBetween = function(date1, date2) { + var date1ms = date1.getTime(); + var date2ms = date2.getTime(); + var differencems = date1ms - date2ms; + return Math.round(differencems / ONE_DAY); + }; + var toOrdinal = function(date2) { + return daysBetween(date2, ORDINAL_BASE); + }; + var fromOrdinal = function(ordinal) { + return new Date(ORDINAL_BASE.getTime() + ordinal * ONE_DAY); + }; + var getMonthDays = function(date2) { + var month = date2.getUTCMonth(); + return month === 1 && isLeapYear(date2.getUTCFullYear()) ? 29 : MONTH_DAYS[month]; + }; + var getWeekday = function(date2) { + return PY_WEEKDAYS[date2.getUTCDay()]; + }; + var monthRange = function(year, month) { + var date2 = datetime(year, month + 1, 1); + return [getWeekday(date2), getMonthDays(date2)]; + }; + var combine = function(date2, time2) { + time2 = time2 || date2; + return new Date(Date.UTC(date2.getUTCFullYear(), date2.getUTCMonth(), date2.getUTCDate(), time2.getHours(), time2.getMinutes(), time2.getSeconds(), time2.getMilliseconds())); + }; + var dateutil_clone = function(date2) { + var dolly = new Date(date2.getTime()); + return dolly; + }; + var cloneDates = function(dates) { + var clones = []; + for (var i2 = 0; i2 < dates.length; i2++) { + clones.push(dateutil_clone(dates[i2])); + } + return clones; + }; + var sort = function(dates) { + dates.sort(function(a2, b2) { + return a2.getTime() - b2.getTime(); + }); + }; + var timeToUntilString = function(time2, utc) { + if (utc === void 0) { + utc = true; + } + var date2 = new Date(time2); + return [ + padStart(date2.getUTCFullYear().toString(), 4, "0"), + padStart(date2.getUTCMonth() + 1, 2, "0"), + padStart(date2.getUTCDate(), 2, "0"), + "T", + padStart(date2.getUTCHours(), 2, "0"), + padStart(date2.getUTCMinutes(), 2, "0"), + padStart(date2.getUTCSeconds(), 2, "0"), + utc ? "Z" : "" + ].join(""); + }; + var untilStringToDate = function(until) { + var re = /^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z?)?$/; + var bits = re.exec(until); + if (!bits) + throw new Error("Invalid UNTIL value: ".concat(until)); + return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0)); + }; + var dateTZtoISO8601 = function(date2, timeZone) { + var dateStr = date2.toLocaleString("sv-SE", { timeZone }); + return dateStr.replace(" ", "T") + "Z"; + }; + var dateInTimeZone = function(date2, timeZone) { + var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; + var dateInLocalTZ = new Date(dateTZtoISO8601(date2, localTimeZone)); + var dateInTargetTZ = new Date(dateTZtoISO8601(date2, timeZone !== null && timeZone !== void 0 ? timeZone : "UTC")); + var tzOffset2 = dateInTargetTZ.getTime() - dateInLocalTZ.getTime(); + return new Date(date2.getTime() - tzOffset2); + }; + ; + var IterResult = ( + /** @class */ + function() { + function IterResult2(method, args) { + this.minDate = null; + this.maxDate = null; + this._result = []; + this.total = 0; + this.method = method; + this.args = args; + if (method === "between") { + this.maxDate = args.inc ? args.before : new Date(args.before.getTime() - 1); + this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1); + } else if (method === "before") { + this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1); + } else if (method === "after") { + this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1); + } + } + IterResult2.prototype.accept = function(date2) { + ++this.total; + var tooEarly = this.minDate && date2 < this.minDate; + var tooLate = this.maxDate && date2 > this.maxDate; + if (this.method === "between") { + if (tooEarly) + return true; + if (tooLate) + return false; + } else if (this.method === "before") { + if (tooLate) + return false; + } else if (this.method === "after") { + if (tooEarly) + return true; + this.add(date2); + return false; + } + return this.add(date2); + }; + IterResult2.prototype.add = function(date2) { + this._result.push(date2); + return true; + }; + IterResult2.prototype.getValue = function() { + var res = this._result; + switch (this.method) { + case "all": + case "between": + return res; + case "before": + case "after": + default: + return res.length ? res[res.length - 1] : null; + } + }; + IterResult2.prototype.clone = function() { + return new IterResult2(this.method, this.args); + }; + return IterResult2; + }() + ); + const iterresult = IterResult; + ; + var extendStatics = function(d2, b2) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) { + d3.__proto__ = b3; + } || function(d3, b3) { + for (var p2 in b3) + if (Object.prototype.hasOwnProperty.call(b3, p2)) + d3[p2] = b3[p2]; + }; + return extendStatics(d2, b2); + }; + function __extends(d2, b2) { + if (typeof b2 !== "function" && b2 !== null) + throw new TypeError("Class extends value " + String(b2) + " is not a constructor or null"); + extendStatics(d2, b2); + function __() { + this.constructor = d2; + } + d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __()); + } + var __assign = function() { + __assign = Object.assign || function __assign2(t2) { + for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) { + s2 = arguments[i2]; + for (var p2 in s2) + if (Object.prototype.hasOwnProperty.call(s2, p2)) + t2[p2] = s2[p2]; + } + return t2; + }; + return __assign.apply(this, arguments); + }; + function __rest(s2, e2) { + var t2 = {}; + for (var p2 in s2) + if (Object.prototype.hasOwnProperty.call(s2, p2) && e2.indexOf(p2) < 0) + t2[p2] = s2[p2]; + if (s2 != null && typeof Object.getOwnPropertySymbols === "function") + for (var i2 = 0, p2 = Object.getOwnPropertySymbols(s2); i2 < p2.length; i2++) { + if (e2.indexOf(p2[i2]) < 0 && Object.prototype.propertyIsEnumerable.call(s2, p2[i2])) + t2[p2[i2]] = s2[p2[i2]]; + } + return t2; + } + function __decorate(decorators, target, key, desc) { + var c2 = arguments.length, r2 = c2 < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d2; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r2 = Reflect.decorate(decorators, target, key, desc); + else + for (var i2 = decorators.length - 1; i2 >= 0; i2--) + if (d2 = decorators[i2]) + r2 = (c2 < 3 ? d2(r2) : c2 > 3 ? d2(target, key, r2) : d2(target, key)) || r2; + return c2 > 3 && r2 && Object.defineProperty(target, key, r2), r2; + } + function __param(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; + } + function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") + return Reflect.metadata(metadataKey, metadataValue); + } + function __awaiter2(thisArg, _arguments, P2, generator) { + function adopt(value) { + return value instanceof P2 ? value : new P2(function(resolve) { + resolve(value); + }); + } + return new (P2 || (P2 = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + } + function __generator(thisArg, body) { + var _2 = { label: 0, sent: function() { + if (t2[0] & 1) + throw t2[1]; + return t2[1]; + }, trys: [], ops: [] }, f2, y2, t2, g2; + return g2 = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g2[Symbol.iterator] = function() { + return this; + }), g2; + function verb(n2) { + return function(v2) { + return step([n2, v2]); + }; + } + function step(op) { + if (f2) + throw new TypeError("Generator is already executing."); + while (_2) + try { + if (f2 = 1, y2 && (t2 = op[0] & 2 ? y2["return"] : op[0] ? y2["throw"] || ((t2 = y2["return"]) && t2.call(y2), 0) : y2.next) && !(t2 = t2.call(y2, op[1])).done) + return t2; + if (y2 = 0, t2) + op = [op[0] & 2, t2.value]; + switch (op[0]) { + case 0: + case 1: + t2 = op; + break; + case 4: + _2.label++; + return { value: op[1], done: false }; + case 5: + _2.label++; + y2 = op[1]; + op = [0]; + continue; + case 7: + op = _2.ops.pop(); + _2.trys.pop(); + continue; + default: + if (!(t2 = _2.trys, t2 = t2.length > 0 && t2[t2.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _2 = 0; + continue; + } + if (op[0] === 3 && (!t2 || op[1] > t2[0] && op[1] < t2[3])) { + _2.label = op[1]; + break; + } + if (op[0] === 6 && _2.label < t2[1]) { + _2.label = t2[1]; + t2 = op; + break; + } + if (t2 && _2.label < t2[2]) { + _2.label = t2[2]; + _2.ops.push(op); + break; + } + if (t2[2]) + _2.ops.pop(); + _2.trys.pop(); + continue; + } + op = body.call(thisArg, _2); + } catch (e2) { + op = [6, e2]; + y2 = 0; + } finally { + f2 = t2 = 0; + } + if (op[0] & 5) + throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } + } + var __createBinding = Object.create ? function(o2, m2, k2, k22) { + if (k22 === void 0) + k22 = k2; + var desc = Object.getOwnPropertyDescriptor(m2, k2); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k2]; + } }; + } + Object.defineProperty(o2, k22, desc); + } : function(o2, m2, k2, k22) { + if (k22 === void 0) + k22 = k2; + o2[k22] = m2[k2]; + }; + function __exportStar(m2, o2) { + for (var p2 in m2) + if (p2 !== "default" && !Object.prototype.hasOwnProperty.call(o2, p2)) + __createBinding(o2, m2, p2); + } + function __values(o2) { + var s2 = typeof Symbol === "function" && Symbol.iterator, m2 = s2 && o2[s2], i2 = 0; + if (m2) + return m2.call(o2); + if (o2 && typeof o2.length === "number") + return { + next: function() { + if (o2 && i2 >= o2.length) + o2 = void 0; + return { value: o2 && o2[i2++], done: !o2 }; + } + }; + throw new TypeError(s2 ? "Object is not iterable." : "Symbol.iterator is not defined."); + } + function __read(o2, n2) { + var m2 = typeof Symbol === "function" && o2[Symbol.iterator]; + if (!m2) + return o2; + var i2 = m2.call(o2), r2, ar = [], e2; + try { + while ((n2 === void 0 || n2-- > 0) && !(r2 = i2.next()).done) + ar.push(r2.value); + } catch (error) { + e2 = { error }; + } finally { + try { + if (r2 && !r2.done && (m2 = i2["return"])) + m2.call(i2); + } finally { + if (e2) + throw e2.error; + } + } + return ar; + } + function __spread() { + for (var ar = [], i2 = 0; i2 < arguments.length; i2++) + ar = ar.concat(__read(arguments[i2])); + return ar; + } + function __spreadArrays() { + for (var s2 = 0, i2 = 0, il = arguments.length; i2 < il; i2++) + s2 += arguments[i2].length; + for (var r2 = Array(s2), k2 = 0, i2 = 0; i2 < il; i2++) + for (var a2 = arguments[i2], j2 = 0, jl = a2.length; j2 < jl; j2++, k2++) + r2[k2] = a2[j2]; + return r2; + } + function __spreadArray(to, from2, pack) { + if (pack || arguments.length === 2) + for (var i2 = 0, l2 = from2.length, ar; i2 < l2; i2++) { + if (ar || !(i2 in from2)) { + if (!ar) + ar = Array.prototype.slice.call(from2, 0, i2); + ar[i2] = from2[i2]; + } + } + return to.concat(ar || Array.prototype.slice.call(from2)); + } + function __await(v2) { + return this instanceof __await ? (this.v = v2, this) : new __await(v2); + } + function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var g2 = generator.apply(thisArg, _arguments || []), i2, q2 = []; + return i2 = {}, verb("next"), verb("throw"), verb("return"), i2[Symbol.asyncIterator] = function() { + return this; + }, i2; + function verb(n2) { + if (g2[n2]) + i2[n2] = function(v2) { + return new Promise(function(a2, b2) { + q2.push([n2, v2, a2, b2]) > 1 || resume(n2, v2); + }); + }; + } + function resume(n2, v2) { + try { + step(g2[n2](v2)); + } catch (e2) { + settle(q2[0][3], e2); + } + } + function step(r2) { + r2.value instanceof __await ? Promise.resolve(r2.value.v).then(fulfill, reject) : settle(q2[0][2], r2); + } + function fulfill(value) { + resume("next", value); + } + function reject(value) { + resume("throw", value); + } + function settle(f2, v2) { + if (f2(v2), q2.shift(), q2.length) + resume(q2[0][0], q2[0][1]); + } + } + function __asyncDelegator(o2) { + var i2, p2; + return i2 = {}, verb("next"), verb("throw", function(e2) { + throw e2; + }), verb("return"), i2[Symbol.iterator] = function() { + return this; + }, i2; + function verb(n2, f2) { + i2[n2] = o2[n2] ? function(v2) { + return (p2 = !p2) ? { value: __await(o2[n2](v2)), done: n2 === "return" } : f2 ? f2(v2) : v2; + } : f2; + } + } + function __asyncValues(o2) { + if (!Symbol.asyncIterator) + throw new TypeError("Symbol.asyncIterator is not defined."); + var m2 = o2[Symbol.asyncIterator], i2; + return m2 ? m2.call(o2) : (o2 = typeof __values === "function" ? __values(o2) : o2[Symbol.iterator](), i2 = {}, verb("next"), verb("throw"), verb("return"), i2[Symbol.asyncIterator] = function() { + return this; + }, i2); + function verb(n2) { + i2[n2] = o2[n2] && function(v2) { + return new Promise(function(resolve, reject) { + v2 = o2[n2](v2), settle(resolve, reject, v2.done, v2.value); + }); + }; + } + function settle(resolve, reject, d2, v2) { + Promise.resolve(v2).then(function(v3) { + resolve({ value: v3, done: d2 }); + }, reject); + } + } + function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { + Object.defineProperty(cooked, "raw", { value: raw }); + } else { + cooked.raw = raw; + } + return cooked; + } + ; + var __setModuleDefault = Object.create ? function(o2, v2) { + Object.defineProperty(o2, "default", { enumerable: true, value: v2 }); + } : function(o2, v2) { + o2["default"] = v2; + }; + function __importStar(mod) { + if (mod && mod.__esModule) + return mod; + var result = {}; + if (mod != null) { + for (var k2 in mod) + if (k2 !== "default" && Object.prototype.hasOwnProperty.call(mod, k2)) + __createBinding(result, mod, k2); + } + __setModuleDefault(result, mod); + return result; + } + function __importDefault(mod) { + return mod && mod.__esModule ? mod : { default: mod }; + } + function __classPrivateFieldGet(receiver, state, kind, f2) { + if (kind === "a" && !f2) + throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver)) + throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f2 : kind === "a" ? f2.call(receiver) : f2 ? f2.value : state.get(receiver); + } + function __classPrivateFieldSet(receiver, state, value, kind, f2) { + if (kind === "m") + throw new TypeError("Private method is not writable"); + if (kind === "a" && !f2) + throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver)) + throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return kind === "a" ? f2.call(receiver, value) : f2 ? f2.value = value : state.set(receiver, value), value; + } + function __classPrivateFieldIn(state, receiver) { + if (receiver === null || typeof receiver !== "object" && typeof receiver !== "function") + throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); + } + ; + var CallbackIterResult = ( + /** @class */ + function(_super) { + __extends(CallbackIterResult2, _super); + function CallbackIterResult2(method, args, iterator) { + var _this = _super.call(this, method, args) || this; + _this.iterator = iterator; + return _this; + } + CallbackIterResult2.prototype.add = function(date2) { + if (this.iterator(date2, this._result.length)) { + this._result.push(date2); + return true; + } + return false; + }; + return CallbackIterResult2; + }(iterresult) + ); + const callbackiterresult = CallbackIterResult; + ; + var ENGLISH = { + dayNames: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + monthNames: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + tokens: { + SKIP: /^[ \r\n\t]+|^\.$/, + number: /^[1-9][0-9]*/, + numberAsText: /^(one|two|three)/i, + every: /^every/i, + "day(s)": /^days?/i, + "weekday(s)": /^weekdays?/i, + "week(s)": /^weeks?/i, + "hour(s)": /^hours?/i, + "minute(s)": /^minutes?/i, + "month(s)": /^months?/i, + "year(s)": /^years?/i, + on: /^(on|in)/i, + at: /^(at)/i, + the: /^the/i, + first: /^first/i, + second: /^second/i, + third: /^third/i, + nth: /^([1-9][0-9]*)(\.|th|nd|rd|st)/i, + last: /^last/i, + for: /^for/i, + "time(s)": /^times?/i, + until: /^(un)?til/i, + monday: /^mo(n(day)?)?/i, + tuesday: /^tu(e(s(day)?)?)?/i, + wednesday: /^we(d(n(esday)?)?)?/i, + thursday: /^th(u(r(sday)?)?)?/i, + friday: /^fr(i(day)?)?/i, + saturday: /^sa(t(urday)?)?/i, + sunday: /^su(n(day)?)?/i, + january: /^jan(uary)?/i, + february: /^feb(ruary)?/i, + march: /^mar(ch)?/i, + april: /^apr(il)?/i, + may: /^may/i, + june: /^june?/i, + july: /^july?/i, + august: /^aug(ust)?/i, + september: /^sep(t(ember)?)?/i, + october: /^oct(ober)?/i, + november: /^nov(ember)?/i, + december: /^dec(ember)?/i, + comma: /^(,\s*|(and|or)\s*)+/i + } + }; + const i18n = ENGLISH; + ; + var contains = function(arr, val) { + return arr.indexOf(val) !== -1; + }; + var defaultGetText = function(id) { + return id.toString(); + }; + var defaultDateFormatter = function(year, month, day) { + return "".concat(month, " ").concat(day, ", ").concat(year); + }; + var ToText = ( + /** @class */ + function() { + function ToText2(rrule, gettext, language, dateFormatter) { + if (gettext === void 0) { + gettext = defaultGetText; + } + if (language === void 0) { + language = i18n; + } + if (dateFormatter === void 0) { + dateFormatter = defaultDateFormatter; + } + this.text = []; + this.language = language || i18n; + this.gettext = gettext; + this.dateFormatter = dateFormatter; + this.rrule = rrule; + this.options = rrule.options; + this.origOptions = rrule.origOptions; + if (this.origOptions.bymonthday) { + var bymonthday = [].concat(this.options.bymonthday); + var bynmonthday = [].concat(this.options.bynmonthday); + bymonthday.sort(function(a2, b2) { + return a2 - b2; + }); + bynmonthday.sort(function(a2, b2) { + return b2 - a2; + }); + this.bymonthday = bymonthday.concat(bynmonthday); + if (!this.bymonthday.length) + this.bymonthday = null; + } + if (isPresent(this.origOptions.byweekday)) { + var byweekday = !isArray2(this.origOptions.byweekday) ? [this.origOptions.byweekday] : this.origOptions.byweekday; + var days = String(byweekday); + this.byweekday = { + allWeeks: byweekday.filter(function(weekday) { + return !weekday.n; + }), + someWeeks: byweekday.filter(function(weekday) { + return Boolean(weekday.n); + }), + isWeekdays: days.indexOf("MO") !== -1 && days.indexOf("TU") !== -1 && days.indexOf("WE") !== -1 && days.indexOf("TH") !== -1 && days.indexOf("FR") !== -1 && days.indexOf("SA") === -1 && days.indexOf("SU") === -1, + isEveryDay: days.indexOf("MO") !== -1 && days.indexOf("TU") !== -1 && days.indexOf("WE") !== -1 && days.indexOf("TH") !== -1 && days.indexOf("FR") !== -1 && days.indexOf("SA") !== -1 && days.indexOf("SU") !== -1 + }; + var sortWeekDays = function(a2, b2) { + return a2.weekday - b2.weekday; + }; + this.byweekday.allWeeks.sort(sortWeekDays); + this.byweekday.someWeeks.sort(sortWeekDays); + if (!this.byweekday.allWeeks.length) + this.byweekday.allWeeks = null; + if (!this.byweekday.someWeeks.length) + this.byweekday.someWeeks = null; + } else { + this.byweekday = null; + } + } + ToText2.isFullyConvertible = function(rrule) { + var canConvert = true; + if (!(rrule.options.freq in ToText2.IMPLEMENTED)) + return false; + if (rrule.origOptions.until && rrule.origOptions.count) + return false; + for (var key in rrule.origOptions) { + if (contains(["dtstart", "tzid", "wkst", "freq"], key)) + return true; + if (!contains(ToText2.IMPLEMENTED[rrule.options.freq], key)) + return false; + } + return canConvert; + }; + ToText2.prototype.isFullyConvertible = function() { + return ToText2.isFullyConvertible(this.rrule); + }; + ToText2.prototype.toString = function() { + var gettext = this.gettext; + if (!(this.options.freq in ToText2.IMPLEMENTED)) { + return gettext("RRule error: Unable to fully convert this rrule to text"); + } + this.text = [gettext("every")]; + this[RRule.FREQUENCIES[this.options.freq]](); + if (this.options.until) { + this.add(gettext("until")); + var until = this.options.until; + this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate())); + } else if (this.options.count) { + this.add(gettext("for")).add(this.options.count.toString()).add(this.plural(this.options.count) ? gettext("times") : gettext("time")); + } + if (!this.isFullyConvertible()) + this.add(gettext("(~ approximate)")); + return this.text.join(""); + }; + ToText2.prototype.HOURLY = function() { + var gettext = this.gettext; + if (this.options.interval !== 1) + this.add(this.options.interval.toString()); + this.add(this.plural(this.options.interval) ? gettext("hours") : gettext("hour")); + }; + ToText2.prototype.MINUTELY = function() { + var gettext = this.gettext; + if (this.options.interval !== 1) + this.add(this.options.interval.toString()); + this.add(this.plural(this.options.interval) ? gettext("minutes") : gettext("minute")); + }; + ToText2.prototype.DAILY = function() { + var gettext = this.gettext; + if (this.options.interval !== 1) + this.add(this.options.interval.toString()); + if (this.byweekday && this.byweekday.isWeekdays) { + this.add(this.plural(this.options.interval) ? gettext("weekdays") : gettext("weekday")); + } else { + this.add(this.plural(this.options.interval) ? gettext("days") : gettext("day")); + } + if (this.origOptions.bymonth) { + this.add(gettext("in")); + this._bymonth(); + } + if (this.bymonthday) { + this._bymonthday(); + } else if (this.byweekday) { + this._byweekday(); + } else if (this.origOptions.byhour) { + this._byhour(); + } + }; + ToText2.prototype.WEEKLY = function() { + var gettext = this.gettext; + if (this.options.interval !== 1) { + this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext("weeks") : gettext("week")); + } + if (this.byweekday && this.byweekday.isWeekdays) { + if (this.options.interval === 1) { + this.add(this.plural(this.options.interval) ? gettext("weekdays") : gettext("weekday")); + } else { + this.add(gettext("on")).add(gettext("weekdays")); + } + } else if (this.byweekday && this.byweekday.isEveryDay) { + this.add(this.plural(this.options.interval) ? gettext("days") : gettext("day")); + } else { + if (this.options.interval === 1) + this.add(gettext("week")); + if (this.origOptions.bymonth) { + this.add(gettext("in")); + this._bymonth(); + } + if (this.bymonthday) { + this._bymonthday(); + } else if (this.byweekday) { + this._byweekday(); + } + if (this.origOptions.byhour) { + this._byhour(); + } + } + }; + ToText2.prototype.MONTHLY = function() { + var gettext = this.gettext; + if (this.origOptions.bymonth) { + if (this.options.interval !== 1) { + this.add(this.options.interval.toString()).add(gettext("months")); + if (this.plural(this.options.interval)) + this.add(gettext("in")); + } else { + } + this._bymonth(); + } else { + if (this.options.interval !== 1) { + this.add(this.options.interval.toString()); + } + this.add(this.plural(this.options.interval) ? gettext("months") : gettext("month")); + } + if (this.bymonthday) { + this._bymonthday(); + } else if (this.byweekday && this.byweekday.isWeekdays) { + this.add(gettext("on")).add(gettext("weekdays")); + } else if (this.byweekday) { + this._byweekday(); + } + }; + ToText2.prototype.YEARLY = function() { + var gettext = this.gettext; + if (this.origOptions.bymonth) { + if (this.options.interval !== 1) { + this.add(this.options.interval.toString()); + this.add(gettext("years")); + } else { + } + this._bymonth(); + } else { + if (this.options.interval !== 1) { + this.add(this.options.interval.toString()); + } + this.add(this.plural(this.options.interval) ? gettext("years") : gettext("year")); + } + if (this.bymonthday) { + this._bymonthday(); + } else if (this.byweekday) { + this._byweekday(); + } + if (this.options.byyearday) { + this.add(gettext("on the")).add(this.list(this.options.byyearday, this.nth, gettext("and"))).add(gettext("day")); + } + if (this.options.byweekno) { + this.add(gettext("in")).add(this.plural(this.options.byweekno.length) ? gettext("weeks") : gettext("week")).add(this.list(this.options.byweekno, void 0, gettext("and"))); + } + }; + ToText2.prototype._bymonthday = function() { + var gettext = this.gettext; + if (this.byweekday && this.byweekday.allWeeks) { + this.add(gettext("on")).add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext("or"))).add(gettext("the")).add(this.list(this.bymonthday, this.nth, gettext("or"))); + } else { + this.add(gettext("on the")).add(this.list(this.bymonthday, this.nth, gettext("and"))); + } + }; + ToText2.prototype._byweekday = function() { + var gettext = this.gettext; + if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) { + this.add(gettext("on")).add(this.list(this.byweekday.allWeeks, this.weekdaytext)); + } + if (this.byweekday.someWeeks) { + if (this.byweekday.allWeeks) + this.add(gettext("and")); + this.add(gettext("on the")).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext("and"))); + } + }; + ToText2.prototype._byhour = function() { + var gettext = this.gettext; + this.add(gettext("at")).add(this.list(this.origOptions.byhour, void 0, gettext("and"))); + }; + ToText2.prototype._bymonth = function() { + this.add(this.list(this.options.bymonth, this.monthtext, this.gettext("and"))); + }; + ToText2.prototype.nth = function(n2) { + n2 = parseInt(n2.toString(), 10); + var nth; + var gettext = this.gettext; + if (n2 === -1) + return gettext("last"); + var npos = Math.abs(n2); + switch (npos) { + case 1: + case 21: + case 31: + nth = npos + gettext("st"); + break; + case 2: + case 22: + nth = npos + gettext("nd"); + break; + case 3: + case 23: + nth = npos + gettext("rd"); + break; + default: + nth = npos + gettext("th"); + } + return n2 < 0 ? nth + " " + gettext("last") : nth; + }; + ToText2.prototype.monthtext = function(m2) { + return this.language.monthNames[m2 - 1]; + }; + ToText2.prototype.weekdaytext = function(wday) { + var weekday = isNumber2(wday) ? (wday + 1) % 7 : wday.getJsWeekday(); + return (wday.n ? this.nth(wday.n) + " " : "") + this.language.dayNames[weekday]; + }; + ToText2.prototype.plural = function(n2) { + return n2 % 100 !== 1; + }; + ToText2.prototype.add = function(s2) { + this.text.push(" "); + this.text.push(s2); + return this; + }; + ToText2.prototype.list = function(arr, callback, finalDelim, delim) { + var _this = this; + if (delim === void 0) { + delim = ","; + } + if (!isArray2(arr)) { + arr = [arr]; + } + var delimJoin = function(array, delimiter, finalDelimiter) { + var list = ""; + for (var i2 = 0; i2 < array.length; i2++) { + if (i2 !== 0) { + if (i2 === array.length - 1) { + list += " " + finalDelimiter + " "; + } else { + list += delimiter + " "; + } + } + list += array[i2]; + } + return list; + }; + callback = callback || function(o2) { + return o2.toString(); + }; + var realCallback = function(arg) { + return callback && callback.call(_this, arg); + }; + if (finalDelim) { + return delimJoin(arr.map(realCallback), delim, finalDelim); + } else { + return arr.map(realCallback).join(delim + " "); + } + }; + return ToText2; + }() + ); + const totext = ToText; + ; + var Parser = ( + /** @class */ + function() { + function Parser2(rules) { + this.done = true; + this.rules = rules; + } + Parser2.prototype.start = function(text2) { + this.text = text2; + this.done = false; + return this.nextSymbol(); + }; + Parser2.prototype.isDone = function() { + return this.done && this.symbol === null; + }; + Parser2.prototype.nextSymbol = function() { + var best; + var bestSymbol; + this.symbol = null; + this.value = null; + do { + if (this.done) + return false; + var rule = void 0; + best = null; + for (var name_1 in this.rules) { + rule = this.rules[name_1]; + var match = rule.exec(this.text); + if (match) { + if (best === null || match[0].length > best[0].length) { + best = match; + bestSymbol = name_1; + } + } + } + if (best != null) { + this.text = this.text.substr(best[0].length); + if (this.text === "") + this.done = true; + } + if (best == null) { + this.done = true; + this.symbol = null; + this.value = null; + return; + } + } while (bestSymbol === "SKIP"); + this.symbol = bestSymbol; + this.value = best; + return true; + }; + Parser2.prototype.accept = function(name) { + if (this.symbol === name) { + if (this.value) { + var v2 = this.value; + this.nextSymbol(); + return v2; + } + this.nextSymbol(); + return true; + } + return false; + }; + Parser2.prototype.acceptNumber = function() { + return this.accept("number"); + }; + Parser2.prototype.expect = function(name) { + if (this.accept(name)) + return true; + throw new Error("expected " + name + " but found " + this.symbol); + }; + return Parser2; + }() + ); + function parseText(text2, language) { + if (language === void 0) { + language = i18n; + } + var options = {}; + var ttr = new Parser(language.tokens); + if (!ttr.start(text2)) + return null; + S2(); + return options; + function S2() { + ttr.expect("every"); + var n2 = ttr.acceptNumber(); + if (n2) + options.interval = parseInt(n2[0], 10); + if (ttr.isDone()) + throw new Error("Unexpected end"); + switch (ttr.symbol) { + case "day(s)": + options.freq = RRule.DAILY; + if (ttr.nextSymbol()) { + AT(); + F2(); + } + break; + case "weekday(s)": + options.freq = RRule.WEEKLY; + options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR]; + ttr.nextSymbol(); + AT(); + F2(); + break; + case "week(s)": + options.freq = RRule.WEEKLY; + if (ttr.nextSymbol()) { + ON(); + AT(); + F2(); + } + break; + case "hour(s)": + options.freq = RRule.HOURLY; + if (ttr.nextSymbol()) { + ON(); + F2(); + } + break; + case "minute(s)": + options.freq = RRule.MINUTELY; + if (ttr.nextSymbol()) { + ON(); + F2(); + } + break; + case "month(s)": + options.freq = RRule.MONTHLY; + if (ttr.nextSymbol()) { + ON(); + F2(); + } + break; + case "year(s)": + options.freq = RRule.YEARLY; + if (ttr.nextSymbol()) { + ON(); + F2(); + } + break; + case "monday": + case "tuesday": + case "wednesday": + case "thursday": + case "friday": + case "saturday": + case "sunday": + options.freq = RRule.WEEKLY; + var key = ttr.symbol.substr(0, 2).toUpperCase(); + options.byweekday = [RRule[key]]; + if (!ttr.nextSymbol()) + return; + while (ttr.accept("comma")) { + if (ttr.isDone()) + throw new Error("Unexpected end"); + var wkd = decodeWKD(); + if (!wkd) { + throw new Error("Unexpected symbol " + ttr.symbol + ", expected weekday"); + } + options.byweekday.push(RRule[wkd]); + ttr.nextSymbol(); + } + AT(); + MDAYs(); + F2(); + break; + case "january": + case "february": + case "march": + case "april": + case "may": + case "june": + case "july": + case "august": + case "september": + case "october": + case "november": + case "december": + options.freq = RRule.YEARLY; + options.bymonth = [decodeM()]; + if (!ttr.nextSymbol()) + return; + while (ttr.accept("comma")) { + if (ttr.isDone()) + throw new Error("Unexpected end"); + var m2 = decodeM(); + if (!m2) { + throw new Error("Unexpected symbol " + ttr.symbol + ", expected month"); + } + options.bymonth.push(m2); + ttr.nextSymbol(); + } + ON(); + F2(); + break; + default: + throw new Error("Unknown symbol"); + } + } + function ON() { + var on = ttr.accept("on"); + var the = ttr.accept("the"); + if (!(on || the)) + return; + do { + var nth = decodeNTH(); + var wkd = decodeWKD(); + var m2 = decodeM(); + if (nth) { + if (wkd) { + ttr.nextSymbol(); + if (!options.byweekday) + options.byweekday = []; + options.byweekday.push(RRule[wkd].nth(nth)); + } else { + if (!options.bymonthday) + options.bymonthday = []; + options.bymonthday.push(nth); + ttr.accept("day(s)"); + } + } else if (wkd) { + ttr.nextSymbol(); + if (!options.byweekday) + options.byweekday = []; + options.byweekday.push(RRule[wkd]); + } else if (ttr.symbol === "weekday(s)") { + ttr.nextSymbol(); + if (!options.byweekday) { + options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR]; + } + } else if (ttr.symbol === "week(s)") { + ttr.nextSymbol(); + var n2 = ttr.acceptNumber(); + if (!n2) { + throw new Error("Unexpected symbol " + ttr.symbol + ", expected week number"); + } + options.byweekno = [parseInt(n2[0], 10)]; + while (ttr.accept("comma")) { + n2 = ttr.acceptNumber(); + if (!n2) { + throw new Error("Unexpected symbol " + ttr.symbol + "; expected monthday"); + } + options.byweekno.push(parseInt(n2[0], 10)); + } + } else if (m2) { + ttr.nextSymbol(); + if (!options.bymonth) + options.bymonth = []; + options.bymonth.push(m2); + } else { + return; + } + } while (ttr.accept("comma") || ttr.accept("the") || ttr.accept("on")); + } + function AT() { + var at2 = ttr.accept("at"); + if (!at2) + return; + do { + var n2 = ttr.acceptNumber(); + if (!n2) { + throw new Error("Unexpected symbol " + ttr.symbol + ", expected hour"); + } + options.byhour = [parseInt(n2[0], 10)]; + while (ttr.accept("comma")) { + n2 = ttr.acceptNumber(); + if (!n2) { + throw new Error("Unexpected symbol " + ttr.symbol + "; expected hour"); + } + options.byhour.push(parseInt(n2[0], 10)); + } + } while (ttr.accept("comma") || ttr.accept("at")); + } + function decodeM() { + switch (ttr.symbol) { + case "january": + return 1; + case "february": + return 2; + case "march": + return 3; + case "april": + return 4; + case "may": + return 5; + case "june": + return 6; + case "july": + return 7; + case "august": + return 8; + case "september": + return 9; + case "october": + return 10; + case "november": + return 11; + case "december": + return 12; + default: + return false; + } + } + function decodeWKD() { + switch (ttr.symbol) { + case "monday": + case "tuesday": + case "wednesday": + case "thursday": + case "friday": + case "saturday": + case "sunday": + return ttr.symbol.substr(0, 2).toUpperCase(); + default: + return false; + } + } + function decodeNTH() { + switch (ttr.symbol) { + case "last": + ttr.nextSymbol(); + return -1; + case "first": + ttr.nextSymbol(); + return 1; + case "second": + ttr.nextSymbol(); + return ttr.accept("last") ? -2 : 2; + case "third": + ttr.nextSymbol(); + return ttr.accept("last") ? -3 : 3; + case "nth": + var v2 = parseInt(ttr.value[1], 10); + if (v2 < -366 || v2 > 366) + throw new Error("Nth out of range: " + v2); + ttr.nextSymbol(); + return ttr.accept("last") ? -v2 : v2; + default: + return false; + } + } + function MDAYs() { + ttr.accept("on"); + ttr.accept("the"); + var nth = decodeNTH(); + if (!nth) + return; + options.bymonthday = [nth]; + ttr.nextSymbol(); + while (ttr.accept("comma")) { + nth = decodeNTH(); + if (!nth) { + throw new Error("Unexpected symbol " + ttr.symbol + "; expected monthday"); + } + options.bymonthday.push(nth); + ttr.nextSymbol(); + } + } + function F2() { + if (ttr.symbol === "until") { + var date2 = Date.parse(ttr.text); + if (!date2) + throw new Error("Cannot parse until date:" + ttr.text); + options.until = new Date(date2); + } else if (ttr.accept("for")) { + options.count = parseInt(ttr.value[0], 10); + ttr.expect("number"); + } + } + } + ; + var Frequency; + (function(Frequency2) { + Frequency2[Frequency2["YEARLY"] = 0] = "YEARLY"; + Frequency2[Frequency2["MONTHLY"] = 1] = "MONTHLY"; + Frequency2[Frequency2["WEEKLY"] = 2] = "WEEKLY"; + Frequency2[Frequency2["DAILY"] = 3] = "DAILY"; + Frequency2[Frequency2["HOURLY"] = 4] = "HOURLY"; + Frequency2[Frequency2["MINUTELY"] = 5] = "MINUTELY"; + Frequency2[Frequency2["SECONDLY"] = 6] = "SECONDLY"; + })(Frequency || (Frequency = {})); + function freqIsDailyOrGreater(freq) { + return freq < Frequency.HOURLY; + } + ; + var fromText = function(text2, language) { + if (language === void 0) { + language = i18n; + } + return new RRule(parseText(text2, language) || void 0); + }; + var common = [ + "count", + "until", + "interval", + "byweekday", + "bymonthday", + "bymonth" + ]; + totext.IMPLEMENTED = []; + totext.IMPLEMENTED[Frequency.HOURLY] = common; + totext.IMPLEMENTED[Frequency.MINUTELY] = common; + totext.IMPLEMENTED[Frequency.DAILY] = ["byhour"].concat(common); + totext.IMPLEMENTED[Frequency.WEEKLY] = common; + totext.IMPLEMENTED[Frequency.MONTHLY] = common; + totext.IMPLEMENTED[Frequency.YEARLY] = ["byweekno", "byyearday"].concat(common); + var toText = function(rrule, gettext, language, dateFormatter) { + return new totext(rrule, gettext, language, dateFormatter).toString(); + }; + var isFullyConvertible = totext.isFullyConvertible; + ; + var Time = ( + /** @class */ + function() { + function Time2(hour, minute, second, millisecond) { + this.hour = hour; + this.minute = minute; + this.second = second; + this.millisecond = millisecond || 0; + } + Time2.prototype.getHours = function() { + return this.hour; + }; + Time2.prototype.getMinutes = function() { + return this.minute; + }; + Time2.prototype.getSeconds = function() { + return this.second; + }; + Time2.prototype.getMilliseconds = function() { + return this.millisecond; + }; + Time2.prototype.getTime = function() { + return (this.hour * 60 * 60 + this.minute * 60 + this.second) * 1e3 + this.millisecond; + }; + return Time2; + }() + ); + var DateTime = ( + /** @class */ + function(_super) { + __extends(DateTime2, _super); + function DateTime2(year, month, day, hour, minute, second, millisecond) { + var _this = _super.call(this, hour, minute, second, millisecond) || this; + _this.year = year; + _this.month = month; + _this.day = day; + return _this; + } + DateTime2.fromDate = function(date2) { + return new this(date2.getUTCFullYear(), date2.getUTCMonth() + 1, date2.getUTCDate(), date2.getUTCHours(), date2.getUTCMinutes(), date2.getUTCSeconds(), date2.valueOf() % 1e3); + }; + DateTime2.prototype.getWeekday = function() { + return getWeekday(new Date(this.getTime())); + }; + DateTime2.prototype.getTime = function() { + return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime(); + }; + DateTime2.prototype.getDay = function() { + return this.day; + }; + DateTime2.prototype.getMonth = function() { + return this.month; + }; + DateTime2.prototype.getYear = function() { + return this.year; + }; + DateTime2.prototype.addYears = function(years) { + this.year += years; + }; + DateTime2.prototype.addMonths = function(months) { + this.month += months; + if (this.month > 12) { + var yearDiv = Math.floor(this.month / 12); + var monthMod = pymod(this.month, 12); + this.month = monthMod; + this.year += yearDiv; + if (this.month === 0) { + this.month = 12; + --this.year; + } + } + }; + DateTime2.prototype.addWeekly = function(days, wkst) { + if (wkst > this.getWeekday()) { + this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7; + } else { + this.day += -(this.getWeekday() - wkst) + days * 7; + } + this.fixDay(); + }; + DateTime2.prototype.addDaily = function(days) { + this.day += days; + this.fixDay(); + }; + DateTime2.prototype.addHours = function(hours2, filtered, byhour) { + if (filtered) { + this.hour += Math.floor((23 - this.hour) / hours2) * hours2; + } + for (; ; ) { + this.hour += hours2; + var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod; + if (dayDiv) { + this.hour = hourMod; + this.addDaily(dayDiv); + } + if (empty3(byhour) || includes(byhour, this.hour)) + break; + } + }; + DateTime2.prototype.addMinutes = function(minutes2, filtered, byhour, byminute) { + if (filtered) { + this.minute += Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes2) * minutes2; + } + for (; ; ) { + this.minute += minutes2; + var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod; + if (hourDiv) { + this.minute = minuteMod; + this.addHours(hourDiv, false, byhour); + } + if ((empty3(byhour) || includes(byhour, this.hour)) && (empty3(byminute) || includes(byminute, this.minute))) { + break; + } + } + }; + DateTime2.prototype.addSeconds = function(seconds, filtered, byhour, byminute, bysecond) { + if (filtered) { + this.second += Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) / seconds) * seconds; + } + for (; ; ) { + this.second += seconds; + var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod; + if (minuteDiv) { + this.second = secondMod; + this.addMinutes(minuteDiv, false, byhour, byminute); + } + if ((empty3(byhour) || includes(byhour, this.hour)) && (empty3(byminute) || includes(byminute, this.minute)) && (empty3(bysecond) || includes(bysecond, this.second))) { + break; + } + } + }; + DateTime2.prototype.fixDay = function() { + if (this.day <= 28) { + return; + } + var daysinmonth = monthRange(this.year, this.month - 1)[1]; + if (this.day <= daysinmonth) { + return; + } + while (this.day > daysinmonth) { + this.day -= daysinmonth; + ++this.month; + if (this.month === 13) { + this.month = 1; + ++this.year; + if (this.year > MAXYEAR) { + return; + } + } + daysinmonth = monthRange(this.year, this.month - 1)[1]; + } + }; + DateTime2.prototype.add = function(options, filtered) { + var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond; + switch (freq) { + case Frequency.YEARLY: + return this.addYears(interval); + case Frequency.MONTHLY: + return this.addMonths(interval); + case Frequency.WEEKLY: + return this.addWeekly(interval, wkst); + case Frequency.DAILY: + return this.addDaily(interval); + case Frequency.HOURLY: + return this.addHours(interval, filtered, byhour); + case Frequency.MINUTELY: + return this.addMinutes(interval, filtered, byhour, byminute); + case Frequency.SECONDLY: + return this.addSeconds(interval, filtered, byhour, byminute, bysecond); + } + }; + return DateTime2; + }(Time) + ); + ; + function initializeOptions(options) { + var invalid = []; + var keys2 = Object.keys(options); + for (var _i = 0, keys_1 = keys2; _i < keys_1.length; _i++) { + var key = keys_1[_i]; + if (!includes(defaultKeys, key)) + invalid.push(key); + if (isDate(options[key]) && !isValidDate(options[key])) { + invalid.push(key); + } + } + if (invalid.length) { + throw new Error("Invalid options: " + invalid.join(", ")); + } + return __assign({}, options); + } + function parseOptions(options) { + var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options)); + if (isPresent(opts.byeaster)) + opts.freq = RRule.YEARLY; + if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) { + throw new Error("Invalid frequency: ".concat(opts.freq, " ").concat(options.freq)); + } + if (!opts.dtstart) + opts.dtstart = new Date((/* @__PURE__ */ new Date()).setMilliseconds(0)); + if (!isPresent(opts.wkst)) { + opts.wkst = RRule.MO.weekday; + } else if (isNumber2(opts.wkst)) { + } else { + opts.wkst = opts.wkst.weekday; + } + if (isPresent(opts.bysetpos)) { + if (isNumber2(opts.bysetpos)) + opts.bysetpos = [opts.bysetpos]; + for (var i2 = 0; i2 < opts.bysetpos.length; i2++) { + var v2 = opts.bysetpos[i2]; + if (v2 === 0 || !(v2 >= -366 && v2 <= 366)) { + throw new Error("bysetpos must be between 1 and 366, or between -366 and -1"); + } + } + } + if (!(Boolean(opts.byweekno) || notEmpty(opts.byweekno) || notEmpty(opts.byyearday) || Boolean(opts.bymonthday) || notEmpty(opts.bymonthday) || isPresent(opts.byweekday) || isPresent(opts.byeaster))) { + switch (opts.freq) { + case RRule.YEARLY: + if (!opts.bymonth) + opts.bymonth = opts.dtstart.getUTCMonth() + 1; + opts.bymonthday = opts.dtstart.getUTCDate(); + break; + case RRule.MONTHLY: + opts.bymonthday = opts.dtstart.getUTCDate(); + break; + case RRule.WEEKLY: + opts.byweekday = [getWeekday(opts.dtstart)]; + break; + } + } + if (isPresent(opts.bymonth) && !isArray2(opts.bymonth)) { + opts.bymonth = [opts.bymonth]; + } + if (isPresent(opts.byyearday) && !isArray2(opts.byyearday) && isNumber2(opts.byyearday)) { + opts.byyearday = [opts.byyearday]; + } + if (!isPresent(opts.bymonthday)) { + opts.bymonthday = []; + opts.bynmonthday = []; + } else if (isArray2(opts.bymonthday)) { + var bymonthday = []; + var bynmonthday = []; + for (var i2 = 0; i2 < opts.bymonthday.length; i2++) { + var v2 = opts.bymonthday[i2]; + if (v2 > 0) { + bymonthday.push(v2); + } else if (v2 < 0) { + bynmonthday.push(v2); + } + } + opts.bymonthday = bymonthday; + opts.bynmonthday = bynmonthday; + } else if (opts.bymonthday < 0) { + opts.bynmonthday = [opts.bymonthday]; + opts.bymonthday = []; + } else { + opts.bynmonthday = []; + opts.bymonthday = [opts.bymonthday]; + } + if (isPresent(opts.byweekno) && !isArray2(opts.byweekno)) { + opts.byweekno = [opts.byweekno]; + } + if (!isPresent(opts.byweekday)) { + opts.bynweekday = null; + } else if (isNumber2(opts.byweekday)) { + opts.byweekday = [opts.byweekday]; + opts.bynweekday = null; + } else if (isWeekdayStr(opts.byweekday)) { + opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday]; + opts.bynweekday = null; + } else if (opts.byweekday instanceof Weekday) { + if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) { + opts.byweekday = [opts.byweekday.weekday]; + opts.bynweekday = null; + } else { + opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]]; + opts.byweekday = null; + } + } else { + var byweekday = []; + var bynweekday = []; + for (var i2 = 0; i2 < opts.byweekday.length; i2++) { + var wday = opts.byweekday[i2]; + if (isNumber2(wday)) { + byweekday.push(wday); + continue; + } else if (isWeekdayStr(wday)) { + byweekday.push(Weekday.fromStr(wday).weekday); + continue; + } + if (!wday.n || opts.freq > RRule.MONTHLY) { + byweekday.push(wday.weekday); + } else { + bynweekday.push([wday.weekday, wday.n]); + } + } + opts.byweekday = notEmpty(byweekday) ? byweekday : null; + opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null; + } + if (!isPresent(opts.byhour)) { + opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null; + } else if (isNumber2(opts.byhour)) { + opts.byhour = [opts.byhour]; + } + if (!isPresent(opts.byminute)) { + opts.byminute = opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null; + } else if (isNumber2(opts.byminute)) { + opts.byminute = [opts.byminute]; + } + if (!isPresent(opts.bysecond)) { + opts.bysecond = opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null; + } else if (isNumber2(opts.bysecond)) { + opts.bysecond = [opts.bysecond]; + } + return { parsedOptions: opts }; + } + function buildTimeset(opts) { + var millisecondModulo = opts.dtstart.getTime() % 1e3; + if (!freqIsDailyOrGreater(opts.freq)) { + return []; + } + var timeset = []; + opts.byhour.forEach(function(hour) { + opts.byminute.forEach(function(minute) { + opts.bysecond.forEach(function(second) { + timeset.push(new Time(hour, minute, second, millisecondModulo)); + }); + }); + }); + return timeset; + } + ; + function parseString(rfcString) { + var options = rfcString.split("\n").map(parseLine).filter(function(x2) { + return x2 !== null; + }); + return __assign(__assign({}, options[0]), options[1]); + } + function parseDtstart(line) { + var options = {}; + var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\s]+)/i.exec(line); + if (!dtstartWithZone) { + return options; + } + var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2]; + if (tzid) { + options.tzid = tzid; + } + options.dtstart = untilStringToDate(dtstart); + return options; + } + function parseLine(rfcString) { + rfcString = rfcString.replace(/^\s+|\s+$/, ""); + if (!rfcString.length) + return null; + var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase()); + if (!header) { + return parseRrule(rfcString); + } + var key = header[1]; + switch (key.toUpperCase()) { + case "RRULE": + case "EXRULE": + return parseRrule(rfcString); + case "DTSTART": + return parseDtstart(rfcString); + default: + throw new Error("Unsupported RFC prop ".concat(key, " in ").concat(rfcString)); + } + } + function parseRrule(line) { + var strippedLine = line.replace(/^RRULE:/i, ""); + var options = parseDtstart(strippedLine); + var attrs = line.replace(/^(?:RRULE|EXRULE):/i, "").split(";"); + attrs.forEach(function(attr2) { + var _a = attr2.split("="), key = _a[0], value = _a[1]; + switch (key.toUpperCase()) { + case "FREQ": + options.freq = Frequency[value.toUpperCase()]; + break; + case "WKST": + options.wkst = Days[value.toUpperCase()]; + break; + case "COUNT": + case "INTERVAL": + case "BYSETPOS": + case "BYMONTH": + case "BYMONTHDAY": + case "BYYEARDAY": + case "BYWEEKNO": + case "BYHOUR": + case "BYMINUTE": + case "BYSECOND": + var num = parseNumber(value); + var optionKey = key.toLowerCase(); + options[optionKey] = num; + break; + case "BYWEEKDAY": + case "BYDAY": + options.byweekday = parseWeekday(value); + break; + case "DTSTART": + case "TZID": + var dtstart = parseDtstart(line); + options.tzid = dtstart.tzid; + options.dtstart = dtstart.dtstart; + break; + case "UNTIL": + options.until = untilStringToDate(value); + break; + case "BYEASTER": + options.byeaster = Number(value); + break; + default: + throw new Error("Unknown RRULE property '" + key + "'"); + } + }); + return options; + } + function parseNumber(value) { + if (value.indexOf(",") !== -1) { + var values = value.split(","); + return values.map(parseIndividualNumber); + } + return parseIndividualNumber(value); + } + function parseIndividualNumber(value) { + if (/^[+-]?\d+$/.test(value)) { + return Number(value); + } + return value; + } + function parseWeekday(value) { + var days = value.split(","); + return days.map(function(day) { + if (day.length === 2) { + return Days[day]; + } + var parts = day.match(/^([+-]?\d{1,2})([A-Z]{2})$/); + if (!parts || parts.length < 3) { + throw new SyntaxError("Invalid weekday string: ".concat(day)); + } + var n2 = Number(parts[1]); + var wdaypart = parts[2]; + var wday = Days[wdaypart].weekday; + return new Weekday(wday, n2); + }); + } + ; + var DateWithZone = ( + /** @class */ + function() { + function DateWithZone2(date2, tzid) { + if (isNaN(date2.getTime())) { + throw new RangeError("Invalid date passed to DateWithZone"); + } + this.date = date2; + this.tzid = tzid; + } + Object.defineProperty(DateWithZone2.prototype, "isUTC", { + get: function() { + return !this.tzid || this.tzid.toUpperCase() === "UTC"; + }, + enumerable: false, + configurable: true + }); + DateWithZone2.prototype.toString = function() { + var datestr = timeToUntilString(this.date.getTime(), this.isUTC); + if (!this.isUTC) { + return ";TZID=".concat(this.tzid, ":").concat(datestr); + } + return ":".concat(datestr); + }; + DateWithZone2.prototype.getTime = function() { + return this.date.getTime(); + }; + DateWithZone2.prototype.rezonedDate = function() { + if (this.isUTC) { + return this.date; + } + return dateInTimeZone(this.date, this.tzid); + }; + return DateWithZone2; + }() + ); + ; + function optionsToString(options) { + var rrule = []; + var dtstart = ""; + var keys2 = Object.keys(options); + var defaultKeys2 = Object.keys(DEFAULT_OPTIONS); + for (var i2 = 0; i2 < keys2.length; i2++) { + if (keys2[i2] === "tzid") + continue; + if (!includes(defaultKeys2, keys2[i2])) + continue; + var key = keys2[i2].toUpperCase(); + var value = options[keys2[i2]]; + var outValue = ""; + if (!isPresent(value) || isArray2(value) && !value.length) + continue; + switch (key) { + case "FREQ": + outValue = RRule.FREQUENCIES[options.freq]; + break; + case "WKST": + if (isNumber2(value)) { + outValue = new Weekday(value).toString(); + } else { + outValue = value.toString(); + } + break; + case "BYWEEKDAY": + key = "BYDAY"; + outValue = toArray(value).map(function(wday) { + if (wday instanceof Weekday) { + return wday; + } + if (isArray2(wday)) { + return new Weekday(wday[0], wday[1]); + } + return new Weekday(wday); + }).toString(); + break; + case "DTSTART": + dtstart = buildDtstart(value, options.tzid); + break; + case "UNTIL": + outValue = timeToUntilString(value, !options.tzid); + break; + default: + if (isArray2(value)) { + var strValues = []; + for (var j2 = 0; j2 < value.length; j2++) { + strValues[j2] = String(value[j2]); + } + outValue = strValues.toString(); + } else { + outValue = String(value); + } + } + if (outValue) { + rrule.push([key, outValue]); + } + } + var rules = rrule.map(function(_a) { + var key2 = _a[0], value2 = _a[1]; + return "".concat(key2, "=").concat(value2.toString()); + }).join(";"); + var ruleString = ""; + if (rules !== "") { + ruleString = "RRULE:".concat(rules); + } + return [dtstart, ruleString].filter(function(x2) { + return !!x2; + }).join("\n"); + } + function buildDtstart(dtstart, tzid) { + if (!dtstart) { + return ""; + } + return "DTSTART" + new DateWithZone(new Date(dtstart), tzid).toString(); + } + ; + function argsMatch(left, right) { + if (Array.isArray(left)) { + if (!Array.isArray(right)) + return false; + if (left.length !== right.length) + return false; + return left.every(function(date2, i2) { + return date2.getTime() === right[i2].getTime(); + }); + } + if (left instanceof Date) { + return right instanceof Date && left.getTime() === right.getTime(); + } + return left === right; + } + var Cache = ( + /** @class */ + function() { + function Cache2() { + this.all = false; + this.before = []; + this.after = []; + this.between = []; + } + Cache2.prototype._cacheAdd = function(what, value, args) { + if (value) { + value = value instanceof Date ? dateutil_clone(value) : cloneDates(value); + } + if (what === "all") { + this.all = value; + } else { + args._value = value; + this[what].push(args); + } + }; + Cache2.prototype._cacheGet = function(what, args) { + var cached = false; + var argsKeys = args ? Object.keys(args) : []; + var findCacheDiff = function(item2) { + for (var i3 = 0; i3 < argsKeys.length; i3++) { + var key = argsKeys[i3]; + if (!argsMatch(args[key], item2[key])) { + return true; + } + } + return false; + }; + var cachedObject = this[what]; + if (what === "all") { + cached = this.all; + } else if (isArray2(cachedObject)) { + for (var i2 = 0; i2 < cachedObject.length; i2++) { + var item = cachedObject[i2]; + if (argsKeys.length && findCacheDiff(item)) + continue; + cached = item._value; + break; + } + } + if (!cached && this.all) { + var iterResult = new iterresult(what, args); + for (var i2 = 0; i2 < this.all.length; i2++) { + if (!iterResult.accept(this.all[i2])) + break; + } + cached = iterResult.getValue(); + this._cacheAdd(what, cached, args); + } + return isArray2(cached) ? cloneDates(cached) : cached instanceof Date ? dateutil_clone(cached) : cached; + }; + return Cache2; + }() + ); + ; + var M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true); + var M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true); + var M28 = range3(1, 29); + var M29 = range3(1, 30); + var M30 = range3(1, 31); + var M31 = range3(1, 32); + var MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true); + var MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true); + var NM28 = range3(-28, 0); + var NM29 = range3(-29, 0); + var NM30 = range3(-30, 0); + var NM31 = range3(-31, 0); + var NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true); + var NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true); + var M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]; + var M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]; + var WDAYMASK = function() { + var wdaymask = []; + for (var i2 = 0; i2 < 55; i2++) + wdaymask = wdaymask.concat(range3(7)); + return wdaymask; + }(); + ; + function rebuildYear(year, options) { + var firstyday = datetime(year, 1, 1); + var yearlen = isLeapYear(year) ? 366 : 365; + var nextyearlen = isLeapYear(year + 1) ? 366 : 365; + var yearordinal = toOrdinal(firstyday); + var yearweekday = getWeekday(firstyday); + var result = __assign(__assign({ yearlen, nextyearlen, yearordinal, yearweekday }, baseYearMasks(year)), { wnomask: null }); + if (empty3(options.byweekno)) { + return result; + } + result.wnomask = repeat(0, yearlen + 7); + var firstwkst; + var wyearlen; + var no1wkst = firstwkst = pymod(7 - yearweekday + options.wkst, 7); + if (no1wkst >= 4) { + no1wkst = 0; + wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7); + } else { + wyearlen = yearlen - no1wkst; + } + var div = Math.floor(wyearlen / 7); + var mod = pymod(wyearlen, 7); + var numweeks = Math.floor(div + mod / 4); + for (var j2 = 0; j2 < options.byweekno.length; j2++) { + var n2 = options.byweekno[j2]; + if (n2 < 0) { + n2 += numweeks + 1; + } + if (!(n2 > 0 && n2 <= numweeks)) { + continue; + } + var i2 = void 0; + if (n2 > 1) { + i2 = no1wkst + (n2 - 1) * 7; + if (no1wkst !== firstwkst) { + i2 -= 7 - firstwkst; + } + } else { + i2 = no1wkst; + } + for (var k2 = 0; k2 < 7; k2++) { + result.wnomask[i2] = 1; + i2++; + if (result.wdaymask[i2] === options.wkst) + break; + } + } + if (includes(options.byweekno, 1)) { + var i2 = no1wkst + numweeks * 7; + if (no1wkst !== firstwkst) + i2 -= 7 - firstwkst; + if (i2 < yearlen) { + for (var j2 = 0; j2 < 7; j2++) { + result.wnomask[i2] = 1; + i2 += 1; + if (result.wdaymask[i2] === options.wkst) + break; + } + } + } + if (no1wkst) { + var lnumweeks = void 0; + if (!includes(options.byweekno, -1)) { + var lyearweekday = getWeekday(datetime(year - 1, 1, 1)); + var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7); + var lyearlen = isLeapYear(year - 1) ? 366 : 365; + var weekst = void 0; + if (lno1wkst >= 4) { + lno1wkst = 0; + weekst = lyearlen + pymod(lyearweekday - options.wkst, 7); + } else { + weekst = yearlen - no1wkst; + } + lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4); + } else { + lnumweeks = -1; + } + if (includes(options.byweekno, lnumweeks)) { + for (var i2 = 0; i2 < no1wkst; i2++) + result.wnomask[i2] = 1; + } + } + return result; + } + function baseYearMasks(year) { + var yearlen = isLeapYear(year) ? 366 : 365; + var firstyday = datetime(year, 1, 1); + var wday = getWeekday(firstyday); + if (yearlen === 365) { + return { + mmask: M365MASK, + mdaymask: MDAY365MASK, + nmdaymask: NMDAY365MASK, + wdaymask: WDAYMASK.slice(wday), + mrange: M365RANGE + }; + } + return { + mmask: M366MASK, + mdaymask: MDAY366MASK, + nmdaymask: NMDAY366MASK, + wdaymask: WDAYMASK.slice(wday), + mrange: M366RANGE + }; + } + ; + function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) { + var result = { + lastyear: year, + lastmonth: month, + nwdaymask: [] + }; + var ranges = []; + if (options.freq === RRule.YEARLY) { + if (empty3(options.bymonth)) { + ranges = [[0, yearlen]]; + } else { + for (var j2 = 0; j2 < options.bymonth.length; j2++) { + month = options.bymonth[j2]; + ranges.push(mrange.slice(month - 1, month + 1)); + } + } + } else if (options.freq === RRule.MONTHLY) { + ranges = [mrange.slice(month - 1, month + 1)]; + } + if (empty3(ranges)) { + return result; + } + result.nwdaymask = repeat(0, yearlen); + for (var j2 = 0; j2 < ranges.length; j2++) { + var rang = ranges[j2]; + var first = rang[0]; + var last5 = rang[1] - 1; + for (var k2 = 0; k2 < options.bynweekday.length; k2++) { + var i2 = void 0; + var _a = options.bynweekday[k2], wday = _a[0], n2 = _a[1]; + if (n2 < 0) { + i2 = last5 + (n2 + 1) * 7; + i2 -= pymod(wdaymask[i2] - wday, 7); + } else { + i2 = first + (n2 - 1) * 7; + i2 += pymod(7 - wdaymask[i2] + wday, 7); + } + if (first <= i2 && i2 <= last5) + result.nwdaymask[i2] = 1; + } + } + return result; + } + ; + function easter(y2, offset3) { + if (offset3 === void 0) { + offset3 = 0; + } + var a2 = y2 % 19; + var b2 = Math.floor(y2 / 100); + var c2 = y2 % 100; + var d2 = Math.floor(b2 / 4); + var e2 = b2 % 4; + var f2 = Math.floor((b2 + 8) / 25); + var g2 = Math.floor((b2 - f2 + 1) / 3); + var h2 = Math.floor(19 * a2 + b2 - d2 - g2 + 15) % 30; + var i2 = Math.floor(c2 / 4); + var k2 = c2 % 4; + var l2 = Math.floor(32 + 2 * e2 + 2 * i2 - h2 - k2) % 7; + var m2 = Math.floor((a2 + 11 * h2 + 22 * l2) / 451); + var month = Math.floor((h2 + l2 - 7 * m2 + 114) / 31); + var day = (h2 + l2 - 7 * m2 + 114) % 31 + 1; + var date2 = Date.UTC(y2, month - 1, day + offset3); + var yearStart = Date.UTC(y2, 0, 1); + return [Math.ceil((date2 - yearStart) / (1e3 * 60 * 60 * 24))]; + } + ; + var Iterinfo = ( + /** @class */ + function() { + function Iterinfo2(options) { + this.options = options; + } + Iterinfo2.prototype.rebuild = function(year, month) { + var options = this.options; + if (year !== this.lastyear) { + this.yearinfo = rebuildYear(year, options); + } + if (notEmpty(options.bynweekday) && (month !== this.lastmonth || year !== this.lastyear)) { + var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask; + this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options); + } + if (isPresent(options.byeaster)) { + this.eastermask = easter(year, options.byeaster); + } + }; + Object.defineProperty(Iterinfo2.prototype, "lastyear", { + get: function() { + return this.monthinfo ? this.monthinfo.lastyear : null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Iterinfo2.prototype, "lastmonth", { + get: function() { + return this.monthinfo ? this.monthinfo.lastmonth : null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Iterinfo2.prototype, "yearlen", { + get: function() { + return this.yearinfo.yearlen; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Iterinfo2.prototype, "yearordinal", { + get: function() { + return this.yearinfo.yearordinal; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Iterinfo2.prototype, "mrange", { + get: function() { + return this.yearinfo.mrange; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Iterinfo2.prototype, "wdaymask", { + get: function() { + return this.yearinfo.wdaymask; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Iterinfo2.prototype, "mmask", { + get: function() { + return this.yearinfo.mmask; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Iterinfo2.prototype, "wnomask", { + get: function() { + return this.yearinfo.wnomask; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Iterinfo2.prototype, "nwdaymask", { + get: function() { + return this.monthinfo ? this.monthinfo.nwdaymask : []; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Iterinfo2.prototype, "nextyearlen", { + get: function() { + return this.yearinfo.nextyearlen; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Iterinfo2.prototype, "mdaymask", { + get: function() { + return this.yearinfo.mdaymask; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Iterinfo2.prototype, "nmdaymask", { + get: function() { + return this.yearinfo.nmdaymask; + }, + enumerable: false, + configurable: true + }); + Iterinfo2.prototype.ydayset = function() { + return [range3(this.yearlen), 0, this.yearlen]; + }; + Iterinfo2.prototype.mdayset = function(_2, month) { + var start = this.mrange[month - 1]; + var end = this.mrange[month]; + var set2 = repeat(null, this.yearlen); + for (var i2 = start; i2 < end; i2++) + set2[i2] = i2; + return [set2, start, end]; + }; + Iterinfo2.prototype.wdayset = function(year, month, day) { + var set2 = repeat(null, this.yearlen + 7); + var i2 = toOrdinal(datetime(year, month, day)) - this.yearordinal; + var start = i2; + for (var j2 = 0; j2 < 7; j2++) { + set2[i2] = i2; + ++i2; + if (this.wdaymask[i2] === this.options.wkst) + break; + } + return [set2, start, i2]; + }; + Iterinfo2.prototype.ddayset = function(year, month, day) { + var set2 = repeat(null, this.yearlen); + var i2 = toOrdinal(datetime(year, month, day)) - this.yearordinal; + set2[i2] = i2; + return [set2, i2, i2 + 1]; + }; + Iterinfo2.prototype.htimeset = function(hour, _2, second, millisecond) { + var _this = this; + var set2 = []; + this.options.byminute.forEach(function(minute) { + set2 = set2.concat(_this.mtimeset(hour, minute, second, millisecond)); + }); + sort(set2); + return set2; + }; + Iterinfo2.prototype.mtimeset = function(hour, minute, _2, millisecond) { + var set2 = this.options.bysecond.map(function(second) { + return new Time(hour, minute, second, millisecond); + }); + sort(set2); + return set2; + }; + Iterinfo2.prototype.stimeset = function(hour, minute, second, millisecond) { + return [new Time(hour, minute, second, millisecond)]; + }; + Iterinfo2.prototype.getdayset = function(freq) { + switch (freq) { + case Frequency.YEARLY: + return this.ydayset.bind(this); + case Frequency.MONTHLY: + return this.mdayset.bind(this); + case Frequency.WEEKLY: + return this.wdayset.bind(this); + case Frequency.DAILY: + return this.ddayset.bind(this); + default: + return this.ddayset.bind(this); + } + }; + Iterinfo2.prototype.gettimeset = function(freq) { + switch (freq) { + case Frequency.HOURLY: + return this.htimeset.bind(this); + case Frequency.MINUTELY: + return this.mtimeset.bind(this); + case Frequency.SECONDLY: + return this.stimeset.bind(this); + } + }; + return Iterinfo2; + }() + ); + const iterinfo = Iterinfo; + ; + function buildPoslist(bysetpos, timeset, start, end, ii, dayset) { + var poslist = []; + for (var j2 = 0; j2 < bysetpos.length; j2++) { + var daypos = void 0; + var timepos = void 0; + var pos = bysetpos[j2]; + if (pos < 0) { + daypos = Math.floor(pos / timeset.length); + timepos = pymod(pos, timeset.length); + } else { + daypos = Math.floor((pos - 1) / timeset.length); + timepos = pymod(pos - 1, timeset.length); + } + var tmp = []; + for (var k2 = start; k2 < end; k2++) { + var val = dayset[k2]; + if (!isPresent(val)) + continue; + tmp.push(val); + } + var i2 = void 0; + if (daypos < 0) { + i2 = tmp.slice(daypos)[0]; + } else { + i2 = tmp[daypos]; + } + var time2 = timeset[timepos]; + var date2 = fromOrdinal(ii.yearordinal + i2); + var res = combine(date2, time2); + if (!includes(poslist, res)) + poslist.push(res); + } + sort(poslist); + return poslist; + } + ; + function iter(iterResult, options) { + var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos; + var count = options.count; + if (count === 0 || interval === 0) { + return emitResult(iterResult); + } + var counterDate = DateTime.fromDate(dtstart); + var ii = new iterinfo(options); + ii.rebuild(counterDate.year, counterDate.month); + var timeset = makeTimeset(ii, counterDate, options); + for (; ; ) { + var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2]; + var filtered = removeFilteredDays(dayset, start, end, ii, options); + if (notEmpty(bysetpos)) { + var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset); + for (var j2 = 0; j2 < poslist.length; j2++) { + var res = poslist[j2]; + if (until && res > until) { + return emitResult(iterResult); + } + if (res >= dtstart) { + var rezonedDate = rezoneIfNeeded(res, options); + if (!iterResult.accept(rezonedDate)) { + return emitResult(iterResult); + } + if (count) { + --count; + if (!count) { + return emitResult(iterResult); + } + } + } + } + } else { + for (var j2 = start; j2 < end; j2++) { + var currentDay = dayset[j2]; + if (!isPresent(currentDay)) { + continue; + } + var date2 = fromOrdinal(ii.yearordinal + currentDay); + for (var k2 = 0; k2 < timeset.length; k2++) { + var time2 = timeset[k2]; + var res = combine(date2, time2); + if (until && res > until) { + return emitResult(iterResult); + } + if (res >= dtstart) { + var rezonedDate = rezoneIfNeeded(res, options); + if (!iterResult.accept(rezonedDate)) { + return emitResult(iterResult); + } + if (count) { + --count; + if (!count) { + return emitResult(iterResult); + } + } + } + } + } + } + if (options.interval === 0) { + return emitResult(iterResult); + } + counterDate.add(options, filtered); + if (counterDate.year > MAXYEAR) { + return emitResult(iterResult); + } + if (!freqIsDailyOrGreater(freq)) { + timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0); + } + ii.rebuild(counterDate.year, counterDate.month); + } + } + function isFiltered(ii, currentDay, options) { + var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday; + return notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay]) || notEmpty(byweekno) && !ii.wnomask[currentDay] || notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay]) || notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay] || byeaster !== null && !includes(ii.eastermask, currentDay) || (notEmpty(bymonthday) || notEmpty(bynmonthday)) && !includes(bymonthday, ii.mdaymask[currentDay]) && !includes(bynmonthday, ii.nmdaymask[currentDay]) || notEmpty(byyearday) && (currentDay < ii.yearlen && !includes(byyearday, currentDay + 1) && !includes(byyearday, -ii.yearlen + currentDay) || currentDay >= ii.yearlen && !includes(byyearday, currentDay + 1 - ii.yearlen) && !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)); + } + function rezoneIfNeeded(date2, options) { + return new DateWithZone(date2, options.tzid).rezonedDate(); + } + function emitResult(iterResult) { + return iterResult.getValue(); + } + function removeFilteredDays(dayset, start, end, ii, options) { + var filtered = false; + for (var dayCounter = start; dayCounter < end; dayCounter++) { + var currentDay = dayset[dayCounter]; + filtered = isFiltered(ii, currentDay, options); + if (filtered) + dayset[currentDay] = null; + } + return filtered; + } + function makeTimeset(ii, counterDate, options) { + var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond; + if (freqIsDailyOrGreater(freq)) { + return buildTimeset(options); + } + if (freq >= RRule.HOURLY && notEmpty(byhour) && !includes(byhour, counterDate.hour) || freq >= RRule.MINUTELY && notEmpty(byminute) && !includes(byminute, counterDate.minute) || freq >= RRule.SECONDLY && notEmpty(bysecond) && !includes(bysecond, counterDate.second)) { + return []; + } + return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond); + } + ; + var Days = { + MO: new Weekday(0), + TU: new Weekday(1), + WE: new Weekday(2), + TH: new Weekday(3), + FR: new Weekday(4), + SA: new Weekday(5), + SU: new Weekday(6) + }; + var DEFAULT_OPTIONS = { + freq: Frequency.YEARLY, + dtstart: null, + interval: 1, + wkst: Days.MO, + count: null, + until: null, + tzid: null, + bysetpos: null, + bymonth: null, + bymonthday: null, + bynmonthday: null, + byyearday: null, + byweekno: null, + byweekday: null, + bynweekday: null, + byhour: null, + byminute: null, + bysecond: null, + byeaster: null + }; + var defaultKeys = Object.keys(DEFAULT_OPTIONS); + var RRule = ( + /** @class */ + function() { + function RRule2(options, noCache) { + if (options === void 0) { + options = {}; + } + if (noCache === void 0) { + noCache = false; + } + this._cache = noCache ? null : new Cache(); + this.origOptions = initializeOptions(options); + var parsedOptions = parseOptions(options).parsedOptions; + this.options = parsedOptions; + } + RRule2.parseText = function(text2, language) { + return parseText(text2, language); + }; + RRule2.fromText = function(text2, language) { + return fromText(text2, language); + }; + RRule2.fromString = function(str) { + return new RRule2(RRule2.parseString(str) || void 0); + }; + RRule2.prototype._iter = function(iterResult) { + return iter(iterResult, this.options); + }; + RRule2.prototype._cacheGet = function(what, args) { + if (!this._cache) + return false; + return this._cache._cacheGet(what, args); + }; + RRule2.prototype._cacheAdd = function(what, value, args) { + if (!this._cache) + return; + return this._cache._cacheAdd(what, value, args); + }; + RRule2.prototype.all = function(iterator) { + if (iterator) { + return this._iter(new callbackiterresult("all", {}, iterator)); + } + var result = this._cacheGet("all"); + if (result === false) { + result = this._iter(new iterresult("all", {})); + this._cacheAdd("all", result); + } + return result; + }; + RRule2.prototype.between = function(after, before, inc, iterator) { + if (inc === void 0) { + inc = false; + } + if (!isValidDate(after) || !isValidDate(before)) { + throw new Error("Invalid date passed in to RRule.between"); + } + var args = { + before, + after, + inc + }; + if (iterator) { + return this._iter(new callbackiterresult("between", args, iterator)); + } + var result = this._cacheGet("between", args); + if (result === false) { + result = this._iter(new iterresult("between", args)); + this._cacheAdd("between", result, args); + } + return result; + }; + RRule2.prototype.before = function(dt2, inc) { + if (inc === void 0) { + inc = false; + } + if (!isValidDate(dt2)) { + throw new Error("Invalid date passed in to RRule.before"); + } + var args = { dt: dt2, inc }; + var result = this._cacheGet("before", args); + if (result === false) { + result = this._iter(new iterresult("before", args)); + this._cacheAdd("before", result, args); + } + return result; + }; + RRule2.prototype.after = function(dt2, inc) { + if (inc === void 0) { + inc = false; + } + if (!isValidDate(dt2)) { + throw new Error("Invalid date passed in to RRule.after"); + } + var args = { dt: dt2, inc }; + var result = this._cacheGet("after", args); + if (result === false) { + result = this._iter(new iterresult("after", args)); + this._cacheAdd("after", result, args); + } + return result; + }; + RRule2.prototype.count = function() { + return this.all().length; + }; + RRule2.prototype.toString = function() { + return optionsToString(this.origOptions); + }; + RRule2.prototype.toText = function(gettext, language, dateFormatter) { + return toText(this, gettext, language, dateFormatter); + }; + RRule2.prototype.isFullyConvertibleToText = function() { + return isFullyConvertible(this); + }; + RRule2.prototype.clone = function() { + return new RRule2(this.origOptions); + }; + RRule2.FREQUENCIES = [ + "YEARLY", + "MONTHLY", + "WEEKLY", + "DAILY", + "HOURLY", + "MINUTELY", + "SECONDLY" + ]; + RRule2.YEARLY = Frequency.YEARLY; + RRule2.MONTHLY = Frequency.MONTHLY; + RRule2.WEEKLY = Frequency.WEEKLY; + RRule2.DAILY = Frequency.DAILY; + RRule2.HOURLY = Frequency.HOURLY; + RRule2.MINUTELY = Frequency.MINUTELY; + RRule2.SECONDLY = Frequency.SECONDLY; + RRule2.MO = Days.MO; + RRule2.TU = Days.TU; + RRule2.WE = Days.WE; + RRule2.TH = Days.TH; + RRule2.FR = Days.FR; + RRule2.SA = Days.SA; + RRule2.SU = Days.SU; + RRule2.parseString = parseString; + RRule2.optionsToString = optionsToString; + return RRule2; + }() + ); + ; + function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) { + var _exdateHash = {}; + var _accept = iterResult.accept; + function evalExdate(after, before) { + _exrule.forEach(function(rrule) { + rrule.between(after, before, true).forEach(function(date2) { + _exdateHash[Number(date2)] = true; + }); + }); + } + _exdate.forEach(function(date2) { + var zonedDate2 = new DateWithZone(date2, tzid).rezonedDate(); + _exdateHash[Number(zonedDate2)] = true; + }); + iterResult.accept = function(date2) { + var dt2 = Number(date2); + if (isNaN(dt2)) + return _accept.call(this, date2); + if (!_exdateHash[dt2]) { + evalExdate(new Date(dt2 - 1), new Date(dt2 + 1)); + if (!_exdateHash[dt2]) { + _exdateHash[dt2] = true; + return _accept.call(this, date2); + } + } + return true; + }; + if (iterResult.method === "between") { + evalExdate(iterResult.args.after, iterResult.args.before); + iterResult.accept = function(date2) { + var dt2 = Number(date2); + if (!_exdateHash[dt2]) { + _exdateHash[dt2] = true; + return _accept.call(this, date2); + } + return true; + }; + } + for (var i2 = 0; i2 < _rdate.length; i2++) { + var zonedDate = new DateWithZone(_rdate[i2], tzid).rezonedDate(); + if (!iterResult.accept(new Date(zonedDate.getTime()))) + break; + } + _rrule.forEach(function(rrule) { + iter(iterResult, rrule.options); + }); + var res = iterResult._result; + sort(res); + switch (iterResult.method) { + case "all": + case "between": + return res; + case "before": + return res.length && res[res.length - 1] || null; + case "after": + default: + return res.length && res[0] || null; + } + } + ; + var rrulestr_DEFAULT_OPTIONS = { + dtstart: null, + cache: false, + unfold: false, + forceset: false, + compatible: false, + tzid: null + }; + function parseInput(s2, options) { + var rrulevals = []; + var rdatevals = []; + var exrulevals = []; + var exdatevals = []; + var parsedDtstart = parseDtstart(s2); + var dtstart = parsedDtstart.dtstart; + var tzid = parsedDtstart.tzid; + var lines2 = splitIntoLines(s2, options.unfold); + lines2.forEach(function(line) { + var _a; + if (!line) + return; + var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value; + switch (name.toUpperCase()) { + case "RRULE": + if (parms.length) { + throw new Error("unsupported RRULE parm: ".concat(parms.join(","))); + } + rrulevals.push(parseString(line)); + break; + case "RDATE": + var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1]; + if (rdateTzid && !tzid) { + tzid = rdateTzid; + } + rdatevals = rdatevals.concat(parseRDate(value, parms)); + break; + case "EXRULE": + if (parms.length) { + throw new Error("unsupported EXRULE parm: ".concat(parms.join(","))); + } + exrulevals.push(parseString(value)); + break; + case "EXDATE": + exdatevals = exdatevals.concat(parseRDate(value, parms)); + break; + case "DTSTART": + break; + default: + throw new Error("unsupported property: " + name); + } + }); + return { + dtstart, + tzid, + rrulevals, + rdatevals, + exrulevals, + exdatevals + }; + } + function buildRule(s2, options) { + var _a = parseInput(s2, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid; + var noCache = options.cache === false; + if (options.compatible) { + options.forceset = true; + options.unfold = true; + } + if (options.forceset || rrulevals.length > 1 || rdatevals.length || exrulevals.length || exdatevals.length) { + var rset_1 = new RRuleSet(noCache); + rset_1.dtstart(dtstart); + rset_1.tzid(tzid || void 0); + rrulevals.forEach(function(val2) { + rset_1.rrule(new RRule(groomRruleOptions(val2, dtstart, tzid), noCache)); + }); + rdatevals.forEach(function(date2) { + rset_1.rdate(date2); + }); + exrulevals.forEach(function(val2) { + rset_1.exrule(new RRule(groomRruleOptions(val2, dtstart, tzid), noCache)); + }); + exdatevals.forEach(function(date2) { + rset_1.exdate(date2); + }); + if (options.compatible && options.dtstart) + rset_1.rdate(dtstart); + return rset_1; + } + var val = rrulevals[0] || {}; + return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache); + } + function rrulestr(s2, options) { + if (options === void 0) { + options = {}; + } + return buildRule(s2, rrulestr_initializeOptions(options)); + } + function groomRruleOptions(val, dtstart, tzid) { + return __assign(__assign({}, val), { dtstart, tzid }); + } + function rrulestr_initializeOptions(options) { + var invalid = []; + var keys2 = Object.keys(options); + var defaultKeys2 = Object.keys(rrulestr_DEFAULT_OPTIONS); + keys2.forEach(function(key) { + if (!includes(defaultKeys2, key)) + invalid.push(key); + }); + if (invalid.length) { + throw new Error("Invalid options: " + invalid.join(", ")); + } + return __assign(__assign({}, rrulestr_DEFAULT_OPTIONS), options); + } + function extractName(line) { + if (line.indexOf(":") === -1) { + return { + name: "RRULE", + value: line + }; + } + var _a = split(line, ":", 1), name = _a[0], value = _a[1]; + return { + name, + value + }; + } + function breakDownLine(line) { + var _a = extractName(line), name = _a.name, value = _a.value; + var parms = name.split(";"); + if (!parms) + throw new Error("empty property name"); + return { + name: parms[0].toUpperCase(), + parms: parms.slice(1), + value + }; + } + function splitIntoLines(s2, unfold) { + if (unfold === void 0) { + unfold = false; + } + s2 = s2 && s2.trim(); + if (!s2) + throw new Error("Invalid empty string"); + if (!unfold) { + return s2.split(/\s/); + } + var lines2 = s2.split("\n"); + var i2 = 0; + while (i2 < lines2.length) { + var line = lines2[i2] = lines2[i2].replace(/\s+$/g, ""); + if (!line) { + lines2.splice(i2, 1); + } else if (i2 > 0 && line[0] === " ") { + lines2[i2 - 1] += line.slice(1); + lines2.splice(i2, 1); + } else { + i2 += 1; + } + } + return lines2; + } + function validateDateParm(parms) { + parms.forEach(function(parm) { + if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) { + throw new Error("unsupported RDATE/EXDATE parm: " + parm); + } + }); + } + function parseRDate(rdateval, parms) { + validateDateParm(parms); + return rdateval.split(",").map(function(datestr) { + return untilStringToDate(datestr); + }); + } + ; + function createGetterSetter(fieldName) { + var _this = this; + return function(field) { + if (field !== void 0) { + _this["_".concat(fieldName)] = field; + } + if (_this["_".concat(fieldName)] !== void 0) { + return _this["_".concat(fieldName)]; + } + for (var i2 = 0; i2 < _this._rrule.length; i2++) { + var field_1 = _this._rrule[i2].origOptions[fieldName]; + if (field_1) { + return field_1; + } + } + }; + } + var RRuleSet = ( + /** @class */ + function(_super) { + __extends(RRuleSet2, _super); + function RRuleSet2(noCache) { + if (noCache === void 0) { + noCache = false; + } + var _this = _super.call(this, {}, noCache) || this; + _this.dtstart = createGetterSetter.apply(_this, ["dtstart"]); + _this.tzid = createGetterSetter.apply(_this, ["tzid"]); + _this._rrule = []; + _this._rdate = []; + _this._exrule = []; + _this._exdate = []; + return _this; + } + RRuleSet2.prototype._iter = function(iterResult) { + return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid()); + }; + RRuleSet2.prototype.rrule = function(rrule) { + _addRule(rrule, this._rrule); + }; + RRuleSet2.prototype.exrule = function(rrule) { + _addRule(rrule, this._exrule); + }; + RRuleSet2.prototype.rdate = function(date2) { + _addDate(date2, this._rdate); + }; + RRuleSet2.prototype.exdate = function(date2) { + _addDate(date2, this._exdate); + }; + RRuleSet2.prototype.rrules = function() { + return this._rrule.map(function(e2) { + return rrulestr(e2.toString()); + }); + }; + RRuleSet2.prototype.exrules = function() { + return this._exrule.map(function(e2) { + return rrulestr(e2.toString()); + }); + }; + RRuleSet2.prototype.rdates = function() { + return this._rdate.map(function(e2) { + return new Date(e2.getTime()); + }); + }; + RRuleSet2.prototype.exdates = function() { + return this._exdate.map(function(e2) { + return new Date(e2.getTime()); + }); + }; + RRuleSet2.prototype.valueOf = function() { + var result = []; + if (!this._rrule.length && this._dtstart) { + result = result.concat(optionsToString({ dtstart: this._dtstart })); + } + this._rrule.forEach(function(rrule) { + result = result.concat(rrule.toString().split("\n")); + }); + this._exrule.forEach(function(exrule) { + result = result.concat(exrule.toString().split("\n").map(function(line) { + return line.replace(/^RRULE:/, "EXRULE:"); + }).filter(function(line) { + return !/^DTSTART/.test(line); + })); + }); + if (this._rdate.length) { + result.push(rdatesToString("RDATE", this._rdate, this.tzid())); + } + if (this._exdate.length) { + result.push(rdatesToString("EXDATE", this._exdate, this.tzid())); + } + return result; + }; + RRuleSet2.prototype.toString = function() { + return this.valueOf().join("\n"); + }; + RRuleSet2.prototype.clone = function() { + var rrs = new RRuleSet2(!!this._cache); + this._rrule.forEach(function(rule) { + return rrs.rrule(rule.clone()); + }); + this._exrule.forEach(function(rule) { + return rrs.exrule(rule.clone()); + }); + this._rdate.forEach(function(date2) { + return rrs.rdate(new Date(date2.getTime())); + }); + this._exdate.forEach(function(date2) { + return rrs.exdate(new Date(date2.getTime())); + }); + return rrs; + }; + return RRuleSet2; + }(RRule) + ); + function _addRule(rrule, collection) { + if (!(rrule instanceof RRule)) { + throw new TypeError(String(rrule) + " is not RRule instance"); + } + if (!includes(collection.map(String), String(rrule))) { + collection.push(rrule); + } + } + function _addDate(date2, collection) { + if (!(date2 instanceof Date)) { + throw new TypeError(String(date2) + " is not Date instance"); + } + if (!includes(collection.map(Number), Number(date2))) { + collection.push(date2); + sort(collection); + } + } + function rdatesToString(param, rdates, tzid) { + var isUTC = !tzid || tzid.toUpperCase() === "UTC"; + var header = isUTC ? "".concat(param, ":") : "".concat(param, ";TZID=").concat(tzid, ":"); + var dateString = rdates.map(function(rdate) { + return timeToUntilString(rdate.valueOf(), isUTC); + }).join(","); + return "".concat(header).concat(dateString); + } + ; + return __webpack_exports__; + })() + ); + }); + } +}); + +// node_modules/node-ical/windowsZones.json +var require_windowsZones = __commonJS({ + "node_modules/node-ical/windowsZones.json"(exports, module2) { + module2.exports = { "Dateline Standard Time": { iana: ["Etc/GMT+12"] }, "UTC-11": { iana: ["Etc/GMT+11"] }, "Aleutian Standard Time": { iana: ["America/Adak"] }, "Hawaiian Standard Time": { iana: ["Pacific/Honolulu"] }, "Marquesas Standard Time": { iana: ["Pacific/Marquesas"] }, "Alaskan Standard Time": { iana: ["America/Anchorage"] }, "UTC-09": { iana: ["Etc/GMT+9"] }, "Pacific Standard Time (Mexico)": { iana: ["America/Tijuana"] }, "UTC-08": { iana: ["Etc/GMT+8"] }, "Pacific Standard Time": { iana: ["America/Los_Angeles"] }, "US Mountain Standard Time": { iana: ["America/Phoenix"] }, "Mountain Standard Time (Mexico)": { iana: ["America/Mazatlan"] }, "Mountain Standard Time": { iana: ["America/Denver"] }, "Yukon Standard Time": { iana: ["America/Whitehorse"] }, "Central America Standard Time": { iana: ["America/Guatemala"] }, "Central Standard Time": { iana: ["America/Chicago"] }, "Easter Island Standard Time": { iana: ["Pacific/Easter"] }, "Central Standard Time (Mexico)": { iana: ["America/Mexico_City"] }, "Canada Central Standard Time": { iana: ["America/Regina"] }, "SA Pacific Standard Time": { iana: ["America/Bogota"] }, "Eastern Standard Time (Mexico)": { iana: ["America/Cancun"] }, "Eastern Standard Time": { iana: ["America/New_York"] }, "Haiti Standard Time": { iana: ["America/Port-au-Prince"] }, "Cuba Standard Time": { iana: ["America/Havana"] }, "US Eastern Standard Time": { iana: ["America/Indianapolis"] }, "Turks And Caicos Standard Time": { iana: ["America/Grand_Turk"] }, "Paraguay Standard Time": { iana: ["America/Asuncion"] }, "Atlantic Standard Time": { iana: ["America/Halifax"] }, "Venezuela Standard Time": { iana: ["America/Caracas"] }, "Central Brazilian Standard Time": { iana: ["America/Cuiaba"] }, "SA Western Standard Time": { iana: ["America/La_Paz"] }, "Pacific SA Standard Time": { iana: ["America/Santiago"] }, "Newfoundland Standard Time": { iana: ["America/St_Johns"] }, "Tocantins Standard Time": { iana: ["America/Araguaina"] }, "E. South America Standard Time": { iana: ["America/Sao_Paulo"] }, "SA Eastern Standard Time": { iana: ["America/Cayenne"] }, "Argentina Standard Time": { iana: ["America/Buenos_Aires"] }, "Greenland Standard Time": { iana: ["America/Godthab"] }, "Montevideo Standard Time": { iana: ["America/Montevideo"] }, "Magallanes Standard Time": { iana: ["America/Punta_Arenas"] }, "Saint Pierre Standard Time": { iana: ["America/Miquelon"] }, "Bahia Standard Time": { iana: ["America/Bahia"] }, "UTC-02": { iana: ["Etc/GMT+2"] }, "Azores Standard Time": { iana: ["Atlantic/Azores"] }, "Cape Verde Standard Time": { iana: ["Atlantic/Cape_Verde"] }, UTC: { iana: ["Etc/UTC"] }, "GMT Standard Time": { iana: ["Europe/London"] }, "Greenwich Standard Time": { iana: ["Atlantic/Reykjavik"] }, "Sao Tome Standard Time": { iana: ["Africa/Sao_Tome"] }, "Morocco Standard Time": { iana: ["Africa/Casablanca"] }, "W. Europe Standard Time": { iana: ["Europe/Berlin"] }, "Central Europe Standard Time": { iana: ["Europe/Budapest"] }, "Romance Standard Time": { iana: ["Europe/Paris"] }, "Central European Standard Time": { iana: ["Europe/Warsaw"] }, "W. Central Africa Standard Time": { iana: ["Africa/Lagos"] }, "Jordan Standard Time": { iana: ["Asia/Amman"] }, "GTB Standard Time": { iana: ["Europe/Bucharest"] }, "Middle East Standard Time": { iana: ["Asia/Beirut"] }, "Egypt Standard Time": { iana: ["Africa/Cairo"] }, "E. Europe Standard Time": { iana: ["Europe/Chisinau"] }, "Syria Standard Time": { iana: ["Asia/Damascus"] }, "West Bank Standard Time": { iana: ["Asia/Hebron"] }, "South Africa Standard Time": { iana: ["Africa/Johannesburg"] }, "FLE Standard Time": { iana: ["Europe/Kiev"] }, "Israel Standard Time": { iana: ["Asia/Jerusalem"] }, "South Sudan Standard Time": { iana: ["Africa/Juba"] }, "Kaliningrad Standard Time": { iana: ["Europe/Kaliningrad"] }, "Sudan Standard Time": { iana: ["Africa/Khartoum"] }, "Libya Standard Time": { iana: ["Africa/Tripoli"] }, "Namibia Standard Time": { iana: ["Africa/Windhoek"] }, "Arabic Standard Time": { iana: ["Asia/Baghdad"] }, "Turkey Standard Time": { iana: ["Europe/Istanbul"] }, "Arab Standard Time": { iana: ["Asia/Riyadh"] }, "Belarus Standard Time": { iana: ["Europe/Minsk"] }, "Russian Standard Time": { iana: ["Europe/Moscow"] }, "E. Africa Standard Time": { iana: ["Africa/Nairobi"] }, "Iran Standard Time": { iana: ["Asia/Tehran"] }, "Arabian Standard Time": { iana: ["Asia/Dubai"] }, "Astrakhan Standard Time": { iana: ["Europe/Astrakhan"] }, "Azerbaijan Standard Time": { iana: ["Asia/Baku"] }, "Russia Time Zone 3": { iana: ["Europe/Samara"] }, "Mauritius Standard Time": { iana: ["Indian/Mauritius"] }, "Saratov Standard Time": { iana: ["Europe/Saratov"] }, "Georgian Standard Time": { iana: ["Asia/Tbilisi"] }, "Volgograd Standard Time": { iana: ["Europe/Volgograd"] }, "Caucasus Standard Time": { iana: ["Asia/Yerevan"] }, "Afghanistan Standard Time": { iana: ["Asia/Kabul"] }, "West Asia Standard Time": { iana: ["Asia/Tashkent"] }, "Ekaterinburg Standard Time": { iana: ["Asia/Yekaterinburg"] }, "Pakistan Standard Time": { iana: ["Asia/Karachi"] }, "Qyzylorda Standard Time": { iana: ["Asia/Qyzylorda"] }, "India Standard Time": { iana: ["Asia/Calcutta"] }, "Sri Lanka Standard Time": { iana: ["Asia/Colombo"] }, "Nepal Standard Time": { iana: ["Asia/Katmandu"] }, "Central Asia Standard Time": { iana: ["Asia/Almaty"] }, "Bangladesh Standard Time": { iana: ["Asia/Dhaka"] }, "Omsk Standard Time": { iana: ["Asia/Omsk"] }, "Myanmar Standard Time": { iana: ["Asia/Rangoon"] }, "SE Asia Standard Time": { iana: ["Asia/Bangkok"] }, "Altai Standard Time": { iana: ["Asia/Barnaul"] }, "W. Mongolia Standard Time": { iana: ["Asia/Hovd"] }, "North Asia Standard Time": { iana: ["Asia/Krasnoyarsk"] }, "N. Central Asia Standard Time": { iana: ["Asia/Novosibirsk"] }, "Tomsk Standard Time": { iana: ["Asia/Tomsk"] }, "China Standard Time": { iana: ["Asia/Shanghai"] }, "North Asia East Standard Time": { iana: ["Asia/Irkutsk"] }, "Singapore Standard Time": { iana: ["Asia/Singapore"] }, "W. Australia Standard Time": { iana: ["Australia/Perth"] }, "Taipei Standard Time": { iana: ["Asia/Taipei"] }, "Ulaanbaatar Standard Time": { iana: ["Asia/Ulaanbaatar"] }, "Aus Central W. Standard Time": { iana: ["Australia/Eucla"] }, "Transbaikal Standard Time": { iana: ["Asia/Chita"] }, "Tokyo Standard Time": { iana: ["Asia/Tokyo"] }, "North Korea Standard Time": { iana: ["Asia/Pyongyang"] }, "Korea Standard Time": { iana: ["Asia/Seoul"] }, "Yakutsk Standard Time": { iana: ["Asia/Yakutsk"] }, "Cen. Australia Standard Time": { iana: ["Australia/Adelaide"] }, "AUS Central Standard Time": { iana: ["Australia/Darwin"] }, "E. Australia Standard Time": { iana: ["Australia/Brisbane"] }, "AUS Eastern Standard Time": { iana: ["Australia/Sydney"] }, "West Pacific Standard Time": { iana: ["Pacific/Port_Moresby"] }, "Tasmania Standard Time": { iana: ["Australia/Hobart"] }, "Vladivostok Standard Time": { iana: ["Asia/Vladivostok"] }, "Lord Howe Standard Time": { iana: ["Australia/Lord_Howe"] }, "Bougainville Standard Time": { iana: ["Pacific/Bougainville"] }, "Russia Time Zone 10": { iana: ["Asia/Srednekolymsk"] }, "Magadan Standard Time": { iana: ["Asia/Magadan"] }, "Norfolk Standard Time": { iana: ["Pacific/Norfolk"] }, "Sakhalin Standard Time": { iana: ["Asia/Sakhalin"] }, "Central Pacific Standard Time": { iana: ["Pacific/Guadalcanal"] }, "Russia Time Zone 11": { iana: ["Asia/Kamchatka"] }, "New Zealand Standard Time": { iana: ["Pacific/Auckland"] }, "UTC+12": { iana: ["Etc/GMT-12"] }, "Fiji Standard Time": { iana: ["Pacific/Fiji"] }, "Chatham Islands Standard Time": { iana: ["Pacific/Chatham"] }, "UTC+13": { iana: ["Etc/GMT-13"] }, "Tonga Standard Time": { iana: ["Pacific/Tongatapu"] }, "Samoa Standard Time": { iana: ["Pacific/Apia"] }, "Line Islands Standard Time": { iana: ["Pacific/Kiritimati"] }, "(UTC-12:00) International Date Line West": { iana: ["Etc/GMT+12"] }, "(UTC-11:00) Midway Island, Samoa": { iana: ["Pacific/Apia"] }, "(UTC-10:00) Hawaii": { iana: ["Pacific/Honolulu"] }, "(UTC-09:00) Alaska": { iana: ["America/Anchorage"] }, "(UTC-08:00) Pacific Time (US & Canada); Tijuana": { iana: ["America/Los_Angeles"] }, "(UTC-08:00) Pacific Time (US and Canada); Tijuana": { iana: ["America/Los_Angeles"] }, "(UTC-07:00) Mountain Time (US & Canada)": { iana: ["America/Denver"] }, "(UTC-07:00) Mountain Time (US and Canada)": { iana: ["America/Denver"] }, "(UTC-07:00) Chihuahua, La Paz, Mazatlan": { iana: [null] }, "(UTC-07:00) Arizona": { iana: ["America/Phoenix"] }, "(UTC-06:00) Central Time (US & Canada)": { iana: ["America/Chicago"] }, "(UTC-06:00) Central Time (US and Canada)": { iana: ["America/Chicago"] }, "(UTC-06:00) Saskatchewan": { iana: ["America/Regina"] }, "(UTC-06:00) Guadalajara, Mexico City, Monterrey": { iana: [null] }, "(UTC-06:00) Central America": { iana: ["America/Guatemala"] }, "(UTC-05:00) Eastern Time (US & Canada)": { iana: ["America/New_York"] }, "(UTC-05:00) Eastern Time (US and Canada)": { iana: ["America/New_York"] }, "(UTC-05:00) Indiana (East)": { iana: ["America/Indianapolis"] }, "(UTC-05:00) Bogota, Lima, Quito": { iana: ["America/Bogota"] }, "(UTC-04:00) Atlantic Time (Canada)": { iana: ["America/Halifax"] }, "(UTC-04:00) Georgetown, La Paz, San Juan": { iana: ["America/La_Paz"] }, "(UTC-04:00) Santiago": { iana: ["America/Santiago"] }, "(UTC-03:30) Newfoundland": { iana: [null] }, "(UTC-03:00) Brasilia": { iana: ["America/Sao_Paulo"] }, "(UTC-03:00) Georgetown": { iana: ["America/Cayenne"] }, "(UTC-03:00) Greenland": { iana: ["America/Godthab"] }, "(UTC-02:00) Mid-Atlantic": { iana: [null] }, "(UTC-01:00) Azores": { iana: ["Atlantic/Azores"] }, "(UTC-01:00) Cape Verde Islands": { iana: ["Atlantic/Cape_Verde"] }, "(UTC) Greenwich Mean Time: Dublin, Edinburgh, Lisbon, London": { iana: [null] }, "(UTC) Monrovia, Reykjavik": { iana: ["Atlantic/Reykjavik"] }, "(UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague": { iana: ["Europe/Budapest"] }, "(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb": { iana: ["Europe/Warsaw"] }, "(UTC+01:00) Brussels, Copenhagen, Madrid, Paris": { iana: ["Europe/Paris"] }, "(UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna": { iana: ["Europe/Berlin"] }, "(UTC+01:00) West Central Africa": { iana: ["Africa/Lagos"] }, "(UTC+02:00) Minsk": { iana: ["Europe/Chisinau"] }, "(UTC+02:00) Cairo": { iana: ["Africa/Cairo"] }, "(UTC+02:00) Helsinki, Kiev, Riga, Sofia, Tallinn, Vilnius": { iana: ["Europe/Kiev"] }, "(UTC+02:00) Athens, Bucharest, Istanbul": { iana: ["Europe/Bucharest"] }, "(UTC+02:00) Jerusalem": { iana: ["Asia/Jerusalem"] }, "(UTC+02:00) Harare, Pretoria": { iana: ["Africa/Johannesburg"] }, "(UTC+03:00) Moscow, St. Petersburg, Volgograd": { iana: ["Europe/Moscow"] }, "(UTC+03:00) Kuwait, Riyadh": { iana: ["Asia/Riyadh"] }, "(UTC+03:00) Nairobi": { iana: ["Africa/Nairobi"] }, "(UTC+03:00) Baghdad": { iana: ["Asia/Baghdad"] }, "(UTC+03:30) Tehran": { iana: ["Asia/Tehran"] }, "(UTC+04:00) Abu Dhabi, Muscat": { iana: ["Asia/Dubai"] }, "(UTC+04:00) Baku, Tbilisi, Yerevan": { iana: ["Asia/Yerevan"] }, "(UTC+04:30) Kabul": { iana: [null] }, "(UTC+05:00) Ekaterinburg": { iana: ["Asia/Yekaterinburg"] }, "(UTC+05:00) Tashkent": { iana: ["Asia/Tashkent"] }, "(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi": { iana: ["Asia/Calcutta"] }, "(UTC+05:45) Kathmandu": { iana: ["Asia/Katmandu"] }, "(UTC+06:00) Astana, Dhaka": { iana: ["Asia/Almaty"] }, "(UTC+06:00) Sri Jayawardenepura": { iana: ["Asia/Colombo"] }, "(UTC+06:00) Almaty, Novosibirsk": { iana: ["Asia/Novosibirsk"] }, "(UTC+06:30) Yangon (Rangoon)": { iana: ["Asia/Rangoon"] }, "(UTC+07:00) Bangkok, Hanoi, Jakarta": { iana: ["Asia/Bangkok"] }, "(UTC+07:00) Krasnoyarsk": { iana: ["Asia/Krasnoyarsk"] }, "(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi": { iana: ["Asia/Shanghai"] }, "(UTC+08:00) Kuala Lumpur, Singapore": { iana: ["Asia/Singapore"] }, "(UTC+08:00) Taipei": { iana: ["Asia/Taipei"] }, "(UTC+08:00) Perth": { iana: ["Australia/Perth"] }, "(UTC+08:00) Irkutsk, Ulaanbaatar": { iana: ["Asia/Irkutsk"] }, "(UTC+09:00) Seoul": { iana: ["Asia/Seoul"] }, "(UTC+09:00) Osaka, Sapporo, Tokyo": { iana: ["Asia/Tokyo"] }, "(UTC+09:00) Yakutsk": { iana: ["Asia/Yakutsk"] }, "(UTC+09:30) Darwin": { iana: ["Australia/Darwin"] }, "(UTC+09:30) Adelaide": { iana: ["Australia/Adelaide"] }, "(UTC+10:00) Canberra, Melbourne, Sydney": { iana: ["Australia/Sydney"] }, "(GMT+10:00) Canberra, Melbourne, Sydney": { iana: ["Australia/Sydney"] }, "(UTC+10:00) Brisbane": { iana: ["Australia/Brisbane"] }, "(UTC+10:00) Hobart": { iana: ["Australia/Hobart"] }, "(UTC+10:00) Vladivostok": { iana: ["Asia/Vladivostok"] }, "(UTC+10:00) Guam, Port Moresby": { iana: ["Pacific/Port_Moresby"] }, "(UTC+11:00) Magadan, Solomon Islands, New Caledonia": { iana: ["Pacific/Guadalcanal"] }, "(UTC+12:00) Fiji, Kamchatka, Marshall Is.": { iana: [null] }, "(UTC+12:00) Auckland, Wellington": { iana: ["Pacific/Auckland"] }, "(UTC+13:00) Nuku'alofa": { iana: ["Pacific/Tongatapu"] }, "(UTC-03:00) Buenos Aires": { iana: ["America/Buenos_Aires"] }, "(UTC+02:00) Beirut": { iana: ["Asia/Beirut"] }, "(UTC+02:00) Amman": { iana: ["Asia/Amman"] }, "(UTC-06:00) Guadalajara, Mexico City, Monterrey - New": { iana: ["America/Mexico_City"] }, "(UTC-07:00) Chihuahua, La Paz, Mazatlan - New": { iana: ["America/Mazatlan"] }, "(UTC-08:00) Tijuana, Baja California": { iana: ["America/Tijuana"] }, "(UTC+02:00) Windhoek": { iana: ["Africa/Windhoek"] }, "(UTC+03:00) Tbilisi": { iana: ["Asia/Tbilisi"] }, "(UTC-04:00) Manaus": { iana: ["America/Cuiaba"] }, "(UTC-03:00) Montevideo": { iana: ["America/Montevideo"] }, "(UTC+04:00) Yerevan": { iana: [null] }, "(UTC-04:30) Caracas": { iana: ["America/Caracas"] }, "(UTC) Casablanca": { iana: ["Africa/Casablanca"] }, "(UTC+05:00) Islamabad, Karachi": { iana: ["Asia/Karachi"] }, "(UTC+04:00) Port Louis": { iana: ["Indian/Mauritius"] }, "(UTC) Coordinated Universal Time": { iana: ["Etc/UTC"] }, "(UTC-04:00) Asuncion": { iana: ["America/Asuncion"] }, "(UTC+12:00) Petropavlovsk-Kamchatsky": { iana: [null] } }; + } +}); + +// node_modules/node-ical/ical.js +var require_ical = __commonJS({ + "node_modules/node-ical/ical.js"(exports, module2) { + var { v4: uuid } = require_commonjs_browser(); + var moment3 = require_moment_timezone2(); + var rrule = require_rrule().RRule; + var text2 = function(t2 = "") { + return t2.replace(/\\,/g, ",").replace(/\\;/g, ";").replace(/\\[nN]/g, "\n").replace(/\\\\/g, "\\"); + }; + var parseValue = function(value) { + if (value === "TRUE") { + return true; + } + if (value === "FALSE") { + return false; + } + const number = Number(value); + if (!Number.isNaN(number)) { + return number; + } + return value; + }; + var parseParameters = function(p2) { + const out = {}; + for (const element2 of p2) { + if (element2.includes("=")) { + const segs = element2.split("="); + out[segs[0]] = parseValue(segs.slice(1).join("=")); + } + } + return out; + }; + var storeValueParameter = function(name) { + return function(value, curr) { + const current2 = curr[name]; + if (Array.isArray(current2)) { + current2.push(value); + return curr; + } + if (typeof current2 === "undefined") { + curr[name] = value; + } else { + curr[name] = [current2, value]; + } + return curr; + }; + }; + var storeParameter = function(name) { + return function(value, parameters, curr) { + const data = parameters && parameters.length > 0 && !(parameters.length === 1 && (parameters[0] === "CHARSET=utf-8" || parameters[0] === "VALUE=TEXT")) ? { params: parseParameters(parameters), val: text2(value) } : text2(value); + return storeValueParameter(name)(data, curr); + }; + }; + var addTZ = function(dt2, parameters) { + const p2 = parseParameters(parameters); + if (dt2.tz) { + return dt2; + } + if (parameters && p2 && dt2) { + dt2.tz = p2.TZID; + if (dt2.tz !== void 0) { + dt2.tz = dt2.tz.replace(/^"(.*)"$/, "$1"); + } + } + return dt2; + }; + var zoneTable = null; + function getIanaTZFromMS(msTZName) { + if (!zoneTable) { + zoneTable = require_windowsZones(); + } + let he = zoneTable[msTZName]; + if (!he && msTZName.includes(",")) { + const firstLocationName = msTZName.split(",")[0]; + const temporaryLookup = Object.keys(zoneTable).filter((tzEntry) => { + if (tzEntry.includes(firstLocationName)) { + return true; + } + return false; + }); + if (temporaryLookup.length > 0) { + he = zoneTable[temporaryLookup[0]]; + } + } + return he ? he.iana[0] : null; + } + function getTimeZone(value) { + let tz2 = value; + let found = ""; + if (tz2 === "tzone://Microsoft/Custom" || tz2.startsWith("Customized Time Zone") || tz2.startsWith("tzone://Microsoft/")) { + tz2 = moment3.tz.guess(); + } + tz2 = tz2.replace(/^"(.*)"$/, "$1"); + if (tz2 && (tz2.includes(" ") || tz2.includes(","))) { + const tz1 = getIanaTZFromMS(tz2); + if (tz1) { + tz2 = tz1; + } + } + if (tz2 && tz2.startsWith("(")) { + const regex = /[+|-]\d*:\d*/; + tz2 = null; + found = tz2.match(regex); + } + if (found === "") { + found = moment3.tz.names().find((zone) => { + return zone === tz2; + }); + } + return found === "" ? tz2 : found; + } + function isDateOnly(value, parameters) { + const dateOnly = parameters && parameters.includes("VALUE=DATE") && !parameters.includes("VALUE=DATE-TIME") || /^\d{8}$/.test(value) === true; + return dateOnly; + } + var typeParameter = function(name) { + return function(value, parameters, curr) { + const returnValue = isDateOnly(value, parameters) ? "date" : "date-time"; + return storeValueParameter(name)(returnValue, curr); + }; + }; + var dateParameter = function(name) { + return function(value, parameters, curr, stack) { + const pi = parameters.indexOf("TZID=tzone"); + if (pi >= 0) { + parameters[pi] = parameters[pi] + ":" + value.split(":")[0]; + value = value.split(":")[1]; + } + let newDate = text2(value); + if (isDateOnly(value, parameters)) { + const comps2 = /^(\d{4})(\d{2})(\d{2}).*$/.exec(value); + if (comps2 !== null) { + newDate = new Date(comps2[1], Number.parseInt(comps2[2], 10) - 1, comps2[3]); + newDate.dateOnly = true; + return storeValueParameter(name)(newDate, curr); + } + } + const comps = /^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(Z)?$/.exec(value); + if (comps !== null) { + if (comps[7] === "Z") { + newDate = new Date( + Date.UTC( + Number.parseInt(comps[1], 10), + Number.parseInt(comps[2], 10) - 1, + Number.parseInt(comps[3], 10), + Number.parseInt(comps[4], 10), + Number.parseInt(comps[5], 10), + Number.parseInt(comps[6], 10) + ) + ); + newDate.tz = "Etc/UTC"; + } else if (parameters && parameters[0] && parameters[0].includes("TZID=") && parameters[0].split("=")[1]) { + let tz2 = parameters[0].split("=")[1]; + let found = ""; + let offset3 = ""; + if (tz2 === "tzone://Microsoft/Custom" || tz2 === "(no TZ description)" || tz2.startsWith("Customized Time Zone") || tz2.startsWith("tzone://Microsoft/")) { + tz2 = moment3.tz.guess(); + parameters[0] = "TZID=" + tz2; + } + tz2 = tz2.replace(/^"(.*)"$/, "$1"); + if (tz2 && (tz2.includes(" ") || tz2.includes(","))) { + const tz1 = getTimeZone(tz2); + if (tz1) { + tz2 = tz1; + offset3 = ""; + parameters[0] = "TZID=" + tz2; + } + } + if (tz2 && tz2.startsWith("(")) { + const regex = /[+|-]\d*:\d*/; + offset3 = tz2.match(regex); + tz2 = null; + found = offset3; + } + if (found === "") { + found = moment3.tz.names().find((zone) => { + return zone === tz2; + }); + } + newDate = found ? moment3.tz(value, "YYYYMMDDTHHmmss" + offset3, tz2).toDate() : new Date( + Number.parseInt(comps[1], 10), + Number.parseInt(comps[2], 10) - 1, + Number.parseInt(comps[3], 10), + Number.parseInt(comps[4], 10), + Number.parseInt(comps[5], 10), + Number.parseInt(comps[6], 10) + ); + newDate = addTZ(newDate, parameters); + } else { + const stackItemWithTimeZone = (stack || []).find((item) => { + return Object.values(item).find((subItem) => subItem.type === "VTIMEZONE"); + }) || {}; + const vTimezone = Object.values(stackItemWithTimeZone).find(({ type }) => type === "VTIMEZONE"); + newDate = vTimezone && moment3.tz.zone(vTimezone.tzid) ? moment3.tz(value, "YYYYMMDDTHHmmss", vTimezone.tzid).toDate() : new Date( + Number.parseInt(comps[1], 10), + Number.parseInt(comps[2], 10) - 1, + Number.parseInt(comps[3], 10), + Number.parseInt(comps[4], 10), + Number.parseInt(comps[5], 10), + Number.parseInt(comps[6], 10) + ); + } + } + return storeValueParameter(name)(newDate, curr); + }; + }; + var geoParameter = function(name) { + return function(value, parameters, curr) { + storeParameter(value, parameters, curr); + const parts = value.split(";"); + curr[name] = { lat: Number(parts[0]), lon: Number(parts[1]) }; + return curr; + }; + }; + var categoriesParameter = function(name) { + const separatorPattern = /\s*,\s*/g; + return function(value, parameters, curr) { + storeParameter(value, parameters, curr); + if (curr[name] === void 0) { + curr[name] = value ? value.split(separatorPattern) : []; + } else if (value) { + curr[name] = curr[name].concat(value.split(separatorPattern)); + } + return curr; + }; + }; + var exdateParameter = function(name) { + return function(value, parameters, curr) { + const separatorPattern = /\s*,\s*/g; + curr[name] = curr[name] || []; + const dates = value ? value.split(separatorPattern) : []; + for (const entry of dates) { + const exdate = []; + dateParameter(name)(entry, parameters, exdate); + if (exdate[name]) { + if (typeof exdate[name].toISOString === "function") { + curr[name][exdate[name].toISOString().slice(0, 10)] = exdate[name]; + } else { + throw new TypeError("No toISOString function in exdate[name]", exdate[name]); + } + } + } + return curr; + }; + }; + var recurrenceParameter = function(name) { + return dateParameter(name); + }; + var addFBType = function(fb, parameters) { + const p2 = parseParameters(parameters); + if (parameters && p2) { + fb.type = p2.FBTYPE || "BUSY"; + } + return fb; + }; + var freebusyParameter = function(name) { + return function(value, parameters, curr) { + const fb = addFBType({}, parameters); + curr[name] = curr[name] || []; + curr[name].push(fb); + storeParameter(value, parameters, fb); + const parts = value.split("/"); + for (const [index, name2] of ["start", "end"].entries()) { + dateParameter(name2)(parts[index], parameters, fb); + } + return curr; + }; + }; + module2.exports = { + objectHandlers: { + BEGIN(component, parameters, curr, stack) { + stack.push(curr); + return { type: component, params: parameters }; + }, + END(value, parameters, curr, stack) { + const originalEnd = function(component, parameters_, curr2, stack2) { + if (component === "VCALENDAR") { + let key; + let object; + const highLevel = {}; + for (key in curr2) { + if (!{}.hasOwnProperty.call(curr2, key)) { + continue; + } + object = curr2[key]; + if (typeof object === "string") { + highLevel[key] = object; + delete curr2[key]; + } + } + if (highLevel.type) { + curr2[highLevel.type.toLowerCase()] = highLevel; + } + return curr2; + } + const par = stack2.pop(); + if (!curr2.end) { + if (curr2.datetype === "date-time") { + curr2.end = new Date(curr2.start.getTime()); + } else if (curr2.duration === void 0) { + curr2.end = moment3.utc(curr2.start).add(1, "days").toDate(); + } else { + const durationUnits = { + // Y: 'years', + // M: 'months', + W: "weeks", + D: "days", + H: "hours", + M: "minutes", + S: "seconds" + }; + const r2 = curr2.duration.match(/-?\d+[YMWDHS]/g); + let newend = moment3.utc(curr2.start); + const indicator = curr2.duration.startsWith("-") ? -1 : 1; + for (const d2 of r2) { + newend = newend.add(Number.parseInt(d2, 10) * indicator, durationUnits[d2.slice(-1)]); + } + curr2.end = newend.toDate(); + } + } + if (curr2.uid) { + if (par[curr2.uid] === void 0) { + par[curr2.uid] = curr2; + if (par.method) { + par[curr2.uid].method = par.method; + } + } else if (curr2.recurrenceid === void 0) { + let key; + for (key in curr2) { + if (key !== null) { + par[curr2.uid][key] = curr2[key]; + } + } + } + if (typeof curr2.recurrenceid !== "undefined") { + const recurrenceObject = {}; + let key; + for (key in curr2) { + if (key !== null) { + recurrenceObject[key] = curr2[key]; + } + } + if (typeof recurrenceObject.recurrences !== "undefined") { + delete recurrenceObject.recurrences; + } + if (par[curr2.uid].recurrences === void 0) { + par[curr2.uid].recurrences = {}; + } + if (typeof curr2.recurrenceid.toISOString === "function") { + par[curr2.uid].recurrences[curr2.recurrenceid.toISOString().slice(0, 10)] = recurrenceObject; + } else { + throw new TypeError("No toISOString function in curr.recurrenceid", curr2.recurrenceid); + } + } + if (typeof par[curr2.uid].rrule !== "undefined" && typeof par[curr2.uid].recurrenceid !== "undefined") { + delete par[curr2.uid].recurrenceid; + } + } else { + const id = uuid(); + par[id] = curr2; + if (par.method) { + par[id].method = par.method; + } + } + return par; + }; + if ((value === "VEVENT" || value === "VTODO" || value === "VJOURNAL") && curr.rrule) { + let rule = curr.rrule.replace("RRULE:", ""); + rule = rule.slice(rule.lastIndexOf("FREQ=")); + if (rule.includes("DTSTART") === false) { + let x2 = moment3(curr.start).format("MMMM/Do/YYYY, h:mm:ss a"); + if (x2.slice(-11) === "12:00:00 am") { + const offset3 = curr.start.getTimezoneOffset(); + if (offset3 < 0) { + curr.start = new Date(curr.start.getTime() + Math.abs(offset3) * 6e4); + } else { + x2 = moment3(curr.start).format("MMMM/Do/YYYY"); + const comps = /^(\d{2})\/(\d{2})\/(\d{4})/.exec(x2); + if (comps) { + curr.start = new Date(comps[3], comps[1] - 1, comps[2]); + } + } + } + if (curr.start && typeof curr.start.toISOString === "function") { + try { + if (curr.start.tz) { + const tz2 = getTimeZone(curr.start.tz); + rule += `;DTSTART;TZID=${tz2}:${curr.start.toISOString().replace(/[-:]/g, "")}`; + } else { + rule += `;DTSTART=${curr.start.toISOString().replace(/[-:]/g, "")}`; + } + rule = rule.replace(/\.\d{3}/, ""); + } catch (error) { + throw new Error("ERROR when trying to convert to ISOString", error); + } + } else { + throw new Error("No toISOString function in curr.start", curr.start); + } + } + try { + curr.rrule = rrule.fromString(rule); + } catch (error) { + throw error; + } + } + return originalEnd.call(this, value, parameters, curr, stack); + }, + SUMMARY: storeParameter("summary"), + DESCRIPTION: storeParameter("description"), + URL: storeParameter("url"), + UID: storeParameter("uid"), + LOCATION: storeParameter("location"), + DTSTART(value, parameters, curr, stack) { + curr = dateParameter("start")(value, parameters, curr, stack); + return typeParameter("datetype")(value, parameters, curr); + }, + DTEND: dateParameter("end"), + EXDATE: exdateParameter("exdate"), + " CLASS": storeParameter("class"), + // Should there be a space in this property? + TRANSP: storeParameter("transparency"), + GEO: geoParameter("geo"), + "PERCENT-COMPLETE": storeParameter("completion"), + COMPLETED: dateParameter("completed"), + CATEGORIES: categoriesParameter("categories"), + FREEBUSY: freebusyParameter("freebusy"), + DTSTAMP: dateParameter("dtstamp"), + CREATED: dateParameter("created"), + "LAST-MODIFIED": dateParameter("lastmodified"), + "RECURRENCE-ID": recurrenceParameter("recurrenceid"), + RRULE(value, parameters, curr, stack, line) { + curr.rrule = line; + return curr; + } + }, + handleObject(name, value, parameters, ctx, stack, line) { + if (this.objectHandlers[name]) { + return this.objectHandlers[name](value, parameters, ctx, stack, line); + } + if (/X-[\w-]+/.test(name) && stack.length > 0) { + name = name.slice(2); + return storeParameter(name)(value, parameters, ctx, stack, line); + } + return storeParameter(name.toLowerCase())(value, parameters, ctx); + }, + parseLines(lines2, limit, ctx, stack, lastIndex, cb) { + if (!cb && typeof ctx === "function") { + cb = ctx; + ctx = void 0; + } + ctx = ctx || {}; + stack = stack || []; + let limitCounter = 0; + let i2 = lastIndex || 0; + for (let ii = lines2.length; i2 < ii; i2++) { + let l2 = lines2[i2]; + while (lines2[i2 + 1] && /[ \t]/.test(lines2[i2 + 1][0])) { + l2 += lines2[i2 + 1].slice(1); + i2++; + } + if (l2.indexOf("TZID=") && !l2.includes('"(')) { + l2 = l2.replace(/"/g, ""); + } + const exp = /^([\w\d-]+)((?:;[\w\d-]+=(?:(?:"[^"]*")|[^":;]+))*):(.*)$/; + let kv = l2.match(exp); + if (kv === null) { + continue; + } + kv = kv.slice(1); + const value = kv[kv.length - 1]; + const name = kv[0]; + const parameters = kv[1] ? kv[1].split(";").slice(1) : []; + ctx = this.handleObject(name, value, parameters, ctx, stack, l2) || {}; + if (++limitCounter > limit) { + break; + } + } + if (i2 >= lines2.length) { + delete ctx.type; + delete ctx.params; + } + if (cb) { + if (i2 < lines2.length) { + setImmediate(() => { + this.parseLines(lines2, limit, ctx, stack, i2 + 1, cb); + }); + } else { + setImmediate(() => { + cb(null, ctx); + }); + } + } else { + return ctx; + } + }, + parseICS(string, cb) { + const lines2 = string.split(/\r?\n/); + let ctx; + if (cb) { + this.parseLines(lines2, 2e3, cb); + } else { + ctx = this.parseLines(lines2, lines2.length); + return ctx; + } + } + }; + } +}); + +// node_modules/node-ical/node-ical.js +var require_node_ical = __commonJS({ + "node_modules/node-ical/node-ical.js"(exports, module2) { + var fs = require("fs"); + var axios = require_axios(); + var ical2 = require_ical(); + function promiseCallback(fn, cb) { + const promise2 = new Promise(fn); + if (!cb) { + return promise2; + } + promise2.then((returnValue) => { + cb(null, returnValue); + }).catch((error) => { + cb(error, null); + }); + } + var sync = {}; + var async = {}; + var autodetect = {}; + async.fromURL = function(url, options, cb) { + return promiseCallback((resolve, reject) => { + axios.get(url, options).then((response) => { + if (Math.floor(response.status / 100) !== 2) { + reject(new Error(`${response.status} ${response.statusText}`)); + return; + } + return response.data; + }).then((data) => { + ical2.parseICS(data, (error, ics) => { + if (error) { + reject(error); + return; + } + resolve(ics); + }); + }).catch((error) => { + reject(error); + }); + }, cb); + }; + async.parseFile = function(filename, cb) { + return promiseCallback((resolve, reject) => { + fs.readFile(filename, "utf8", (error, data) => { + if (error) { + reject(error); + return; + } + ical2.parseICS(data, (error2, ics) => { + if (error2) { + reject(error2); + return; + } + resolve(ics); + }); + }); + }, cb); + }; + async.parseICS = function(data, cb) { + return promiseCallback((resolve, reject) => { + ical2.parseICS(data, (error, ics) => { + if (error) { + reject(error); + return; + } + resolve(ics); + }); + }, cb); + }; + sync.parseFile = function(filename) { + const data = fs.readFileSync(filename, "utf8"); + return ical2.parseICS(data); + }; + sync.parseICS = function(data) { + return ical2.parseICS(data); + }; + autodetect.parseFile = function(filename, cb) { + if (!cb) { + return sync.parseFile(filename); + } + async.parseFile(filename, cb); + }; + autodetect.parseICS = function(data, cb) { + if (!cb) { + return sync.parseICS(data); + } + async.parseICS(data, cb); + }; + module2.exports = { + // Autodetect + fromURL: async.fromURL, + parseFile: autodetect.parseFile, + parseICS: autodetect.parseICS, + // Sync + sync, + // Async + async, + // Other backwards compat things + objectHandlers: ical2.objectHandlers, + handleObject: ical2.handleObject, + parseLines: ical2.parseLines + }; + } +}); + +// src/main.ts +var main_exports = {}; +__export(main_exports, { + default: () => DayPlanner +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian14 = require("obsidian"); + +// node_modules/svelte/internal/index.mjs +function noop() { +} +var identity = (x2) => x2; +function assign(tar, src) { + for (const k2 in src) + tar[k2] = src[k2]; + return tar; +} +function run(fn) { + return fn(); +} +function blank_object() { + return /* @__PURE__ */ Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === "function"; +} +function safe_not_equal(a2, b2) { + return a2 != a2 ? b2 == b2 : a2 !== b2 || (a2 && typeof a2 === "object" || typeof a2 === "function"); +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function subscribe(store, ...callbacks) { + if (store == null) { + return noop; + } + const unsub = store.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} +function get_store_value(store) { + let value; + subscribe(store, (_2) => value = _2)(); + return value; +} +function component_subscribe(component, store, callback) { + component.$$.on_destroy.push(subscribe(store, callback)); +} +function create_slot(definition, ctx, $$scope, fn) { + if (definition) { + const slot_ctx = get_slot_context(definition, ctx, $$scope, fn); + return definition[0](slot_ctx); + } +} +function get_slot_context(definition, ctx, $$scope, fn) { + return definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx; +} +function get_slot_changes(definition, $$scope, dirty, fn) { + if (definition[2] && fn) { + const lets = definition[2](fn(dirty)); + if ($$scope.dirty === void 0) { + return lets; + } + if (typeof lets === "object") { + const merged = []; + const len = Math.max($$scope.dirty.length, lets.length); + for (let i2 = 0; i2 < len; i2 += 1) { + merged[i2] = $$scope.dirty[i2] | lets[i2]; + } + return merged; + } + return $$scope.dirty | lets; + } + return $$scope.dirty; +} +function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) { + if (slot_changes) { + const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn); + slot.p(slot_context, slot_changes); + } +} +function get_all_dirty_from_scope($$scope) { + if ($$scope.ctx.length > 32) { + const dirty = []; + const length = $$scope.ctx.length / 32; + for (let i2 = 0; i2 < length; i2++) { + dirty[i2] = -1; + } + return dirty; + } + return -1; +} +function exclude_internal_props(props) { + const result = {}; + for (const k2 in props) + if (k2[0] !== "$") + result[k2] = props[k2]; + return result; +} +function compute_rest_props(props, keys2) { + const rest = {}; + keys2 = new Set(keys2); + for (const k2 in props) + if (!keys2.has(k2) && k2[0] !== "$") + rest[k2] = props[k2]; + return rest; +} +function set_store_value(store, ret, value) { + store.set(value); + return ret; +} +function action_destroyer(action_result) { + return action_result && is_function(action_result.destroy) ? action_result.destroy : noop; +} +var is_client = typeof window !== "undefined"; +var now = is_client ? () => window.performance.now() : () => Date.now(); +var raf = is_client ? (cb) => requestAnimationFrame(cb) : noop; +var tasks = /* @__PURE__ */ new Set(); +function run_tasks(now2) { + tasks.forEach((task) => { + if (!task.c(now2)) { + tasks.delete(task); + task.f(); + } + }); + if (tasks.size !== 0) + raf(run_tasks); +} +function loop(callback) { + let task; + if (tasks.size === 0) + raf(run_tasks); + return { + promise: new Promise((fulfill) => { + tasks.add(task = { c: callback, f: fulfill }); + }), + abort() { + tasks.delete(task); + } + }; +} +var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : global; +var ResizeObserverSingleton = class _ResizeObserverSingleton { + constructor(options) { + this.options = options; + this._listeners = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; + } + observe(element2, listener) { + this._listeners.set(element2, listener); + this._getObserver().observe(element2, this.options); + return () => { + this._listeners.delete(element2); + this._observer.unobserve(element2); + }; + } + _getObserver() { + var _a; + return (_a = this._observer) !== null && _a !== void 0 ? _a : this._observer = new ResizeObserver((entries) => { + var _a2; + for (const entry of entries) { + _ResizeObserverSingleton.entries.set(entry.target, entry); + (_a2 = this._listeners.get(entry.target)) === null || _a2 === void 0 ? void 0 : _a2(entry); + } + }); + } +}; +ResizeObserverSingleton.entries = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; +var is_hydrating = false; +function start_hydrating() { + is_hydrating = true; +} +function end_hydrating() { + is_hydrating = false; +} +function upper_bound(low, high, key, value) { + while (low < high) { + const mid = low + (high - low >> 1); + if (key(mid) <= value) { + low = mid + 1; + } else { + high = mid; + } + } + return low; +} +function init_hydrate(target) { + if (target.hydrate_init) + return; + target.hydrate_init = true; + let children2 = target.childNodes; + if (target.nodeName === "HEAD") { + const myChildren = []; + for (let i2 = 0; i2 < children2.length; i2++) { + const node = children2[i2]; + if (node.claim_order !== void 0) { + myChildren.push(node); + } + } + children2 = myChildren; + } + const m2 = new Int32Array(children2.length + 1); + const p2 = new Int32Array(children2.length); + m2[0] = -1; + let longest = 0; + for (let i2 = 0; i2 < children2.length; i2++) { + const current2 = children2[i2].claim_order; + const seqLen = (longest > 0 && children2[m2[longest]].claim_order <= current2 ? longest + 1 : upper_bound(1, longest, (idx) => children2[m2[idx]].claim_order, current2)) - 1; + p2[i2] = m2[seqLen] + 1; + const newLen = seqLen + 1; + m2[newLen] = i2; + longest = Math.max(newLen, longest); + } + const lis = []; + const toMove = []; + let last5 = children2.length - 1; + for (let cur = m2[longest] + 1; cur != 0; cur = p2[cur - 1]) { + lis.push(children2[cur - 1]); + for (; last5 >= cur; last5--) { + toMove.push(children2[last5]); + } + last5--; + } + for (; last5 >= 0; last5--) { + toMove.push(children2[last5]); + } + lis.reverse(); + toMove.sort((a2, b2) => a2.claim_order - b2.claim_order); + for (let i2 = 0, j2 = 0; i2 < toMove.length; i2++) { + while (j2 < lis.length && toMove[i2].claim_order >= lis[j2].claim_order) { + j2++; + } + const anchor = j2 < lis.length ? lis[j2] : null; + target.insertBefore(toMove[i2], anchor); + } +} +function append(target, node) { + target.appendChild(node); +} +function append_styles(target, style_sheet_id, styles) { + const append_styles_to = get_root_for_style(target); + if (!append_styles_to.getElementById(style_sheet_id)) { + const style = element("style"); + style.id = style_sheet_id; + style.textContent = styles; + append_stylesheet(append_styles_to, style); + } +} +function get_root_for_style(node) { + if (!node) + return document; + const root = node.getRootNode ? node.getRootNode() : node.ownerDocument; + if (root && root.host) { + return root; + } + return node.ownerDocument; +} +function append_empty_stylesheet(node) { + const style_element = element("style"); + append_stylesheet(get_root_for_style(node), style_element); + return style_element.sheet; +} +function append_stylesheet(node, style) { + append(node.head || node, style); + return style.sheet; +} +function append_hydration(target, node) { + if (is_hydrating) { + init_hydrate(target); + if (target.actual_end_child === void 0 || target.actual_end_child !== null && target.actual_end_child.parentNode !== target) { + target.actual_end_child = target.firstChild; + } + while (target.actual_end_child !== null && target.actual_end_child.claim_order === void 0) { + target.actual_end_child = target.actual_end_child.nextSibling; + } + if (node !== target.actual_end_child) { + if (node.claim_order !== void 0 || node.parentNode !== target) { + target.insertBefore(node, target.actual_end_child); + } + } else { + target.actual_end_child = node.nextSibling; + } + } else if (node.parentNode !== target || node.nextSibling !== null) { + target.appendChild(node); + } +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function insert_hydration(target, node, anchor) { + if (is_hydrating && !anchor) { + append_hydration(target, node); + } else if (node.parentNode !== target || node.nextSibling != anchor) { + target.insertBefore(node, anchor || null); + } +} +function detach(node) { + if (node.parentNode) { + node.parentNode.removeChild(node); + } +} +function destroy_each(iterations, detaching) { + for (let i2 = 0; i2 < iterations.length; i2 += 1) { + if (iterations[i2]) + iterations[i2].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function svg_element(name) { + return document.createElementNS("http://www.w3.org/2000/svg", name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(" "); +} +function empty() { + return text(""); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function prevent_default(fn) { + return function(event) { + event.preventDefault(); + return fn.call(this, event); + }; +} +function stop_propagation(fn) { + return function(event) { + event.stopPropagation(); + return fn.call(this, event); + }; +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +var always_set_through_set_attribute = ["width", "height"]; +function set_attributes(node, attributes) { + const descriptors = Object.getOwnPropertyDescriptors(node.__proto__); + for (const key in attributes) { + if (attributes[key] == null) { + node.removeAttribute(key); + } else if (key === "style") { + node.style.cssText = attributes[key]; + } else if (key === "__value") { + node.value = node[key] = attributes[key]; + } else if (descriptors[key] && descriptors[key].set && always_set_through_set_attribute.indexOf(key) === -1) { + node[key] = attributes[key]; + } else { + attr(node, key, attributes[key]); + } + } +} +function set_svg_attributes(node, attributes) { + for (const key in attributes) { + attr(node, key, attributes[key]); + } +} +function set_custom_element_data_map(node, data_map) { + Object.keys(data_map).forEach((key) => { + set_custom_element_data(node, key, data_map[key]); + }); +} +function set_custom_element_data(node, prop, value) { + if (prop in node) { + node[prop] = typeof node[prop] === "boolean" && value === "" ? true : value; + } else { + attr(node, prop, value); + } +} +function set_dynamic_element_data(tag) { + return /-/.test(tag) ? set_custom_element_data_map : set_attributes; +} +function children(element2) { + return Array.from(element2.childNodes); +} +function init_claim_info(nodes) { + if (nodes.claim_info === void 0) { + nodes.claim_info = { last_index: 0, total_claimed: 0 }; + } +} +function claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) { + init_claim_info(nodes); + const resultNode = (() => { + for (let i2 = nodes.claim_info.last_index; i2 < nodes.length; i2++) { + const node = nodes[i2]; + if (predicate(node)) { + const replacement = processNode(node); + if (replacement === void 0) { + nodes.splice(i2, 1); + } else { + nodes[i2] = replacement; + } + if (!dontUpdateLastIndex) { + nodes.claim_info.last_index = i2; + } + return node; + } + } + for (let i2 = nodes.claim_info.last_index - 1; i2 >= 0; i2--) { + const node = nodes[i2]; + if (predicate(node)) { + const replacement = processNode(node); + if (replacement === void 0) { + nodes.splice(i2, 1); + } else { + nodes[i2] = replacement; + } + if (!dontUpdateLastIndex) { + nodes.claim_info.last_index = i2; + } else if (replacement === void 0) { + nodes.claim_info.last_index--; + } + return node; + } + } + return createNode(); + })(); + resultNode.claim_order = nodes.claim_info.total_claimed; + nodes.claim_info.total_claimed += 1; + return resultNode; +} +function claim_element_base(nodes, name, attributes, create_element) { + return claim_node(nodes, (node) => node.nodeName === name, (node) => { + const remove = []; + for (let j2 = 0; j2 < node.attributes.length; j2++) { + const attribute = node.attributes[j2]; + if (!attributes[attribute.name]) { + remove.push(attribute.name); + } + } + remove.forEach((v2) => node.removeAttribute(v2)); + return void 0; + }, () => create_element(name)); +} +function claim_svg_element(nodes, name, attributes) { + return claim_element_base(nodes, name, attributes, svg_element); +} +function set_data(text2, data) { + data = "" + data; + if (text2.data === data) + return; + text2.data = data; +} +function set_input_value(input, value) { + input.value = value == null ? "" : value; +} +function set_style(node, key, value, important) { + if (value == null) { + node.style.removeProperty(key); + } else { + node.style.setProperty(key, value, important ? "important" : ""); + } +} +function select_option(select, value, mounting) { + for (let i2 = 0; i2 < select.options.length; i2 += 1) { + const option = select.options[i2]; + if (option.__value === value) { + option.selected = true; + return; + } + } + if (!mounting || value !== void 0) { + select.selectedIndex = -1; + } +} +function toggle_class(element2, name, toggle) { + element2.classList[toggle ? "add" : "remove"](name); +} +function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { + const e2 = document.createEvent("CustomEvent"); + e2.initCustomEvent(type, bubbles, cancelable, detail); + return e2; +} +var managed_styles = /* @__PURE__ */ new Map(); +var active = 0; +function hash(str) { + let hash2 = 5381; + let i2 = str.length; + while (i2--) + hash2 = (hash2 << 5) - hash2 ^ str.charCodeAt(i2); + return hash2 >>> 0; +} +function create_style_information(doc, node) { + const info = { stylesheet: append_empty_stylesheet(node), rules: {} }; + managed_styles.set(doc, info); + return info; +} +function create_rule(node, a2, b2, duration, delay, ease, fn, uid = 0) { + const step = 16.666 / duration; + let keyframes = "{\n"; + for (let p2 = 0; p2 <= 1; p2 += step) { + const t2 = a2 + (b2 - a2) * ease(p2); + keyframes += p2 * 100 + `%{${fn(t2, 1 - t2)}} +`; + } + const rule = keyframes + `100% {${fn(b2, 1 - b2)}} +}`; + const name = `__svelte_${hash(rule)}_${uid}`; + const doc = get_root_for_style(node); + const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node); + if (!rules[name]) { + rules[name] = true; + stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length); + } + const animation = node.style.animation || ""; + node.style.animation = `${animation ? `${animation}, ` : ""}${name} ${duration}ms linear ${delay}ms 1 both`; + active += 1; + return name; +} +function delete_rule(node, name) { + const previous = (node.style.animation || "").split(", "); + const next = previous.filter( + name ? (anim) => anim.indexOf(name) < 0 : (anim) => anim.indexOf("__svelte") === -1 + // remove all Svelte animations + ); + const deleted = previous.length - next.length; + if (deleted) { + node.style.animation = next.join(", "); + active -= deleted; + if (!active) + clear_rules(); + } +} +function clear_rules() { + raf(() => { + if (active) + return; + managed_styles.forEach((info) => { + const { ownerNode } = info.stylesheet; + if (ownerNode) + detach(ownerNode); + }); + managed_styles.clear(); + }); +} +var current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error("Function called outside component initialization"); + return current_component; +} +function afterUpdate(fn) { + get_current_component().$$.after_update.push(fn); +} +function onDestroy(fn) { + get_current_component().$$.on_destroy.push(fn); +} +function createEventDispatcher() { + const component = get_current_component(); + return (type, detail, { cancelable = false } = {}) => { + const callbacks = component.$$.callbacks[type]; + if (callbacks) { + const event = custom_event(type, detail, { cancelable }); + callbacks.slice().forEach((fn) => { + fn.call(component, event); + }); + return !event.defaultPrevented; + } + return true; + }; +} +function getContext(key) { + return get_current_component().$$.context.get(key); +} +function bubble(component, event) { + const callbacks = component.$$.callbacks[event.type]; + if (callbacks) { + callbacks.slice().forEach((fn) => fn.call(this, event)); + } +} +var dirty_components = []; +var binding_callbacks = []; +var render_callbacks = []; +var flush_callbacks = []; +var resolved_promise = /* @__PURE__ */ Promise.resolve(); +var update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function tick() { + schedule_update(); + return resolved_promise; +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +var seen_callbacks = /* @__PURE__ */ new Set(); +var flushidx = 0; +function flush() { + if (flushidx !== 0) { + return; + } + const saved_component = current_component; + do { + try { + while (flushidx < dirty_components.length) { + const component = dirty_components[flushidx]; + flushidx++; + set_current_component(component); + update(component.$$); + } + } catch (e2) { + dirty_components.length = 0; + flushidx = 0; + throw e2; + } + set_current_component(null); + dirty_components.length = 0; + flushidx = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + for (let i2 = 0; i2 < render_callbacks.length; i2 += 1) { + const callback = render_callbacks[i2]; + if (!seen_callbacks.has(callback)) { + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + seen_callbacks.clear(); + set_current_component(saved_component); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +function flush_render_callbacks(fns) { + const filtered = []; + const targets = []; + render_callbacks.forEach((c2) => fns.indexOf(c2) === -1 ? filtered.push(c2) : targets.push(c2)); + targets.forEach((c2) => c2()); + render_callbacks = filtered; +} +var promise; +function wait() { + if (!promise) { + promise = Promise.resolve(); + promise.then(() => { + promise = null; + }); + } + return promise; +} +function dispatch(node, direction, kind) { + node.dispatchEvent(custom_event(`${direction ? "intro" : "outro"}${kind}`)); +} +var outroing = /* @__PURE__ */ new Set(); +var outros; +function group_outros() { + outros = { + r: 0, + c: [], + p: outros + // parent group + }; +} +function check_outros() { + if (!outros.r) { + run_all(outros.c); + } + outros = outros.p; +} +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} +function transition_out(block, local, detach2, callback) { + if (block && block.o) { + if (outroing.has(block)) + return; + outroing.add(block); + outros.c.push(() => { + outroing.delete(block); + if (callback) { + if (detach2) + block.d(1); + callback(); + } + }); + block.o(local); + } else if (callback) { + callback(); + } +} +var null_transition = { duration: 0 }; +function create_in_transition(node, fn, params) { + const options = { direction: "in" }; + let config = fn(node, params, options); + let running = false; + let animation_name; + let task; + let uid = 0; + function cleanup() { + if (animation_name) + delete_rule(node, animation_name); + } + function go() { + const { delay = 0, duration = 300, easing = identity, tick: tick2 = noop, css } = config || null_transition; + if (css) + animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++); + tick2(0, 1); + const start_time = now() + delay; + const end_time = start_time + duration; + if (task) + task.abort(); + running = true; + add_render_callback(() => dispatch(node, true, "start")); + task = loop((now2) => { + if (running) { + if (now2 >= end_time) { + tick2(1, 0); + dispatch(node, true, "end"); + cleanup(); + return running = false; + } + if (now2 >= start_time) { + const t2 = easing((now2 - start_time) / duration); + tick2(t2, 1 - t2); + } + } + return running; + }); + } + let started = false; + return { + start() { + if (started) + return; + started = true; + delete_rule(node); + if (is_function(config)) { + config = config(options); + wait().then(go); + } else { + go(); + } + }, + invalidate() { + started = false; + }, + end() { + if (running) { + cleanup(); + running = false; + } + } + }; +} +function outro_and_destroy_block(block, lookup) { + transition_out(block, 1, 1, () => { + lookup.delete(block.key); + }); +} +function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block8, next, get_context) { + let o2 = old_blocks.length; + let n2 = list.length; + let i2 = o2; + const old_indexes = {}; + while (i2--) + old_indexes[old_blocks[i2].key] = i2; + const new_blocks = []; + const new_lookup = /* @__PURE__ */ new Map(); + const deltas = /* @__PURE__ */ new Map(); + const updates = []; + i2 = n2; + while (i2--) { + const child_ctx = get_context(ctx, list, i2); + const key = get_key(child_ctx); + let block = lookup.get(key); + if (!block) { + block = create_each_block8(key, child_ctx); + block.c(); + } else if (dynamic) { + updates.push(() => block.p(child_ctx, dirty)); + } + new_lookup.set(key, new_blocks[i2] = block); + if (key in old_indexes) + deltas.set(key, Math.abs(i2 - old_indexes[key])); + } + const will_move = /* @__PURE__ */ new Set(); + const did_move = /* @__PURE__ */ new Set(); + function insert2(block) { + transition_in(block, 1); + block.m(node, next); + lookup.set(block.key, block); + next = block.first; + n2--; + } + while (o2 && n2) { + const new_block = new_blocks[n2 - 1]; + const old_block = old_blocks[o2 - 1]; + const new_key = new_block.key; + const old_key = old_block.key; + if (new_block === old_block) { + next = new_block.first; + o2--; + n2--; + } else if (!new_lookup.has(old_key)) { + destroy(old_block, lookup); + o2--; + } else if (!lookup.has(new_key) || will_move.has(new_key)) { + insert2(new_block); + } else if (did_move.has(old_key)) { + o2--; + } else if (deltas.get(new_key) > deltas.get(old_key)) { + did_move.add(new_key); + insert2(new_block); + } else { + will_move.add(old_key); + o2--; + } + } + while (o2--) { + const old_block = old_blocks[o2]; + if (!new_lookup.has(old_block.key)) + destroy(old_block, lookup); + } + while (n2) + insert2(new_blocks[n2 - 1]); + run_all(updates); + return new_blocks; +} +function get_spread_update(levels, updates) { + const update2 = {}; + const to_null_out = {}; + const accounted_for = { $$scope: 1 }; + let i2 = levels.length; + while (i2--) { + const o2 = levels[i2]; + const n2 = updates[i2]; + if (n2) { + for (const key in o2) { + if (!(key in n2)) + to_null_out[key] = 1; + } + for (const key in n2) { + if (!accounted_for[key]) { + update2[key] = n2[key]; + accounted_for[key] = 1; + } + } + levels[i2] = n2; + } else { + for (const key in o2) { + accounted_for[key] = 1; + } + } + } + for (const key in to_null_out) { + if (!(key in update2)) + update2[key] = void 0; + } + return update2; +} +function get_spread_object(spread_props) { + return typeof spread_props === "object" && spread_props !== null ? spread_props : {}; +} +var _boolean_attributes = [ + "allowfullscreen", + "allowpaymentrequest", + "async", + "autofocus", + "autoplay", + "checked", + "controls", + "default", + "defer", + "disabled", + "formnovalidate", + "hidden", + "inert", + "ismap", + "loop", + "multiple", + "muted", + "nomodule", + "novalidate", + "open", + "playsinline", + "readonly", + "required", + "reversed", + "selected" +]; +var boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]); +function create_component(block) { + block && block.c(); +} +function claim_component(block, parent_nodes) { + block && block.l(parent_nodes); +} +function mount_component(component, target, anchor, customElement) { + const { fragment, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + add_render_callback(() => { + const new_on_destroy = component.$$.on_mount.map(run).filter(is_function); + if (component.$$.on_destroy) { + component.$$.on_destroy.push(...new_on_destroy); + } else { + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + flush_render_callbacks($$.after_update); + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i2) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[i2 / 31 | 0] |= 1 << i2 % 31; +} +function init(component, options, instance53, create_fragment54, not_equal, props, append_styles2, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: [], + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(options.context || (parent_component ? parent_component.$$.context : [])), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false, + root: options.target || parent_component.$$.root + }; + append_styles2 && append_styles2($$.root); + let ready = false; + $$.ctx = instance53 ? instance53(component, options.props || {}, (i2, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i2], $$.ctx[i2] = value)) { + if (!$$.skip_bound && $$.bound[i2]) + $$.bound[i2](value); + if (ready) + make_dirty(component, i2); + } + return ret; + }) : []; + $$.update(); + ready = true; + run_all($$.before_update); + $$.fragment = create_fragment54 ? create_fragment54($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + start_hydrating(); + const nodes = children(options.target); + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } else { + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + end_hydrating(); + flush(); + } + set_current_component(parent_component); +} +var SvelteElement; +if (typeof HTMLElement === "function") { + SvelteElement = class extends HTMLElement { + constructor() { + super(); + this.attachShadow({ mode: "open" }); + } + connectedCallback() { + const { on_mount } = this.$$; + this.$$.on_disconnect = on_mount.map(run).filter(is_function); + for (const key in this.$$.slotted) { + this.appendChild(this.$$.slotted[key]); + } + } + attributeChangedCallback(attr2, _oldValue, newValue) { + this[attr2] = newValue; + } + disconnectedCallback() { + run_all(this.$$.on_disconnect); + } + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + if (!is_function(callback)) { + return noop; + } + const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } + }; +} +var SvelteComponent = class { + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + if (!is_function(callback)) { + return noop; + } + const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } +}; + +// node_modules/svelte/store/index.mjs +var subscriber_queue = []; +function readable(value, start) { + return { + subscribe: writable(value, start).subscribe + }; +} +function writable(value, start = noop) { + let stop; + const subscribers = /* @__PURE__ */ new Set(); + function set2(new_value) { + if (safe_not_equal(value, new_value)) { + value = new_value; + if (stop) { + const run_queue = !subscriber_queue.length; + for (const subscriber of subscribers) { + subscriber[1](); + subscriber_queue.push(subscriber, value); + } + if (run_queue) { + for (let i2 = 0; i2 < subscriber_queue.length; i2 += 2) { + subscriber_queue[i2][0](subscriber_queue[i2 + 1]); + } + subscriber_queue.length = 0; + } + } + } + } + function update2(fn) { + set2(fn(value)); + } + function subscribe2(run2, invalidate = noop) { + const subscriber = [run2, invalidate]; + subscribers.add(subscriber); + if (subscribers.size === 1) { + stop = start(set2) || noop; + } + run2(value); + return () => { + subscribers.delete(subscriber); + if (subscribers.size === 0 && stop) { + stop(); + stop = null; + } + }; + } + return { set: set2, update: update2, subscribe: subscribe2 }; +} +function derived(stores, fn, initial_value) { + const single = !Array.isArray(stores); + const stores_array = single ? [stores] : stores; + const auto = fn.length < 2; + return readable(initial_value, (set2) => { + let started = false; + const values = []; + let pending = 0; + let cleanup = noop; + const sync = () => { + if (pending) { + return; + } + cleanup(); + const result = fn(single ? values[0] : values, set2); + if (auto) { + set2(result); + } else { + cleanup = is_function(result) ? result : noop; + } + }; + const unsubscribers = stores_array.map((store, i2) => subscribe(store, (value) => { + values[i2] = value; + pending &= ~(1 << i2); + if (started) { + sync(); + } + }, () => { + pending |= 1 << i2; + })); + started = true; + sync(); + return function stop() { + run_all(unsubscribers); + cleanup(); + started = false; + }; + }); +} + +// src/constants.ts +var viewTypeTimeline = "timeline"; +var viewTypeWeekly = "weekly"; +var obsidianContext = "obsidian"; +var dateRangeContextKey = "dateRangeContext"; +var errorContextKey = "errorContext"; +var defaultDayFormat = "YYYY-MM-DD"; +var originalRecurrenceDayKeyFormat = "YYYY-MM-DD"; +var defaultDayFormatForLuxon = "yyyy-MM-dd"; +var clockSeparator = "--"; +var defaultDurationMinutes = 30; +var statusBarTextLimit = 15; +var indentBeforeTaskParagraph = 6; +var clockKey = "clocked"; +var clockFormat = "YYYY-MM-DDTHH:mm:ss"; +var reQueryAfterMillis = 200; +var icalRefreshIntervalMillis = 5 * 60 * 1e3; +var noTitle = "(No title)"; +var supportBanner = `\u{1FAB2} [Report bugs and suggest features](https://github.com/ivan-lednev/obsidian-day-planner/issues)
+\u2753 [Ask questions](https://github.com/ivan-lednev/obsidian-day-planner/discussions/new?category=q-a)
+\u{1F44D} [Give thumbs up to issues important to you](https://github.com/ivan-lednev/obsidian-day-planner/issues)
+\u{1FA9B} [Submit pull-requests](./CONTRIBUTING.md)
+\u2764\uFE0F Support the project directly: + +Buy Me A Coffee + +You can disable these release notes in the settings tab. +`; +var icons = [ + "any-key", + "audio-file", + "blocks", + "broken-link", + "bullet-list", + "calendar-with-checkmark", + "checkmark", + "create-new", + "cross", + "cross-in-box", + "crossed-star", + "dice", + "document", + "documents", + "dot-network", + "enter", + "expand-vertically", + "filled-pin", + "folder", + "gear", + "go-to-file", + "hashtag", + "help", + "horizontal-split", + "image-file", + "info", + "install", + "languages", + "left-arrow", + "left-arrow-with-tail", + "lines-of-text", + "link", + "logo-crystal", + "magnifying-glass", + "microphone", + "microphone-filled", + "open-vault", + "pane-layout", + "paper-plane", + "pdf-file", + "pencil", + "pin", + "popup-open", + "presentation", + "reset", + "right-arrow", + "right-arrow-with-tail", + "right-triangle", + "search", + "sheets-in-box", + "star", + "star-list", + "switch", + "three-horizontal-bars", + "trash", + "two-columns", + "up-and-down-arrows", + "uppercase-lowercase-a", + "vault", + "vertical-split", + "vertical-three-dots" +]; + +// src/settings.ts +var import_obsidian_daily_notes_interface = __toESM(require_main()); +var defaultSettings = { + snapStepMinutes: 10, + progressIndicator: "bar", + showTaskNotification: false, + zoomLevel: 2, + timelineIcon: "calendar-with-checkmark", + endLabel: "All done", + startHour: 6, + timelineDateFormat: import_obsidian_daily_notes_interface.DEFAULT_DAILY_NOTE_FORMAT, + centerNeedle: false, + plannerHeading: "Day planner", + plannerHeadingLevel: 1, + timelineColored: false, + timelineStartColor: "#006466", + timelineEndColor: "#4d194d", + timestampFormat: "HH:mm", + hourFormat: "H", + dataviewSource: "", + extendDurationUntilNext: false, + defaultDurationMinutes: 30, + showTimestampInTaskBlock: false, + showUncheduledTasks: true, + showUnscheduledNestedTasks: true, + showNow: true, + showNext: true, + pluginVersion: "", + showCompletedTasks: true, + showSubtasksInTaskBlocks: true, + icals: [], + colorOverrides: [], + releaseNotes: true, + taskStatusOnCreation: " " +}; +var defaultSettingsForTests = { + ...defaultSettings, + startHour: 0, + zoomLevel: 1 +}; + +// src/global-store/settings.ts +var settings = writable(defaultSettings); + +// src/service/dataview-facade.ts +var import_obsidian_dataview = __toESM(require_lib()); +var DataviewFacade = class { + constructor(app) { + this.app = app; + this.getAllTasksFrom = (source) => { + if (!(0, import_obsidian_dataview.getAPI)(this.app)) { + return []; + } + return (0, import_obsidian_dataview.getAPI)(this.app).pages(source).file.tasks.array(); + }; + this.getAllListsFrom = (source) => { + if (!(0, import_obsidian_dataview.getAPI)(this.app)) { + return []; + } + return (0, import_obsidian_dataview.getAPI)(this.app).pages(source).file.lists.array(); + }; + this.getTasksFromPath = (path) => { + var _a, _b, _c; + return (_c = (_b = (_a = (0, import_obsidian_dataview.getAPI)(this.app)) == null ? void 0 : _a.page(path)) == null ? void 0 : _b.file) == null ? void 0 : _c.tasks; + }; + } + getTaskFromCaretLocation({ path, line }) { + return this.getTasksFromPath(path).find( + (sTask) => sTask.line === line + ); + } +}; + +// src/service/obsidian-facade.ts +var import_obsidian = require("obsidian"); +var import_obsidian_daily_notes_interface2 = __toESM(require_main()); +var import_typed_assert = __toESM(require_build()); +function doesLeafContainFile(leaf, file) { + const { view } = leaf; + return view instanceof import_obsidian.FileView && view.file === file; +} +var ObsidianFacade = class { + constructor(app) { + this.app = app; + this.getLastCaretLocation = () => { + const view = this.getActiveMarkdownView(); + const file = view.file; + (0, import_typed_assert.isNotVoid)(file, "There is no file in view"); + const path = file.path; + const line = view.editor.getCursor().line; + return { path, line }; + }; + this.getActiveMarkdownView = () => { + var _a; + const view = (_a = this.app.workspace.getMostRecentLeaf()) == null ? void 0 : _a.view; + (0, import_typed_assert.isInstanceOf)(view, import_obsidian.MarkdownView, "No markdown editor is active"); + return view; + }; + } + async openFileInEditor(file) { + const leafWithThisFile = this.app.workspace.getLeavesOfType("markdown").find((leaf) => doesLeafContainFile(leaf, file)); + if (leafWithThisFile) { + this.app.workspace.setActiveLeaf(leafWithThisFile, { focus: true }); + if (leafWithThisFile.view instanceof import_obsidian.MarkdownView) { + return leafWithThisFile.view.editor; + } + } else { + const newLeaf = this.app.workspace.getLeaf(false); + await newLeaf.openFile(file); + if (newLeaf.view instanceof import_obsidian.MarkdownView) { + return newLeaf.view.editor; + } + } + } + async openFileForDay(moment3) { + const dailyNote = (0, import_obsidian_daily_notes_interface2.getDailyNote)(moment3, (0, import_obsidian_daily_notes_interface2.getAllDailyNotes)()) || await (0, import_obsidian_daily_notes_interface2.createDailyNote)(moment3); + return this.openFileInEditor(dailyNote); + } + getMetadataForPath(path) { + const file = this.getFileByPath(path); + return this.app.metadataCache.getFileCache(file); + } + async revealLineInFile(path, line) { + var _a; + const file = this.getFileByPath(path); + const editor = await this.openFileInEditor(file); + (_a = this.app.workspace.getActiveViewOfType(import_obsidian.MarkdownView)) == null ? void 0 : _a.setEphemeralState({ line }); + editor.setCursor({ line, ch: 0 }); + } + async editFile(path, editFn) { + const file = this.app.vault.getAbstractFileByPath(path); + (0, import_typed_assert.isInstanceOf)(file, import_obsidian.TFile, `${path} is not a markdown file`); + const contents2 = await this.app.vault.read(file); + const newContents = editFn(contents2); + await this.app.vault.modify(file, newContents); + } + getFileByPath(path) { + const file = this.app.vault.getAbstractFileByPath(path); + (0, import_typed_assert.isInstanceOf)(file, import_obsidian.TFile, `Unable to open file: ${path}`); + return file; + } +}; + +// src/service/plan-editor.ts +var import_fp4 = __toESM(require_fp()); +var import_obsidian_daily_notes_interface5 = __toESM(require_main()); + +// node_modules/ts-dedent/esm/index.js +function dedent(templ) { + var values = []; + for (var _i = 1; _i < arguments.length; _i++) { + values[_i - 1] = arguments[_i]; + } + var strings = Array.from(typeof templ === "string" ? [templ] : templ); + strings[strings.length - 1] = strings[strings.length - 1].replace(/\r?\n([\t ]*)$/, ""); + var indentLengths = strings.reduce(function(arr, str) { + var matches = str.match(/\n([\t ]+|(?!\s).)/g); + if (matches) { + return arr.concat(matches.map(function(match) { + var _a, _b; + return (_b = (_a = match.match(/[\t ]/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; + })); + } + return arr; + }, []); + if (indentLengths.length) { + var pattern_1 = new RegExp("\n[ ]{" + Math.min.apply(Math, indentLengths) + "}", "g"); + strings = strings.map(function(str) { + return str.replace(pattern_1, "\n"); + }); + } + strings[0] = strings[0].replace(/^\r?\n/, ""); + var string = strings[0]; + values.forEach(function(value, i2) { + var endentations = string.match(/(?:^|\n)( *)$/); + var endentation = endentations ? endentations[1] : ""; + var indentedValue = value; + if (typeof value === "string" && value.includes("\n")) { + indentedValue = String(value).split("\n").map(function(str, i3) { + return i3 === 0 ? str : "" + endentation + str; + }).join("\n"); + } + string += indentedValue + strings[i2 + 1]; + }); + return string; +} + +// src/regexp.ts +var ulToken = `[-*+]`; +var olToken = `\\d+\\.`; +var listToken = `\\s*(${ulToken}|${olToken})\\s+`; +var checkbox = `\\s*\\[(?[^\\]])]\\s+`; +var durationSeparator = `\\s*-{1,2}\\s*`; +var hours = `\\d{1,2}`; +var minutes = `\\d{2}`; +var hourMinuteSeparator = `[:. ]`; +var date = "\\d{4}-\\d{2}-\\d{2}"; +var time = `(${hours})(?:${hourMinuteSeparator}?(${minutes}))?\\s*([apAP][mM](?!\\w))?`; +var listTokenRegExp = new RegExp(listToken); +var checkboxRegExp = new RegExp(checkbox); +var timeRegExp = new RegExp(time); +var timeFromStartRegExp = new RegExp(`^${time}`); +var timestampRegExp = new RegExp( + `^(?(?${time})(?:${durationSeparator}(?${time}))?)(?.+)$`, + "im" +); +var sTaskTimestampRegExp = new RegExp( + `^(?${time})(?:${durationSeparator}(?${time}))?$`, + "im" +); +var scheduledPropRegExp = new RegExp( + `(\\[scheduled\\s*::\\s*)${date}(\\])` +); +var keylessScheduledPropRegExp = new RegExp( + `(\\(scheduled\\s*::\\s*)${date}(\\))` +); +var shortScheduledPropRegExp = new RegExp(`(\u23F3\\s*)${date}`); +var propRegexp = /\[(.+)::(.*)]/g; + +// src/util/moment.ts +var import_fp = __toESM(require_fp()); +var moment = window.moment; +function getMinutesSinceMidnight(moment3) { + return moment3.diff(moment3.clone().startOf("day"), "minutes"); +} +function getDiffInMinutes(a2, b2) { + return Math.abs(a2.diff(b2, "minutes")); +} +function getDaysOfCurrentWeek() { + return getDaysOfWeek(window.moment()); +} +function getDaysOfWeek(moment3) { + const firstDay = moment3.clone().startOf("isoWeek"); + return (0, import_fp.range)(1, 7).reduce( + (result, dayIndex) => { + const nextDay = firstDay.clone().add(dayIndex, "day"); + return [...result, nextDay]; + }, + [firstDay] + ); +} +function minutesToMomentOfDay(minutesSinceMidnight, moment3) { + return moment3.clone().startOf("day").add(minutesSinceMidnight, "minutes"); +} +function minutesToMoment(minutesSinceMidnight) { + return moment().startOf("day").add(minutesSinceMidnight, "minutes"); +} +function hoursToMoment(hoursSinceMidnight) { + return moment().startOf("day").add(hoursSinceMidnight, "hours"); +} +function addMinutes(moment3, minutes2) { + return moment3.clone().add(minutes2, "minutes"); +} +function getRelationToNow(now2, start, end) { + if (end.isBefore(now2)) { + return "past"; + } + if (start.isAfter(now2)) { + return "future"; + } + return "present"; +} +function getEarliestMoment(moments) { + return moments.reduce((result, current2) => { + if (current2.isBefore(result)) { + return current2; + } + return result; + }); +} + +// src/util/task-utils.ts +var import_fp3 = __toESM(require_fp()); + +// src/util/dataview.ts +var import_obsidian_daily_notes_interface3 = __toESM(require_main()); + +// src/util/clock.ts +var import_fp2 = __toESM(require_fp()); + +// src/util/properties.ts +function createProp(key, value) { + return `[${key}::${value}]`; +} +function updateProp(line, updateFn) { + const [, key, previous] = propRegexp.exec(line); + return `[${key}::${updateFn(previous)}]`; +} +function deleteProps(line) { + return line.replaceAll(propRegexp, "").trim(); +} + +// src/util/clock.ts +function hasActiveClockProp(sTask) { + if (!sTask.clocked) { + return false; + } + if (Array.isArray(sTask.clocked)) { + return sTask.clocked.some(isActiveClockProp); + } + return isActiveClockProp(sTask.clocked); +} +function isActiveClockProp(clockPropValue) { + return !String(clockPropValue).includes(clockSeparator); +} +function createClockTimestamp() { + return window.moment().format(clockFormat); +} +function createActiveClock() { + return createProp(clockKey, createClockTimestamp()); +} +function clockOut(line) { + return updateProp( + line, + (previous) => `${previous}${clockSeparator}${createClockTimestamp()}` + ); +} +function containsActiveClock(line) { + return line.includes(clockKey) && !line.includes(clockSeparator); +} +function withActiveClock(sTask) { + return { + ...sTask, + text: `${sTask.text.trimEnd()} +${createActiveClock()}` + }; +} +function withoutActiveClock(sTask) { + return { + ...sTask, + text: lines( + (0, import_fp2.filter)((line) => !containsActiveClock(line)), + sTask.text + ) + }; +} +function lines(fn, text2) { + return fn(text2.split("\n")).join("\n"); +} +function withActiveClockCompleted(sTask) { + return { + ...sTask, + text: lines( + (0, import_fp2.map)((line) => containsActiveClock(line) ? clockOut(line) : line), + sTask.text + ) + }; +} +function assertActiveClock(sTask) { + if (!hasActiveClockProp(sTask)) { + throw new Error("The task has no active clocks"); + } + return sTask; +} +function assertNoActiveClock(sTask) { + if (hasActiveClockProp(sTask)) { + throw new Error("The task already has an active clock"); + } + return sTask; +} + +// src/util/id.ts +function getId() { + return String(Math.random()); +} + +// src/util/dataview.ts +function textToString(node) { + const status = node.status ? `[${node.status}] ` : ""; + return `${node.symbol} ${status}${deleteProps(node.text)} +`; +} +function toString(node, indentation = "") { + let result = `${indentation}${textToString(node)}`; + for (const child of node.children) { + if (!child.scheduled && !timeFromStartRegExp.test(child.text)) { + result += toString(child, ` ${indentation}`); + } + } + return result; +} +function toUnscheduledTask(sTask, day) { + return { + durationMinutes: defaultDurationMinutes, + symbol: sTask.symbol, + status: sTask.status, + text: toString(sTask), + location: { + path: sTask.path, + line: sTask.line, + position: sTask.position + }, + id: getId() + }; +} +function toTask(sTask, day) { + const { startTime, durationMinutes } = getTimeFromSTask({ + line: sTask.text, + day + }); + return { + startTime, + symbol: sTask.symbol, + status: sTask.status, + text: toString(sTask), + durationMinutes, + // todo: delete + startMinutes: getMinutesSinceMidnight(startTime), + location: { + path: sTask.path, + position: sTask.position + }, + id: getId() + }; +} +function getScheduledDay(sTask) { + var _a, _b, _c; + const scheduledPropDay = (_b = (_a = sTask.scheduled) == null ? void 0 : _a.toFormat) == null ? void 0 : _b.call( + _a, + defaultDayFormatForLuxon + ); + const dailyNoteDay = (_c = (0, import_obsidian_daily_notes_interface3.getDateFromPath)(sTask.path, "day")) == null ? void 0 : _c.format( + defaultDayFormat + ); + return scheduledPropDay || dailyNoteDay; +} +function toMarkdown(sTask) { + const baseIndent = " ".repeat(sTask.position.start.col); + const extraIndent = " ".repeat(indentBeforeTaskParagraph); + return sTask.text.split("\n").map((line, i2) => { + if (i2 === 0) { + return `${baseIndent}${getListTokens(sTask)} ${line}`; + } + return `${baseIndent}${extraIndent}${line}`; + }).join("\n"); +} +function getListTokens(task) { + const maybeCheckbox = task.status === void 0 ? "" : `[${task.status}]`; + return `${task.symbol} ${maybeCheckbox}`.trim(); +} +function replaceSTaskInFile(contents2, sTask, newText) { + const lines2 = contents2.split("\n"); + const deleteCount = sTask.position.end.line - sTask.position.start.line + 1; + lines2.splice(sTask.position.start.line, deleteCount, newText); + return lines2.join("\n"); +} + +// src/util/task-utils.ts +function isEqualTask(a2, b2) { + return a2.id === b2.id && a2.startMinutes === b2.startMinutes && a2.durationMinutes === b2.durationMinutes; +} +function getEndMinutes(task) { + return task.startMinutes + task.durationMinutes; +} +function getEndTime(task) { + return task.startTime.clone().add(task.durationMinutes, "minutes"); +} +function getRenderKey(task) { + var _a; + return `${task.startMinutes} ${getEndMinutes(task)} ${task.text} ${(_a = task.isGhost) != null ? _a : ""}`; +} +function getNotificationKey(task) { + var _a, _b; + return `${(_b = (_a = task.location) == null ? void 0 : _a.path) != null ? _b : "blank"}::${task.startMinutes}::${task.durationMinutes}::${task.text}`; +} +function copy(task) { + return { + ...task, + id: getId(), + isGhost: true, + location: { ...task.location } + }; +} +function createTimestamp(startMinutes, durationMinutes, format) { + const start = minutesToMoment(startMinutes); + const end = addMinutes(start, durationMinutes); + return `${start.format(format)} - ${end.format(format)}`; +} +function areValuesEmpty(record) { + return Object.values(record).every(import_fp3.isEmpty); +} +function taskLineToString(task) { + const firstLineText = removeTimestamp( + removeListTokens(getFirstLine(task.text)) + ); + return `${getListTokens(task)} ${createTimestamp( + task.startMinutes, + task.durationMinutes, + get_store_value(settings).timestampFormat + )} ${firstLineText} +${getLinesAfterFirst(task.text)}`; +} +function updateScheduledPropInText(text2, dayKey) { + const updated = text2.replace(shortScheduledPropRegExp, `$1${dayKey}`).replace(scheduledPropRegExp, `$1${dayKey}$2`).replace(keylessScheduledPropRegExp, `$1${dayKey}$2`); + if (updated !== text2) { + return updated; + } + return `${text2} \u23F3 ${dayKey}`; +} +function updateTaskText(task) { + return { ...task, text: taskLineToString(task) }; +} +function updateTaskScheduledDay(task, dayKey) { + return { + ...task, + text: `${updateScheduledPropInText(getFirstLine(task.text), dayKey)} +${getLinesAfterFirst(task.text)}` + }; +} +function offsetYToMinutes(offsetY, zoomLevel, startHour) { + const hiddenHoursSize = startHour * 60 * zoomLevel; + return (offsetY + hiddenHoursSize) / zoomLevel; +} +function createTask(day, startMinutes, status) { + return { + id: getId(), + startMinutes, + durationMinutes: defaultDurationMinutes, + text: "New item", + startTime: minutesToMomentOfDay(startMinutes, day), + symbol: "-", + status, + placing: { + widthPercent: 100, + xOffsetPercent: 0 + } + }; +} +function getFirstLine(text2) { + return text2.split("\n")[0]; +} +function getLinesAfterFirst(text2) { + return text2.split("\n").slice(1).join("\n"); +} +function removeTimestamp(text2) { + const match = timestampRegExp.exec(text2.trim()); + if (!match) { + return text2; + } + const { + groups: { text: textWithoutTimestamp } + } = match; + return textWithoutTimestamp; +} +function removeListTokens(text2) { + return text2.replace(listTokenRegExp, "").replace(checkboxRegExp, ""); +} + +// src/parser/timestamp/timestamp.ts +function parseTimestamp(asText, day) { + if (!asText) { + return null; + } + const result = timeRegExp.exec(asText); + if (result === null) { + throw new Error(`${asText} is not a valid timestamp`); + } + const [, hours2, minutes2, ampm] = result; + let parsedHours = parseInt(hours2); + if (isNaN(parsedHours)) { + throw new Error(`${asText} is not a valid timestamp`); + } + const parsedMinutes = parseInt(minutes2) || 0; + if ((ampm == null ? void 0 : ampm.toLowerCase()) === "pm" && parsedHours < 12) { + parsedHours += 12; + } + const timeOfDay = window.moment.duration({ + hours: parsedHours, + minutes: parsedMinutes + }); + return day.clone().startOf("day").add(timeOfDay); +} + +// src/parser/parser.ts +function getListItemsUnderHeading(metadata, heading) { + var _a; + const { headings } = metadata; + if (!headings) { + return []; + } + const planHeadingIndex = headings.findIndex((h2) => h2.heading === heading); + if (planHeadingIndex < 0) { + return []; + } + const planHeading = headings[planHeadingIndex]; + const nextHeadingOfSameLevel = headings.slice(planHeadingIndex + 1).find((heading2) => heading2.level <= planHeading.level); + return (_a = metadata.listItems) == null ? void 0 : _a.filter((li) => { + const isBelowPlan = li.position.start.line > planHeading.position.start.line; + const isAboveNextHeadingIfItExists = !nextHeadingOfSameLevel || li.position.start.line < nextHeadingOfSameLevel.position.start.line; + return isBelowPlan && isAboveNextHeadingIfItExists; + }); +} +function getHeadingByText(metadata, text2) { + const { headings = [] } = metadata; + return headings == null ? void 0 : headings.find((h2) => h2.heading === text2); +} +function getTimeFromSTask({ line, day }) { + const match = timestampRegExp.exec(line.trim()); + if (!match) { + return null; + } + const { + groups: { start, end } + } = match; + const startTime = parseTimestamp(start, day); + const endTime = parseTimestamp(end, day); + const durationMinutes = (endTime == null ? void 0 : endTime.isAfter(startTime)) ? getDiffInMinutes(endTime, startTime) : void 0; + return { + startTime, + durationMinutes + }; +} +function getDisplayedText(task) { + if (task.status) { + return task.text; + } + return `${removeListTokens(getFirstLine(task.text))} +${dedent(getLinesAfterFirst(task.text)).trimStart()}`; +} + +// src/util/daily-notes.ts +var import_obsidian_daily_notes_interface4 = __toESM(require_main()); +async function createDailyNoteIfNeeded(moment3) { + return (0, import_obsidian_daily_notes_interface4.getDailyNote)(moment3, (0, import_obsidian_daily_notes_interface4.getAllDailyNotes)()) || (0, import_obsidian_daily_notes_interface4.createDailyNote)(moment3); +} + +// src/service/plan-editor.ts +var PlanEditor = class { + constructor(settings2, obsidianFacade) { + this.settings = settings2; + this.obsidianFacade = obsidianFacade; + // todo: all except this can be re-written to use mdast + this.syncTasksWithFile = async ({ + updated, + created, + moved + }) => { + if (created.length > 0) { + const [task] = await this.ensureFilesForTasks(created); + return this.obsidianFacade.editFile(task.location.path, (contents2) => { + return this.writeTaskToFileContents(task, contents2, task.location.path); + }); + } + if (moved.length > 0) { + const movedTask = moved[0]; + await this.obsidianFacade.editFile( + movedTask.task.location.path, + (contents2) => { + return this.removeTaskFromFileContents(movedTask.task, contents2); + } + ); + const withNewDates = moved.map(({ dayKey, task: task2 }) => { + const parsedDay = window.moment(dayKey); + const newStartTime = task2.startTime.clone().year(parsedDay.year()).month(parsedDay.month()).date(parsedDay.date()); + return { ...task2, startTime: newStartTime }; + }); + const [task] = await this.ensureFilesForTasks(withNewDates); + const noteForFile = (0, import_obsidian_daily_notes_interface5.getDailyNote)( + window.moment(task.startTime), + (0, import_obsidian_daily_notes_interface5.getAllDailyNotes)() + ); + const updated2 = updateTaskText(task); + return this.obsidianFacade.editFile(noteForFile.path, (contents2) => { + return this.writeTaskToFileContents( + updated2, + contents2, + noteForFile.path + ); + }); + } + const pathToEditedTasksLookup = (0, import_fp4.groupBy)( + (task) => task.location.path, + updated + ); + const editPromises = Object.keys(pathToEditedTasksLookup).map( + async (path) => await this.obsidianFacade.editFile( + path, + (contents2) => pathToEditedTasksLookup[path].reduce( + (result, current2) => this.updateTaskInFileContents(result, current2), + contents2 + ) + ) + ); + return Promise.all(editPromises); + }; + } + // todo: rework to ensure files for dates + async ensureFilesForTasks(tasks2) { + return Promise.all( + tasks2.map(async (task) => { + const { path } = await createDailyNoteIfNeeded(task.startTime); + return { ...task, location: { ...task.location, path } }; + }) + ); + } + writeTaskToFileContents(task, contents2, path) { + const metadata = this.obsidianFacade.getMetadataForPath(path) || {}; + const [planEndLine, splitContents] = this.getPlanEndLine( + contents2.split("\n"), + metadata + ); + const result = [...splitContents]; + result.splice(planEndLine + 1, 0, task.text); + return result.join("\n"); + } + removeTaskFromFileContents(task, contents2) { + const newContents = contents2.split("\n"); + const taskLinesCount = task.text.split("\n").length - 1; + newContents.splice(task.location.position.start.line, taskLinesCount); + return newContents.join("\n"); + } + createPlannerHeading() { + const { plannerHeading, plannerHeadingLevel } = this.settings(); + const headingTokens = "#".repeat(plannerHeadingLevel); + return `${headingTokens} ${plannerHeading}`; + } + updateTaskInFileContents(contents2, task) { + return contents2.split("\n").map((line, index) => { + var _a, _b, _c; + if (index === ((_c = (_b = (_a = task.location) == null ? void 0 : _a.position) == null ? void 0 : _b.start) == null ? void 0 : _c.line)) { + return line.substring(0, task.location.position.start.col) + getFirstLine(task.text); + } + return line; + }).join("\n"); + } + getPlanEndLine(contents2, metadata) { + const planHeading = getHeadingByText( + metadata, + this.settings().plannerHeading + ); + const planListItems = getListItemsUnderHeading( + metadata, + this.settings().plannerHeading + ); + if ((planListItems == null ? void 0 : planListItems.length) > 0) { + const lastListItem = planListItems[planListItems.length - 1]; + return [lastListItem.position.start.line, contents2]; + } + if (planHeading) { + return [planHeading.position.start.line, contents2]; + } + const withNewPlan = [...contents2, "", this.createPlannerHeading(), ""]; + return [withNewPlan.length, withNewPlan]; + } +}; + +// src/service/stask-editor.ts +var import_fp5 = __toESM(require_fp()); +var import_typed_assert2 = __toESM(require_build()); + +// src/util/editor.ts +function locToEditorPosition({ line, col }) { + return { line, ch: col }; +} + +// src/util/with-notice.ts +var import_obsidian2 = require("obsidian"); +function withNotice(fn) { + return async (...args) => { + try { + await fn(...args); + } catch (error) { + console.error(error); + new import_obsidian2.Notice((error == null ? void 0 : error.message) || error); + } + }; +} + +// src/service/stask-editor.ts +var STaskEditor = class { + constructor(obsidianFacade, dataviewFacade) { + this.obsidianFacade = obsidianFacade; + this.dataviewFacade = dataviewFacade; + this.clockOut = withNotice(async (sTask) => { + await this.obsidianFacade.editFile( + sTask.path, + (contents2) => replaceSTaskInFile( + contents2, + sTask, + toMarkdown(withActiveClockCompleted(sTask)) + ) + ); + }); + this.cancelClock = withNotice(async (sTask) => { + await this.obsidianFacade.editFile( + sTask.path, + (contents2) => replaceSTaskInFile( + contents2, + sTask, + toMarkdown(withoutActiveClock(sTask)) + ) + ); + }); + this.replaceSTaskUnderCursor = (newMarkdown) => { + const view = this.obsidianFacade.getActiveMarkdownView(); + const sTask = this.getSTaskUnderCursorFromLastView(); + view.editor.replaceRange( + newMarkdown, + locToEditorPosition(sTask.position.start), + locToEditorPosition(sTask.position.end) + ); + }; + this.getSTaskUnderCursorFromLastView = () => { + const sTask = this.dataviewFacade.getTaskFromCaretLocation( + this.obsidianFacade.getLastCaretLocation() + ); + (0, import_typed_assert2.isNotVoid)(sTask, "No task under cursor"); + return sTask; + }; + this.clockInUnderCursor = withNotice( + (0, import_fp5.flow)( + this.getSTaskUnderCursorFromLastView, + assertNoActiveClock, + withActiveClock, + toMarkdown, + this.replaceSTaskUnderCursor + ) + ); + this.clockOutUnderCursor = withNotice( + (0, import_fp5.flow)( + this.getSTaskUnderCursorFromLastView, + assertActiveClock, + withActiveClockCompleted, + toMarkdown, + this.replaceSTaskUnderCursor + ) + ); + this.cancelClockUnderCursor = withNotice( + (0, import_fp5.flow)( + this.getSTaskUnderCursorFromLastView, + assertActiveClock, + withoutActiveClock, + toMarkdown, + this.replaceSTaskUnderCursor + ) + ); + } +}; + +// src/ui/hooks/use-status-bar-widget.ts +var import_fp6 = __toESM(require_fp()); + +// src/global-store/current-time.ts +var currentTime = readable(window.moment(), (set2) => { + const interval = setInterval(() => { + set2(window.moment()); + }, 1e3); + return () => { + clearInterval(interval); + }; +}); +var isToday = derived( + currentTime, + ($currentTime) => (day) => $currentTime.isSame(day, "day") +); + +// src/util/ellipsis.ts +function ellipsis(input, limit) { + if (input.length <= limit) { + return input; + } + return input.substring(0, limit) + "..."; +} + +// src/ui/hooks/use-status-bar-widget.ts +function minutesToTimestamp(minutes2) { + return window.moment.utc(window.moment.duration(minutes2, "minutes").asMilliseconds()).format("HH:mm"); +} +function useStatusBarWidget({ tasksForToday }) { + return derived( + [tasksForToday, currentTime], + ([$tasksForToday, $currentTime]) => { + const currentItem = $tasksForToday.withTime.find( + (item) => item.startTime.isBefore($currentTime) && getEndTime(item).isAfter($currentTime) + ); + const nextItem = (0, import_fp6.sortBy)( + (task) => task.startMinutes, + $tasksForToday.withTime + ).find((task) => task.startTime.isAfter($currentTime)); + const widget = {}; + if (currentItem) { + const minutesFromStart = getDiffInMinutes( + currentItem.startTime, + $currentTime + ); + const percentageComplete = minutesFromStart / (currentItem.durationMinutes / 100); + const minutesLeft = getDiffInMinutes( + getEndTime(currentItem), + window.moment() + ); + const timeLeft = minutesToTimestamp(minutesLeft); + const text2 = ellipsis( + getFirstLine(currentItem.text), + statusBarTextLimit + ); + widget.current = { + percentageComplete: percentageComplete.toFixed(0), + timeLeft, + text: text2 + }; + } + if (nextItem) { + const minutesToNext = getDiffInMinutes( + $currentTime, + nextItem.startTime + ); + const timeToNext = minutesToTimestamp(minutesToNext); + const text2 = ellipsis(getFirstLine(nextItem.text), statusBarTextLimit); + widget.next = { + timeToNext, + text: text2 + }; + } + return widget; + } + ); +} + +// src/ui/components/status-bar-widget.svelte +function add_css(target) { + append_styles(target, "svelte-1grib6a", ".root.svelte-1grib6a{display:contents}"); +} +function create_else_block(ctx) { + let t2; + let if_block1_anchor; + let if_block0 = ( + /*showNow*/ + ctx[6] && /*current*/ + ctx[3] && create_if_block_3(ctx) + ); + let if_block1 = ( + /*showNext*/ + ctx[5] && /*next*/ + ctx[2] && create_if_block_2(ctx) + ); + return { + c() { + if (if_block0) + if_block0.c(); + t2 = space(); + if (if_block1) + if_block1.c(); + if_block1_anchor = empty(); + }, + m(target, anchor) { + if (if_block0) + if_block0.m(target, anchor); + insert(target, t2, anchor); + if (if_block1) + if_block1.m(target, anchor); + insert(target, if_block1_anchor, anchor); + }, + p(ctx2, dirty) { + if ( + /*showNow*/ + ctx2[6] && /*current*/ + ctx2[3] + ) { + if (if_block0) { + if_block0.p(ctx2, dirty); + } else { + if_block0 = create_if_block_3(ctx2); + if_block0.c(); + if_block0.m(t2.parentNode, t2); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + if ( + /*showNext*/ + ctx2[5] && /*next*/ + ctx2[2] + ) { + if (if_block1) { + if_block1.p(ctx2, dirty); + } else { + if_block1 = create_if_block_2(ctx2); + if_block1.c(); + if_block1.m(if_block1_anchor.parentNode, if_block1_anchor); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + }, + d(detaching) { + if (if_block0) + if_block0.d(detaching); + if (detaching) + detach(t2); + if (if_block1) + if_block1.d(detaching); + if (detaching) + detach(if_block1_anchor); + } + }; +} +function create_if_block_1(ctx) { + let span; + return { + c() { + span = element("span"); + span.textContent = "All done"; + attr(span, "class", "status-bar-item-segment"); + }, + m(target, anchor) { + insert(target, span, anchor); + }, + p: noop, + d(detaching) { + if (detaching) + detach(span); + } + }; +} +function create_if_block(ctx) { + let t2; + return { + c() { + t2 = text("\u{1F635} Error in Day Planner (click to see)"); + }, + m(target, anchor) { + insert(target, t2, anchor); + }, + p: noop, + d(detaching) { + if (detaching) + detach(t2); + } + }; +} +function create_if_block_3(ctx) { + let span; + let t0; + let t1_value = ( + /*current*/ + ctx[3].text + "" + ); + let t1; + let t2; + let t3_value = ( + /*current*/ + ctx[3].timeLeft + "" + ); + let t3; + let t4; + let t5; + let if_block_anchor; + function select_block_type_1(ctx2, dirty) { + if ( + /*progressIndicator*/ + ctx2[4] === "pie" + ) + return create_if_block_4; + if ( + /*progressIndicator*/ + ctx2[4] === "bar" + ) + return create_if_block_5; + } + let current_block_type = select_block_type_1(ctx, -1); + let if_block = current_block_type && current_block_type(ctx); + return { + c() { + span = element("span"); + t0 = text("Now: "); + t1 = text(t1_value); + t2 = text(" (-"); + t3 = text(t3_value); + t4 = text(")"); + t5 = space(); + if (if_block) + if_block.c(); + if_block_anchor = empty(); + attr(span, "class", "status-bar-item-segment"); + }, + m(target, anchor) { + insert(target, span, anchor); + append(span, t0); + append(span, t1); + append(span, t2); + append(span, t3); + append(span, t4); + insert(target, t5, anchor); + if (if_block) + if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + }, + p(ctx2, dirty) { + if (dirty & /*current*/ + 8 && t1_value !== (t1_value = /*current*/ + ctx2[3].text + "")) + set_data(t1, t1_value); + if (dirty & /*current*/ + 8 && t3_value !== (t3_value = /*current*/ + ctx2[3].timeLeft + "")) + set_data(t3, t3_value); + if (current_block_type === (current_block_type = select_block_type_1(ctx2, dirty)) && if_block) { + if_block.p(ctx2, dirty); + } else { + if (if_block) + if_block.d(1); + if_block = current_block_type && current_block_type(ctx2); + if (if_block) { + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } + }, + d(detaching) { + if (detaching) + detach(span); + if (detaching) + detach(t5); + if (if_block) { + if_block.d(detaching); + } + if (detaching) + detach(if_block_anchor); + } + }; +} +function create_if_block_5(ctx) { + let div1; + let div0; + return { + c() { + div1 = element("div"); + div0 = element("div"); + set_style( + div0, + "width", + /*current*/ + ctx[3].percentageComplete + "%" + ); + attr(div0, "class", "day-planner-progress-value"); + attr(div1, "class", "status-bar-item-segment day-planner-progress-bar"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + }, + p(ctx2, dirty) { + if (dirty & /*current*/ + 8) { + set_style( + div0, + "width", + /*current*/ + ctx2[3].percentageComplete + "%" + ); + } + }, + d(detaching) { + if (detaching) + detach(div1); + } + }; +} +function create_if_block_4(ctx) { + let div; + let div_data_value_value; + return { + c() { + div = element("div"); + attr(div, "class", "status-bar-item-segment progress-pie day-planner"); + attr(div, "data-value", div_data_value_value = /*current*/ + ctx[3].percentageComplete); + }, + m(target, anchor) { + insert(target, div, anchor); + }, + p(ctx2, dirty) { + if (dirty & /*current*/ + 8 && div_data_value_value !== (div_data_value_value = /*current*/ + ctx2[3].percentageComplete)) { + attr(div, "data-value", div_data_value_value); + } + }, + d(detaching) { + if (detaching) + detach(div); + } + }; +} +function create_if_block_2(ctx) { + let span; + let t0; + let t1_value = ( + /*next*/ + ctx[2].text + "" + ); + let t1; + let t2; + let t3_value = ( + /*next*/ + ctx[2].timeToNext + "" + ); + let t3; + let t4; + return { + c() { + span = element("span"); + t0 = text("Next: "); + t1 = text(t1_value); + t2 = text(" (in "); + t3 = text(t3_value); + t4 = text(")"); + attr(span, "class", "status-bar-item-segment"); + }, + m(target, anchor) { + insert(target, span, anchor); + append(span, t0); + append(span, t1); + append(span, t2); + append(span, t3); + append(span, t4); + }, + p(ctx2, dirty) { + if (dirty & /*next*/ + 4 && t1_value !== (t1_value = /*next*/ + ctx2[2].text + "")) + set_data(t1, t1_value); + if (dirty & /*next*/ + 4 && t3_value !== (t3_value = /*next*/ + ctx2[2].timeToNext + "")) + set_data(t3, t3_value); + }, + d(detaching) { + if (detaching) + detach(span); + } + }; +} +function create_fragment(ctx) { + let div; + let mounted; + let dispose; + function select_block_type(ctx2, dirty) { + if ( + /*$errorStore*/ + ctx2[7] + ) + return create_if_block; + if (!/*current*/ + ctx2[3] && !/*next*/ + ctx2[2]) + return create_if_block_1; + return create_else_block; + } + let current_block_type = select_block_type(ctx, -1); + let if_block = current_block_type(ctx); + return { + c() { + div = element("div"); + if_block.c(); + attr(div, "class", "root svelte-1grib6a"); + }, + m(target, anchor) { + insert(target, div, anchor); + if_block.m(div, null); + if (!mounted) { + dispose = listen(div, "click", function() { + if (is_function( + /*onClick*/ + ctx[0] + )) + ctx[0].apply(this, arguments); + }); + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + if (current_block_type === (current_block_type = select_block_type(ctx, dirty)) && if_block) { + if_block.p(ctx, dirty); + } else { + if_block.d(1); + if_block = current_block_type(ctx); + if (if_block) { + if_block.c(); + if_block.m(div, null); + } + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) + detach(div); + if_block.d(); + mounted = false; + dispose(); + } + }; +} +function instance($$self, $$props, $$invalidate) { + let showNow; + let showNext; + let progressIndicator; + let current2; + let next; + let $statusBarProps; + let $settings; + let $errorStore, $$unsubscribe_errorStore = noop, $$subscribe_errorStore = () => ($$unsubscribe_errorStore(), $$unsubscribe_errorStore = subscribe(errorStore, ($$value) => $$invalidate(7, $errorStore = $$value)), errorStore); + component_subscribe($$self, settings, ($$value) => $$invalidate(11, $settings = $$value)); + $$self.$$.on_destroy.push(() => $$unsubscribe_errorStore()); + let { onClick } = $$props; + let { tasksForToday } = $$props; + let { errorStore } = $$props; + $$subscribe_errorStore(); + const statusBarProps = useStatusBarWidget({ tasksForToday }); + component_subscribe($$self, statusBarProps, (value) => $$invalidate(10, $statusBarProps = value)); + $$self.$$set = ($$props2) => { + if ("onClick" in $$props2) + $$invalidate(0, onClick = $$props2.onClick); + if ("tasksForToday" in $$props2) + $$invalidate(9, tasksForToday = $$props2.tasksForToday); + if ("errorStore" in $$props2) + $$subscribe_errorStore($$invalidate(1, errorStore = $$props2.errorStore)); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*$settings*/ + 2048) { + $: + $$invalidate(6, { showNow, showNext, progressIndicator } = $settings, showNow, ($$invalidate(5, showNext), $$invalidate(11, $settings)), ($$invalidate(4, progressIndicator), $$invalidate(11, $settings))); + } + if ($$self.$$.dirty & /*$statusBarProps*/ + 1024) { + $: + $$invalidate(3, { current: current2, next } = $statusBarProps, current2, ($$invalidate(2, next), $$invalidate(10, $statusBarProps))); + } + }; + return [ + onClick, + errorStore, + next, + current2, + progressIndicator, + showNext, + showNow, + $errorStore, + statusBarProps, + tasksForToday, + $statusBarProps, + $settings + ]; +} +var Status_bar_widget = class extends SvelteComponent { + constructor(options) { + super(); + init( + this, + options, + instance, + create_fragment, + safe_not_equal, + { + onClick: 0, + tasksForToday: 9, + errorStore: 1 + }, + add_css + ); + } +}; +var status_bar_widget_default = Status_bar_widget; + +// src/ui/confirmation-modal.ts +var import_obsidian3 = require("obsidian"); +var ConfirmationModal = class extends import_obsidian3.Modal { + constructor(app, props) { + super(app); + const { cta, onAccept, text: text2, title } = props; + this.contentEl.createEl("h2", { text: title }); + this.contentEl.createEl("p", { text: text2 }); + this.contentEl.createDiv("day-planner-modal-buttons", (buttonsEl) => { + buttonsEl.createEl("button", { text: "Never mind" }).addEventListener("click", () => this.close()); + buttonsEl.createEl("button", { + cls: "mod-cta", + text: cta + }).addEventListener("click", async (e2) => { + await onAccept(e2); + this.close(); + }); + }); + } +}; + +// src/ui/release-notes-modal.ts +var import_obsidian4 = require("obsidian"); +var ReleaseNotesModal = class extends import_obsidian4.Modal { + constructor(plugin) { + super(plugin.app); + this.plugin = plugin; + } + async onOpen() { + this.titleEl.setText("Day Planner Release Notes"); + this.containerEl.addClass("day-planner-release-notes-modal"); + this.contentEl.createDiv({ cls: "support" }, async (el) => { + await import_obsidian4.MarkdownRenderer.render( + this.plugin.app, + supportBanner, + el, + "/", + this.plugin + ); + }); + this.contentEl.createDiv({ cls: "releases" }, async (el) => { + await import_obsidian4.MarkdownRenderer.render( + this.plugin.app, + "## 0.22.0\n\n### \u2728 New features\n\n- Default task status on creation is now configurable\n\n### \u{1F41E} Fixed issues\n\n- Fixed load failure when unable to read daily notes\n- Fixed console error on plugin load\n- Fixed moving tasks to non-existent daily notes\n- Fixed active day in week not changing on next day\n- No more note switching when navigating between days from timeline view\n\n## 0.21.1\n\n### \u2728 New features\n\n- Drag-and-drop edits are now working on mobile: long-press on a task block to see the controls, tap on the control and start dragging to change task time\n- Added floating edit controls on top of task blocks. All the edit modes are now easily available\n- Now you can change task start time\n- There is now a new edit mode: move block and shrink neighboring blocks\n- Now you can manually adjust the height of the unscheduled tasks section through drag-and-drop\n\n### \u{1F41E} Fixed issues\n\n- Fixed empty remote event names breaking the plugin (#430)\n- Fixed advanced editing with Ctrl/Shift not working (#462). To do advanced edits, simply hover over the block, then over the edit controls\n\n## 0.20.1 - 0.20.4\n\n- \u{1F41E} add toggle to disable release notes (#399)\n- \u{1F41E} do not reset timeline position when it's already open (#289)\n- \u{1F41E} do not replace tab content when opening weekly view (#313)\n- \u{1F41E} fix status bar error breaking plugin\n- \u{1F41E} Move task on copy, instead of changing its size\n- \u{1F41E} Fix different hourglass emoji breaking task movement\n- \u{1F41E} Fix calendar events without a location crashes plugin (#438, thanks, @sepatel)\n- \u{1F41E} Do not print undefined inside checkbox when list item is not a task (#368, thanks, @Gelio)\n- \u{1F41E} AM/PM doesn't match unexpectedly anymore (#312, thanks, @teisermann)\n\n## 0.20.0\n\n### New features\n\n- \u2728 Color coding: you can define background color for blocks containing certain text in first line\n- \u2728 Weekly view now displays unscheduled tasks on top\n- \u2728 Advanced drag-and-drop editing does not require modifier keys any more, you pick current edit mode in timeline controls \n\n### Fixed issues\n\n- \u{1F41E} Fixed scheduling tasks for other days than today (by @Lunkle)\n- \u{1F41E} Pointer to current time is now more visible \n- \u{1F41E} Task summary in internet calendars is now displayed next to calendar name, to make it visible in short blocks\n\n## 0.19.1 - 0.19.6\n\n- \u{1F41E} Fix iOS crash\n- \u{1F41E} Fix performance on startup\n- \u{1F41E} Fix colorful timeline both for local & remote calendars\n- \u{1F41E} Fix planner not reacting to daily note creation\n- \u{1F41E} Fix displaying hover preview\n\n## 0.19.0\n\n### \u2728 New Feature: Internet Calendar Sync (Google, Outlook, iCloud)\n\n- This lets you display events from calendars like Google Calendar, iCloud Calendar, Outlook Calendar\n- You only need to add a link in the plugin settings to start displaying events from that calendar\n\nSee [README](https://github.com/ivan-lednev/obsidian-day-planner?tab=readme-ov-file#showing-internet-calendars) for details.\n\n## 0.18.0\n\n### \u2728 New features\n\n- Now hovering over a task with `Control` pressed will trigger a preview pop-up. This works great with the awesome [Hover Editor plugin](https://github.com/nothingislost/obsidian-hover-editor)\n- Now when you click on a task, if there is an open tab for that file, the plugin is going to reuse it\n\n## 0.17.2\n\n### \u{1F41E} Fixed issues\n\n- Fix creating tasks with drag-and-drop\n\n## 0.17.0\n\n### \u{1F4A5} Breaking changes\n\n- Now by default, if your Dataview souce filter is empty, tasks are pulled only from visible daily notes\n - Most people never touch this field, so the plugin is going to be lightning-fast by default\n - If you want to add other folders or tags as task sources, you can still do so by adding them explicitly\n\n### \u2728 New features\n\n- When dragging tasks from daily notes across days in the weekly view, they now get moved across files\n- There is now an option to hide completed tasks from timeline\n- There is now an option to hide subtasks from task blocks in the timeline\n\n### \u{1F41E} Fixed issues\n\n- New drag-and-drop operations can now be started immediately after previous ones\n- The plugin is much faster in the default use case (daily notes only)\n- You can use plain list items in daily notes again\n- Notifications work again\n- Unscheduled tasks now fit their contents\n\n### Acknowledgements\n\n- Big thanks to @weph for helping me figure out a good performance solution\n", + el, + "/", + this.plugin + ); + }); + } +}; + +// src/ui/settings-tab.ts +var import_obsidian5 = require("obsidian"); +var DayPlannerSettingsTab = class extends import_obsidian5.PluginSettingTab { + constructor(plugin, settingsStore) { + super(plugin.app, plugin); + this.plugin = plugin; + this.settingsStore = settingsStore; + } + display() { + const { containerEl } = this; + containerEl.empty(); + new import_obsidian5.Setting(containerEl).setName("Show release notes after update").addToggle( + (toggle) => toggle.setValue(this.plugin.settings().releaseNotes).onChange((value) => { + this.update({ releaseNotes: value }); + }) + ); + new import_obsidian5.Setting(containerEl).setName("Default task status on creation").setDesc( + "You can use custom statuses for more advanced workflows. E.g.: '- [>] Task'" + ).addText( + (el) => el.setPlaceholder("Empty").setValue(this.plugin.settings().taskStatusOnCreation).onChange((value) => { + this.settingsStore.update((previous) => { + const newValue = value.length > 0 ? value.substring(0, 1) : " "; + return { + ...previous, + taskStatusOnCreation: newValue + }; + }); + }) + ); + new import_obsidian5.Setting(containerEl).setName("Round time to minutes").setDesc("While editing, tasks are going to get rounded to this number").addSlider( + (slider) => slider.setLimits(5, 20, 5).setValue(this.plugin.settings().snapStepMinutes).setDynamicTooltip().onChange((value) => { + this.update({ snapStepMinutes: value }); + }) + ); + new import_obsidian5.Setting(containerEl).setName("Task Notification").setDesc("Display a notification when a new task is started").addToggle( + (toggle) => toggle.setValue(this.plugin.settings().showTaskNotification).onChange((value) => { + this.update({ showTaskNotification: value }); + }) + ); + new import_obsidian5.Setting(containerEl).setName("Timeline Zoom Level").setDesc( + "The zoom level to display the timeline. The higher the number, the more vertical space each task will take up." + ).addSlider( + (slider) => { + var _a; + return slider.setLimits(1, 5, 1).setValue((_a = Number(this.plugin.settings().zoomLevel)) != null ? _a : 4).setDynamicTooltip().onChange((value) => { + this.update({ zoomLevel: value }); + }); + } + ); + new import_obsidian5.Setting(containerEl).setName("Timeline Icon").setDesc( + "The icon of the timeline pane. Reopen timeline pane or restart obsidian to see the change." + ).addDropdown((dropdown) => { + var _a; + icons.forEach((icon) => dropdown.addOption(icon, icon)); + return dropdown.setValue( + (_a = this.plugin.settings().timelineIcon) != null ? _a : "calendar-with-checkmark" + ).onChange((value) => { + this.update({ timelineIcon: value }); + }); + }); + new import_obsidian5.Setting(containerEl).setName("Start Hour").setDesc("The planner is going to start at this hour each day").addDropdown( + (component) => component.addOptions({ + "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" + }).setValue(String(this.plugin.settings().startHour)).onChange((value) => { + const asNumber = Number(value); + this.update({ startHour: asNumber }); + }) + ); + new import_obsidian5.Setting(containerEl).setName("Center the Pointer in the Timeline View").setDesc( + "Should the pointer continuously get scrolled to the center of the view" + ).addToggle((component) => { + component.setValue(this.plugin.settings().centerNeedle).onChange((value) => { + this.update({ centerNeedle: value }); + }); + }); + containerEl.createEl("h2", { text: "Remote calendars" }); + this.plugin.settings().icals.map( + (ical2, index) => new import_obsidian5.Setting(containerEl).setName(`Calendar ${index + 1}`).addColorPicker( + (el) => ( + // todo: replace with immer + el.setValue(ical2.color).onChange((value) => { + this.settingsStore.update((previous) => ({ + ...previous, + icals: previous.icals.map( + (editedIcal, editedIndex) => editedIndex === index ? { ...editedIcal, color: value } : editedIcal + ) + })); + }) + ) + ).addText( + (el) => el.setPlaceholder("Displayed name").setValue(ical2.name).onChange((value) => { + this.settingsStore.update((previous) => ({ + ...previous, + icals: previous.icals.map( + (editedIcal, editedIndex) => editedIndex === index ? { ...editedIcal, name: value } : editedIcal + ) + })); + }) + ).addText( + (el) => el.setPlaceholder("URL").setValue(ical2.url).onChange((value) => { + this.settingsStore.update((previous) => ({ + ...previous, + icals: previous.icals.map( + (editedIcal, editedIndex) => editedIndex === index ? { ...editedIcal, url: value } : editedIcal + ) + })); + }) + ).addExtraButton( + (el) => el.setIcon("trash").setTooltip("Delete calendar").onClick(() => { + this.settingsStore.update((previous) => ({ + ...previous, + icals: previous.icals.filter( + (editedIcal, editedIndex) => editedIndex !== index + ) + })); + this.display(); + }) + ) + ); + new import_obsidian5.Setting(containerEl).addButton( + (el) => el.setButtonText("Add remote calendar").onClick(() => { + const newIcal = { + name: "", + url: "", + color: "#ffffff" + }; + this.settingsStore.update((previous) => ({ + ...previous, + icals: [...previous.icals, newIcal] + })); + this.display(); + }) + ); + containerEl.createEl("h2", { text: "Date & Time Formats" }); + new import_obsidian5.Setting(containerEl).setName("Hour format").then((component) => { + component.setDesc( + createFragment((fragment) => { + fragment.appendText( + "This is the format used in the time ruler. Use 'H' for 24 hours; use 'h' for 12 hours. Your current syntax looks like this: " + ); + component.addMomentFormat( + (momentFormat) => momentFormat.setValue(this.plugin.settings().hourFormat).setSampleEl(fragment.createSpan()).onChange((value) => { + this.update({ hourFormat: value.trim() }); + }) + ); + fragment.append( + createEl("br"), + createEl( + "a", + { + text: "format reference", + href: "https://momentjs.com/docs/#/displaying/format/" + }, + (a2) => { + a2.setAttr("target", "_blank"); + } + ) + ); + }) + ); + }); + new import_obsidian5.Setting(containerEl).setName("Default timestamp format").then((component) => { + component.setDesc( + createFragment((fragment) => { + fragment.appendText( + "When you create or edit tasks with drag-and-drop, the plugin use this format. Use 'HH:mm' for 24 hours; use 'hh:mm' for 12 hours. Your current syntax looks like this: " + ); + component.addMomentFormat( + (momentFormat) => momentFormat.setValue(this.plugin.settings().timestampFormat).setSampleEl(fragment.createSpan()).onChange((value) => { + this.update({ timestampFormat: value.trim() }); + }) + ); + fragment.append( + createEl("br"), + createEl( + "a", + { + text: "format reference", + href: "https://momentjs.com/docs/#/displaying/format/" + }, + (a2) => { + a2.setAttr("target", "_blank"); + } + ) + ); + }) + ); + }); + new import_obsidian5.Setting(containerEl).setName("Date Format in Timeline Header").then((component) => { + component.setDesc( + createFragment((fragment) => { + fragment.appendText("Your current syntax looks like this: "); + component.addMomentFormat( + (momentFormat) => momentFormat.setValue(this.plugin.settings().timelineDateFormat).setSampleEl(fragment.createSpan()).onChange((value) => { + this.update({ timelineDateFormat: value }); + }) + ); + fragment.append( + createEl("br"), + createEl( + "a", + { + text: "format reference", + href: "https://momentjs.com/docs/#/displaying/format/" + }, + (a2) => { + a2.setAttr("target", "_blank"); + } + ) + ); + }) + ); + }); + containerEl.createEl("h2", { text: "Planner Heading" }); + new import_obsidian5.Setting(containerEl).setName("Planner Heading Text").setDesc( + `When you create a planner, this text is going to be in the heading` + ).addText( + (component) => component.setValue(this.plugin.settings().plannerHeading).onChange((value) => { + this.update({ plannerHeading: value }); + }) + ); + new import_obsidian5.Setting(containerEl).setName("Planner heading level").setDesc( + "When you create a planner in a file, this level of heading is going to be used" + ).addSlider( + (component) => component.setLimits(1, 6, 1).setDynamicTooltip().setValue(this.plugin.settings().plannerHeadingLevel).onChange((value) => { + this.update({ plannerHeadingLevel: value }); + }) + ); + containerEl.createEl("h2", { text: "Status bar widget" }); + new import_obsidian5.Setting(containerEl).setName("Show active task").addToggle( + (toggle) => toggle.setValue(this.plugin.settings().showNow).onChange((value) => { + this.update({ showNow: value }); + }) + ); + new import_obsidian5.Setting(containerEl).setName("Show upcoming task").addToggle( + (toggle) => toggle.setValue(this.plugin.settings().showNext).onChange((value) => { + this.update({ showNext: value }); + }) + ); + new import_obsidian5.Setting(containerEl).setName("Current task progress indicator").addDropdown( + (component) => component.addOptions({ + bar: "bar", + pie: "pie", + none: "none" + }).setValue(String(this.plugin.settings().progressIndicator)).onChange((value) => { + this.update({ + progressIndicator: value + }); + }) + ); + containerEl.createEl("h2", { text: "Task decoration" }); + new import_obsidian5.Setting(containerEl).setName("Show a timestamp next to task text in timeline").addToggle((component) => { + component.setValue(this.plugin.settings().showTimestampInTaskBlock).onChange((value) => { + this.update({ showTimestampInTaskBlock: value }); + }); + }); + containerEl.createEl("h2", { text: "Duration" }); + new import_obsidian5.Setting(containerEl).setName("Stretch task until next one in timeline if it has no end time").setDesc( + 'By "no end time" we mean "- [ ] 10:00 Wake up" instead of "- [ ] 10:00 - 11:00 Wake up"' + ).addToggle((component) => { + component.setValue(this.plugin.settings().extendDurationUntilNext).onChange((value) => { + this.update({ extendDurationUntilNext: value }); + }); + }); + new import_obsidian5.Setting(containerEl).setName("Default task duration").setDesc( + "Used when you create a task with drag-and-drop & when you don't specify an end time" + ).addSlider( + (slider) => slider.setLimits(20, 120, 10).setValue(Number(this.plugin.settings().defaultDurationMinutes)).setDynamicTooltip().onChange((value) => { + this.update({ defaultDurationMinutes: value }); + }) + ); + containerEl.createEl("h2", { text: "Color blocking" }); + containerEl.createEl("p", { + text: `Define a background color for a block containing some text (it might be a tag, like '#important'). The first color is for light mode, the second is for dark mode.` + }); + this.plugin.settings().colorOverrides.map( + (colorOverride, index) => new import_obsidian5.Setting(containerEl).setName(`Color ${index + 1}`).addColorPicker( + (el) => ( + // todo: replace with immer + el.setValue(colorOverride.color).onChange((value) => { + this.settingsStore.update((previous) => ({ + ...previous, + colorOverrides: previous.colorOverrides.map( + (editedOverride, editedIndex) => editedIndex === index ? { ...editedOverride, color: value } : editedOverride + ) + })); + }) + ) + ).addColorPicker( + (el) => ( + // todo: replace with immer + el.setValue(colorOverride.darkModeColor).onChange((value) => { + this.settingsStore.update((previous) => ({ + ...previous, + colorOverrides: previous.colorOverrides.map( + (editedOverride, editedIndex) => editedIndex === index ? { ...editedOverride, darkModeColor: value } : editedOverride + ) + })); + }) + ) + ).addText( + (el) => el.setPlaceholder("Text").setValue(colorOverride.text).onChange((value) => { + this.settingsStore.update((previous) => ({ + ...previous, + colorOverrides: previous.colorOverrides.map( + (editedOverride, editedIndex) => editedIndex === index ? { ...editedOverride, text: value } : editedOverride + ) + })); + }) + ).addExtraButton( + (el) => el.setIcon("trash").setTooltip("Delete color override").onClick(() => { + this.settingsStore.update((previous) => ({ + ...previous, + colorOverrides: previous.colorOverrides.filter( + (editedOverride, editedIndex) => editedIndex !== index + ) + })); + this.display(); + }) + ) + ); + new import_obsidian5.Setting(containerEl).addButton( + (el) => el.setButtonText("Add color override").onClick(() => { + const newOverride = { + text: "#important", + darkModeColor: "#6e3737", + color: "#ffa1a1" + }; + this.settingsStore.update((previous) => ({ + ...previous, + colorOverrides: [...previous.colorOverrides, newOverride] + })); + this.display(); + }) + ); + containerEl.createEl("h2", { text: "Colorful Timeline" }); + new import_obsidian5.Setting(containerEl).setName("Enable Colorful Timeline").setDesc( + "If the planner timeline should be monochrome or color tasks based on time of day" + ).addToggle((component) => { + component.setValue(this.plugin.settings().timelineColored).onChange((value) => { + this.update({ timelineColored: value }); + }); + }); + new import_obsidian5.Setting(containerEl).setName("Colorful Timeline - Start Color").addColorPicker((component) => { + component.setValue(this.plugin.settings().timelineStartColor).onChange((value) => { + this.update({ timelineStartColor: value }); + }); + }); + new import_obsidian5.Setting(containerEl).setName("Colorful Timeline - End Color").addColorPicker((component) => { + component.setValue(this.plugin.settings().timelineEndColor).onChange((value) => { + this.update({ timelineEndColor: value }); + }); + }); + } + update(patch) { + this.settingsStore.update((previous) => ({ ...previous, ...patch })); + } +}; + +// src/ui/timeline-view.ts +var import_obsidian8 = require("obsidian"); + +// src/util/handle-active-leaf-change.ts +var import_obsidian6 = require("obsidian"); +var import_obsidian_daily_notes_interface6 = __toESM(require_main()); +function handleActiveLeafChange(leaf, timelineDateRange) { + var _a; + if (!((leaf == null ? void 0 : leaf.view) instanceof import_obsidian6.FileView) || !(leaf == null ? void 0 : leaf.view.file)) { + return; + } + const dayUserSwitchedTo = (0, import_obsidian_daily_notes_interface6.getDateFromFile)(leaf.view.file, "day"); + if ((dayUserSwitchedTo == null ? void 0 : dayUserSwitchedTo.isSame((_a = get_store_value(timelineDateRange)) == null ? void 0 : _a[0], "day")) || !dayUserSwitchedTo) { + return; + } + timelineDateRange.set([dayUserSwitchedTo]); +} + +// src/ui/components/timeline-with-controls.svelte +var import_moment12 = __toESM(require_moment()); + +// src/global-store/derived-settings.ts +function getHourSize(settings2) { + return settings2.zoomLevel * 60; +} +function getHiddenHoursSize(settings2) { + return settings2.startHour * getHourSize(settings2); +} +function getVisibleHours(settings2) { + return [...Array(24).keys()].slice(settings2.startHour); +} +function timeToTimelineOffset(minutes2, settings2) { + return minutes2 * settings2.zoomLevel - getHiddenHoursSize(settings2); +} +function snap(coords, { zoomLevel, snapStepMinutes }) { + return coords - coords % (snapStepMinutes * zoomLevel); +} + +// src/ui/actions/styled-cursor.ts +function styledCursor(el, cursor) { + const initial = el.style.cursor; + el.style.cursor = cursor; + return { + update(newCursor) { + el.style.cursor = newCursor || initial; + }, + destroy() { + el.style.cursor = initial; + } + }; +} + +// src/ui/components/global-handlers.svelte +function create_fragment2(ctx) { + let styledCursor_action; + let t2; + let mounted; + let dispose; + return { + c() { + t2 = space(); + }, + m(target, anchor) { + insert(target, t2, anchor); + if (!mounted) { + dispose = [ + listen( + window, + "blur", + /*cancelEdit*/ + ctx[1] + ), + action_destroyer(styledCursor_action = styledCursor.call( + null, + document.body, + /*$cursor*/ + ctx[0].bodyCursor + )), + listen( + document, + "pointerup", + /*cancelEdit*/ + ctx[1] + ) + ]; + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (styledCursor_action && is_function(styledCursor_action.update) && dirty & /*$cursor*/ + 1) + styledCursor_action.update.call( + null, + /*$cursor*/ + ctx2[0].bodyCursor + ); + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) + detach(t2); + mounted = false; + run_all(dispose); + } + }; +} +function instance2($$self, $$props, $$invalidate) { + let $cursor; + const { editContext: { cancelEdit, cursor } } = getContext(obsidianContext); + component_subscribe($$self, cursor, (value) => $$invalidate(0, $cursor = value)); + return [$cursor, cancelEdit, cursor]; +} +var Global_handlers = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance2, create_fragment2, safe_not_equal, {}); + } +}; +var global_handlers_default = Global_handlers; + +// src/ui/components/resize-handle.svelte +function add_css2(target) { + append_styles(target, "svelte-4a85j2", ":not(#dummy).workspace-leaf-resize-handle.svelte-4a85j2{cursor:row-resize;right:0;bottom:0;left:0;height:var(--divider-width-hover);border-bottom-width:var(--divider-width)}"); +} +function create_fragment3(ctx) { + let hr; + let mounted; + let dispose; + return { + c() { + hr = element("hr"); + attr(hr, "class", "workspace-leaf-resize-handle svelte-4a85j2"); + set_style( + hr, + "display", + /*visible*/ + ctx[0] ? "block" : "none" + ); + }, + m(target, anchor) { + insert(target, hr, anchor); + if (!mounted) { + dispose = listen( + hr, + "mousedown", + /*mousedown_handler*/ + ctx[1] + ); + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (dirty & /*visible*/ + 1) { + set_style( + hr, + "display", + /*visible*/ + ctx2[0] ? "block" : "none" + ); + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) + detach(hr); + mounted = false; + dispose(); + } + }; +} +function instance3($$self, $$props, $$invalidate) { + let { visible = true } = $$props; + function mousedown_handler(event) { + bubble.call(this, $$self, event); + } + $$self.$$set = ($$props2) => { + if ("visible" in $$props2) + $$invalidate(0, visible = $$props2.visible); + }; + return [visible, mousedown_handler]; +} +var Resize_handle = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance3, create_fragment3, safe_not_equal, { visible: 0 }, add_css2); + } +}; +var resize_handle_default = Resize_handle; + +// src/ui/components/resizeable-box.svelte +var get_default_slot_changes = (dirty) => ({}); +var get_default_slot_context = (ctx) => ({ startEdit: ( + /*startEdit*/ + ctx[3] +) }); +function create_fragment4(ctx) { + let t2; + let div; + let current2; + let mounted; + let dispose; + const default_slot_template = ( + /*#slots*/ + ctx[9].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[8], + get_default_slot_context + ); + return { + c() { + t2 = space(); + div = element("div"); + if (default_slot) + default_slot.c(); + attr( + div, + "class", + /*classNames*/ + ctx[0] + ); + set_style( + div, + "height", + /*height*/ + ctx[2] + ); + set_style(div, "max-height", `25vh`); + }, + m(target, anchor) { + insert(target, t2, anchor); + insert(target, div, anchor); + if (default_slot) { + default_slot.m(div, null); + } + ctx[10](div); + current2 = true; + if (!mounted) { + dispose = [ + listen( + window, + "blur", + /*handleBlur*/ + ctx[5] + ), + listen( + document, + "mousemove", + /*handleMouseMove*/ + ctx[6] + ), + listen( + document, + "pointerup", + /*stopEdit*/ + ctx[4], + true + ) + ]; + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 256)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[8], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[8] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[8], + dirty, + get_default_slot_changes + ), + get_default_slot_context + ); + } + } + if (!current2 || dirty & /*classNames*/ + 1) { + attr( + div, + "class", + /*classNames*/ + ctx2[0] + ); + } + if (dirty & /*height*/ + 4) { + set_style( + div, + "height", + /*height*/ + ctx2[2] + ); + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(t2); + if (detaching) + detach(div); + if (default_slot) + default_slot.d(detaching); + ctx[10](null); + mounted = false; + run_all(dispose); + } + }; +} +function instance4($$self, $$props, $$invalidate) { + let height; + let { $$slots: slots = {}, $$scope } = $$props; + let { classNames = "" } = $$props; + let el; + let customHeight = 0; + let editingHeight = false; + function startEdit() { + editingHeight = true; + } + function stopEdit(event) { + if (!editingHeight) { + return; + } + event.stopPropagation(); + editingHeight = false; + } + function handleBlur() { + editingHeight = false; + } + function handleMouseMove(event) { + if (!editingHeight) { + return; + } + const viewportToElOffsetY = el.getBoundingClientRect().top; + $$invalidate(7, customHeight = event.clientY - viewportToElOffsetY); + } + function div_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + el = $$value; + $$invalidate(1, el); + }); + } + $$self.$$set = ($$props2) => { + if ("classNames" in $$props2) + $$invalidate(0, classNames = $$props2.classNames); + if ("$$scope" in $$props2) + $$invalidate(8, $$scope = $$props2.$$scope); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*customHeight*/ + 128) { + $: + $$invalidate(2, height = customHeight === 0 ? "auto" : `${customHeight}px`); + } + }; + return [ + classNames, + el, + height, + startEdit, + stopEdit, + handleBlur, + handleMouseMove, + customHeight, + $$scope, + slots, + div_binding + ]; +} +var Resizeable_box = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance4, create_fragment4, safe_not_equal, { classNames: 0 }); + } +}; +var resizeable_box_default = Resizeable_box; + +// src/ui/components/ruler.svelte +function add_css3(target) { + append_styles(target, "svelte-9a769u", ".hours-container.svelte-9a769u{position:sticky;z-index:5;left:0;display:flex;flex:0 0 30px;flex-direction:column;background-color:var(--background-primary);border-right:1px solid var(--background-modifier-border);box-shadow:var(--ruler-box-shadow, none)\n }.hour.svelte-9a769u{display:flex;flex:1 0 0;border-bottom:1px solid var(--background-modifier-border)}.hour-number-container.svelte-9a769u{display:flex;flex:0 0 30px;align-self:flex-start;justify-content:center;font-size:var(--nav-item-size);color:var(--text-muted)}"); +} +function get_each_context(ctx, list, i2) { + const child_ctx = ctx.slice(); + child_ctx[2] = list[i2]; + return child_ctx; +} +function create_each_block(ctx) { + let div1; + let div0; + let t0_value = hoursToMoment( + /*hour*/ + ctx[2] + ).format( + /*$settings*/ + ctx[1].hourFormat + ) + ""; + let t0; + let t1; + let style_height = `${getHourSize( + /*$settings*/ + ctx[1] + )}px`; + return { + c() { + div1 = element("div"); + div0 = element("div"); + t0 = text(t0_value); + t1 = space(); + attr(div0, "class", "hour-number-container svelte-9a769u"); + attr(div1, "class", "hour svelte-9a769u"); + set_style(div1, "height", style_height); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + append(div0, t0); + append(div1, t1); + }, + p(ctx2, dirty) { + if (dirty & /*visibleHours, $settings*/ + 3 && t0_value !== (t0_value = hoursToMoment( + /*hour*/ + ctx2[2] + ).format( + /*$settings*/ + ctx2[1].hourFormat + ) + "")) + set_data(t0, t0_value); + if (dirty & /*$settings*/ + 2 && style_height !== (style_height = `${getHourSize( + /*$settings*/ + ctx2[1] + )}px`)) { + set_style(div1, "height", style_height); + } + }, + d(detaching) { + if (detaching) + detach(div1); + } + }; +} +function create_fragment5(ctx) { + let div; + let each_value = ( + /*visibleHours*/ + ctx[0] + ); + let each_blocks = []; + for (let i2 = 0; i2 < each_value.length; i2 += 1) { + each_blocks[i2] = create_each_block(get_each_context(ctx, each_value, i2)); + } + return { + c() { + div = element("div"); + for (let i2 = 0; i2 < each_blocks.length; i2 += 1) { + each_blocks[i2].c(); + } + attr(div, "class", "hours-container svelte-9a769u"); + }, + m(target, anchor) { + insert(target, div, anchor); + for (let i2 = 0; i2 < each_blocks.length; i2 += 1) { + if (each_blocks[i2]) { + each_blocks[i2].m(div, null); + } + } + }, + p(ctx2, [dirty]) { + if (dirty & /*getHourSize, $settings, hoursToMoment, visibleHours*/ + 3) { + each_value = /*visibleHours*/ + ctx2[0]; + let i2; + for (i2 = 0; i2 < each_value.length; i2 += 1) { + const child_ctx = get_each_context(ctx2, each_value, i2); + if (each_blocks[i2]) { + each_blocks[i2].p(child_ctx, dirty); + } else { + each_blocks[i2] = create_each_block(child_ctx); + each_blocks[i2].c(); + each_blocks[i2].m(div, null); + } + } + for (; i2 < each_blocks.length; i2 += 1) { + each_blocks[i2].d(1); + } + each_blocks.length = each_value.length; + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) + detach(div); + destroy_each(each_blocks, detaching); + } + }; +} +function instance5($$self, $$props, $$invalidate) { + let $settings; + component_subscribe($$self, settings, ($$value) => $$invalidate(1, $settings = $$value)); + let { visibleHours } = $$props; + $$self.$$set = ($$props2) => { + if ("visibleHours" in $$props2) + $$invalidate(0, visibleHours = $$props2.visibleHours); + }; + return [visibleHours, $settings]; +} +var Ruler = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance5, create_fragment5, safe_not_equal, { visibleHours: 0 }, add_css3); + } +}; +var ruler_default = Ruler; + +// src/ui/components/scroller.svelte +function add_css4(target) { + append_styles(target, "svelte-126njqy", ".scroller.svelte-126njqy{overflow:auto;flex:1 0 0;background-color:var(--background-secondary)}.stretcher.svelte-126njqy{display:flex}"); +} +var get_default_slot_changes2 = (dirty) => ({ hovering: dirty & /*hovering*/ +1 }); +var get_default_slot_context2 = (ctx) => ({ hovering: ( + /*hovering*/ + ctx[0] +) }); +function create_fragment6(ctx) { + let div1; + let div0; + let current2; + let mounted; + let dispose; + const default_slot_template = ( + /*#slots*/ + ctx[4].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + get_default_slot_context2 + ); + return { + c() { + div1 = element("div"); + div0 = element("div"); + if (default_slot) + default_slot.c(); + attr(div0, "class", "stretcher svelte-126njqy"); + attr(div1, "class", "scroller svelte-126njqy"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + if (default_slot) { + default_slot.m(div0, null); + } + current2 = true; + if (!mounted) { + dispose = [ + listen( + div1, + "mouseenter", + /*handleMouseEnter*/ + ctx[1] + ), + listen( + div1, + "mouseleave", + /*handleMouseLeave*/ + ctx[2] + ), + listen( + div1, + "scroll", + /*scroll_handler*/ + ctx[5] + ) + ]; + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope, hovering*/ + 9)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + get_default_slot_changes2 + ), + get_default_slot_context2 + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(div1); + if (default_slot) + default_slot.d(detaching); + mounted = false; + run_all(dispose); + } + }; +} +function instance6($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + let hovering = false; + function handleMouseEnter() { + $$invalidate(0, hovering = true); + } + function handleMouseLeave() { + $$invalidate(0, hovering = false); + } + function scroll_handler(event) { + bubble.call(this, $$self, event); + } + $$self.$$set = ($$props2) => { + if ("$$scope" in $$props2) + $$invalidate(3, $$scope = $$props2.$$scope); + }; + return [hovering, handleMouseEnter, handleMouseLeave, $$scope, slots, scroll_handler]; +} +var Scroller = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance6, create_fragment6, safe_not_equal, {}, add_css4); + } +}; +var scroller_default = Scroller; + +// node_modules/tslib/tslib.es6.mjs +function __awaiter(thisArg, _arguments, P2, generator) { + function adopt(value) { + return value instanceof P2 ? value : new P2(function(resolve) { + resolve(value); + }); + } + return new (P2 || (P2 = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e2) { + reject(e2); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e2) { + reject(e2); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +// src/ui/components/timeline-controls.svelte +var import_fp7 = __toESM(require_fp()); + +// node_modules/lucide-svelte/dist/esm/defaultAttributes.js +var defaultAttributes = { + xmlns: "http://www.w3.org/2000/svg", + width: 24, + height: 24, + viewBox: "0 0 24 24", + fill: "none", + stroke: "currentColor", + "stroke-width": 2, + "stroke-linecap": "round", + "stroke-linejoin": "round" +}; + +// node_modules/lucide-svelte/dist/esm/Icon.svelte.js +function get_each_context2(ctx, list, i2) { + const child_ctx = ctx.slice(); + child_ctx[10] = list[i2][0]; + child_ctx[11] = list[i2][1]; + return child_ctx; +} +function create_dynamic_element(ctx) { + let svelte_element; + let svelte_element_levels = [ + /*attrs*/ + ctx[11] + ]; + let svelte_element_data = {}; + for (let i2 = 0; i2 < svelte_element_levels.length; i2 += 1) { + svelte_element_data = assign(svelte_element_data, svelte_element_levels[i2]); + } + return { + c() { + svelte_element = svg_element( + /*tag*/ + ctx[10] + ); + this.h(); + }, + l(nodes) { + svelte_element = claim_svg_element( + nodes, + /*tag*/ + ctx[10], + {} + ); + children(svelte_element).forEach(detach); + this.h(); + }, + h() { + set_svg_attributes(svelte_element, svelte_element_data); + }, + m(target, anchor) { + insert_hydration(target, svelte_element, anchor); + }, + p(ctx2, dirty) { + svelte_element_data = get_spread_update(svelte_element_levels, [dirty & /*iconNode*/ + 32 && /*attrs*/ + ctx2[11]]); + set_svg_attributes(svelte_element, svelte_element_data); + }, + d(detaching) { + if (detaching) + detach(svelte_element); + } + }; +} +function create_each_block2(ctx) { + let previous_tag = ( + /*tag*/ + ctx[10] + ); + let svelte_element_anchor; + let svelte_element = ( + /*tag*/ + ctx[10] && create_dynamic_element(ctx) + ); + return { + c() { + if (svelte_element) + svelte_element.c(); + svelte_element_anchor = empty(); + }, + l(nodes) { + if (svelte_element) + svelte_element.l(nodes); + svelte_element_anchor = empty(); + }, + m(target, anchor) { + if (svelte_element) + svelte_element.m(target, anchor); + insert_hydration(target, svelte_element_anchor, anchor); + }, + p(ctx2, dirty) { + if ( + /*tag*/ + ctx2[10] + ) { + if (!previous_tag) { + svelte_element = create_dynamic_element(ctx2); + svelte_element.c(); + svelte_element.m(svelte_element_anchor.parentNode, svelte_element_anchor); + } else if (safe_not_equal( + previous_tag, + /*tag*/ + ctx2[10] + )) { + svelte_element.d(1); + svelte_element = create_dynamic_element(ctx2); + svelte_element.c(); + svelte_element.m(svelte_element_anchor.parentNode, svelte_element_anchor); + } else { + svelte_element.p(ctx2, dirty); + } + } else if (previous_tag) { + svelte_element.d(1); + svelte_element = null; + } + previous_tag = /*tag*/ + ctx2[10]; + }, + d(detaching) { + if (detaching) + detach(svelte_element_anchor); + if (svelte_element) + svelte_element.d(detaching); + } + }; +} +function create_fragment7(ctx) { + var _a; + let svg; + let each_1_anchor; + let svg_stroke_width_value; + let svg_class_value; + let current2; + let each_value = ( + /*iconNode*/ + ctx[5] + ); + let each_blocks = []; + for (let i2 = 0; i2 < each_value.length; i2 += 1) { + each_blocks[i2] = create_each_block2(get_each_context2(ctx, each_value, i2)); + } + const default_slot_template = ( + /*#slots*/ + ctx[9].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[8], + null + ); + let svg_levels = [ + defaultAttributes, + /*$$restProps*/ + ctx[6], + { width: ( + /*size*/ + ctx[2] + ) }, + { height: ( + /*size*/ + ctx[2] + ) }, + { stroke: ( + /*color*/ + ctx[1] + ) }, + { + "stroke-width": svg_stroke_width_value = /*absoluteStrokeWidth*/ + ctx[4] ? Number( + /*strokeWidth*/ + ctx[3] + ) * 24 / Number( + /*size*/ + ctx[2] + ) : ( + /*strokeWidth*/ + ctx[3] + ) + }, + { + class: svg_class_value = `lucide-icon lucide lucide-${/*name*/ + ctx[0]} ${/*$$props*/ + (_a = ctx[7].class) != null ? _a : ""}` + } + ]; + let svg_data = {}; + for (let i2 = 0; i2 < svg_levels.length; i2 += 1) { + svg_data = assign(svg_data, svg_levels[i2]); + } + return { + c() { + svg = svg_element("svg"); + for (let i2 = 0; i2 < each_blocks.length; i2 += 1) { + each_blocks[i2].c(); + } + each_1_anchor = empty(); + if (default_slot) + default_slot.c(); + this.h(); + }, + l(nodes) { + svg = claim_svg_element(nodes, "svg", { + width: true, + height: true, + stroke: true, + "stroke-width": true, + class: true + }); + var svg_nodes = children(svg); + for (let i2 = 0; i2 < each_blocks.length; i2 += 1) { + each_blocks[i2].l(svg_nodes); + } + each_1_anchor = empty(); + if (default_slot) + default_slot.l(svg_nodes); + svg_nodes.forEach(detach); + this.h(); + }, + h() { + set_svg_attributes(svg, svg_data); + }, + m(target, anchor) { + insert_hydration(target, svg, anchor); + for (let i2 = 0; i2 < each_blocks.length; i2 += 1) { + each_blocks[i2].m(svg, null); + } + append_hydration(svg, each_1_anchor); + if (default_slot) { + default_slot.m(svg, null); + } + current2 = true; + }, + p(ctx2, [dirty]) { + var _a2; + if (dirty & /*iconNode*/ + 32) { + each_value = /*iconNode*/ + ctx2[5]; + let i2; + for (i2 = 0; i2 < each_value.length; i2 += 1) { + const child_ctx = get_each_context2(ctx2, each_value, i2); + if (each_blocks[i2]) { + each_blocks[i2].p(child_ctx, dirty); + } else { + each_blocks[i2] = create_each_block2(child_ctx); + each_blocks[i2].c(); + each_blocks[i2].m(svg, each_1_anchor); + } + } + for (; i2 < each_blocks.length; i2 += 1) { + each_blocks[i2].d(1); + } + each_blocks.length = each_value.length; + } + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 256)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[8], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[8] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[8], + dirty, + null + ), + null + ); + } + } + set_svg_attributes(svg, svg_data = get_spread_update(svg_levels, [ + defaultAttributes, + dirty & /*$$restProps*/ + 64 && /*$$restProps*/ + ctx2[6], + (!current2 || dirty & /*size*/ + 4) && { width: ( + /*size*/ + ctx2[2] + ) }, + (!current2 || dirty & /*size*/ + 4) && { height: ( + /*size*/ + ctx2[2] + ) }, + (!current2 || dirty & /*color*/ + 2) && { stroke: ( + /*color*/ + ctx2[1] + ) }, + (!current2 || dirty & /*absoluteStrokeWidth, strokeWidth, size*/ + 28 && svg_stroke_width_value !== (svg_stroke_width_value = /*absoluteStrokeWidth*/ + ctx2[4] ? Number( + /*strokeWidth*/ + ctx2[3] + ) * 24 / Number( + /*size*/ + ctx2[2] + ) : ( + /*strokeWidth*/ + ctx2[3] + ))) && { "stroke-width": svg_stroke_width_value }, + (!current2 || dirty & /*name, $$props*/ + 129 && svg_class_value !== (svg_class_value = `lucide-icon lucide lucide-${/*name*/ + ctx2[0]} ${/*$$props*/ + (_a2 = ctx2[7].class) != null ? _a2 : ""}`)) && { class: svg_class_value } + ])); + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(svg); + destroy_each(each_blocks, detaching); + if (default_slot) + default_slot.d(detaching); + } + }; +} +function instance7($$self, $$props, $$invalidate) { + const omit_props_names = ["name", "color", "size", "strokeWidth", "absoluteStrokeWidth", "iconNode"]; + let $$restProps = compute_rest_props($$props, omit_props_names); + let { $$slots: slots = {}, $$scope } = $$props; + let { name } = $$props; + let { color = "currentColor" } = $$props; + let { size: size2 = 24 } = $$props; + let { strokeWidth = 2 } = $$props; + let { absoluteStrokeWidth = false } = $$props; + let { iconNode } = $$props; + $$self.$$set = ($$new_props) => { + $$invalidate(7, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + $$invalidate(6, $$restProps = compute_rest_props($$props, omit_props_names)); + if ("name" in $$new_props) + $$invalidate(0, name = $$new_props.name); + if ("color" in $$new_props) + $$invalidate(1, color = $$new_props.color); + if ("size" in $$new_props) + $$invalidate(2, size2 = $$new_props.size); + if ("strokeWidth" in $$new_props) + $$invalidate(3, strokeWidth = $$new_props.strokeWidth); + if ("absoluteStrokeWidth" in $$new_props) + $$invalidate(4, absoluteStrokeWidth = $$new_props.absoluteStrokeWidth); + if ("iconNode" in $$new_props) + $$invalidate(5, iconNode = $$new_props.iconNode); + if ("$$scope" in $$new_props) + $$invalidate(8, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [ + name, + color, + size2, + strokeWidth, + absoluteStrokeWidth, + iconNode, + $$restProps, + $$props, + $$scope, + slots + ]; +} +var Icon = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance7, create_fragment7, safe_not_equal, { + name: 0, + color: 1, + size: 2, + strokeWidth: 3, + absoluteStrokeWidth: 4, + iconNode: 5 + }); + } +}; +var Icon$1 = Icon; + +// node_modules/lucide-svelte/dist/esm/icons/alert-triangle.svelte.js +function create_default_slot(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment8(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "alert-triangle" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance8($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z" + } + ], + ["path", { "d": "M12 9v4" }], + ["path", { "d": "M12 17h.01" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Alert_triangle = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance8, create_fragment8, safe_not_equal, {}); + } +}; +var Alert_triangle$1 = Alert_triangle; + +// node_modules/lucide-svelte/dist/esm/icons/arrow-down-to-line.svelte.js +function create_default_slot2(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment9(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "arrow-down-to-line" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot2] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance9($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "M12 17V3" }], + ["path", { "d": "m6 11 6 6 6-6" }], + ["path", { "d": "M19 21H5" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Arrow_down_to_line = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance9, create_fragment9, safe_not_equal, {}); + } +}; +var Arrow_down_to_line$1 = Arrow_down_to_line; + +// node_modules/lucide-svelte/dist/esm/icons/arrow-left-to-line.svelte.js +function create_default_slot3(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment10(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "arrow-left-to-line" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot3] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance10($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "M3 19V5" }], + ["path", { "d": "m13 6-6 6 6 6" }], + ["path", { "d": "M7 12h14" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Arrow_left_to_line = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance10, create_fragment10, safe_not_equal, {}); + } +}; +var Arrow_left_to_line$1 = Arrow_left_to_line; + +// node_modules/lucide-svelte/dist/esm/icons/arrow-left.svelte.js +function create_default_slot4(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment11(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "arrow-left" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot4] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance11($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [["path", { "d": "m12 19-7-7 7-7" }], ["path", { "d": "M19 12H5" }]]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Arrow_left = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance11, create_fragment11, safe_not_equal, {}); + } +}; +var Arrow_left$1 = Arrow_left; + +// node_modules/lucide-svelte/dist/esm/icons/arrow-right-to-line.svelte.js +function create_default_slot5(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment12(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "arrow-right-to-line" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot5] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance12($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "M17 12H3" }], + ["path", { "d": "m11 18 6-6-6-6" }], + ["path", { "d": "M21 5v14" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Arrow_right_to_line = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance12, create_fragment12, safe_not_equal, {}); + } +}; +var Arrow_right_to_line$1 = Arrow_right_to_line; + +// node_modules/lucide-svelte/dist/esm/icons/arrow-right.svelte.js +function create_default_slot6(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment13(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "arrow-right" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot6] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance13($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [["path", { "d": "M5 12h14" }], ["path", { "d": "m12 5 7 7-7 7" }]]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Arrow_right = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance13, create_fragment13, safe_not_equal, {}); + } +}; +var Arrow_right$1 = Arrow_right; + +// node_modules/lucide-svelte/dist/esm/icons/circle-dot.svelte.js +function create_default_slot7(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment14(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "circle-dot" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot7] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance14($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["circle", { "cx": "12", "cy": "12", "r": "10" }], + ["circle", { "cx": "12", "cy": "12", "r": "1" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Circle_dot = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance14, create_fragment14, safe_not_equal, {}); + } +}; +var Circle_dot$1 = Circle_dot; + +// node_modules/lucide-svelte/dist/esm/icons/copy.svelte.js +function create_default_slot8(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment15(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "copy" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot8] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance15($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "rect", + { + "width": "14", + "height": "14", + "x": "8", + "y": "8", + "rx": "2", + "ry": "2" + } + ], + [ + "path", + { + "d": "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" + } + ] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Copy = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance15, create_fragment15, safe_not_equal, {}); + } +}; +var Copy$1 = Copy; + +// node_modules/lucide-svelte/dist/esm/icons/file-input.svelte.js +function create_default_slot9(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment16(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "file-input" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot9] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance16($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4" + } + ], + ["polyline", { "points": "14 2 14 8 20 8" }], + ["path", { "d": "M2 15h10" }], + ["path", { "d": "m9 18 3-3-3-3" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var File_input = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance16, create_fragment16, safe_not_equal, {}); + } +}; +var File_input$1 = File_input; + +// node_modules/lucide-svelte/dist/esm/icons/filter-x.svelte.js +function create_default_slot10(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment17(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "filter-x" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot10] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance17($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "M13.013 3H2l8 9.46V19l4 2v-8.54l.9-1.055" + } + ], + ["path", { "d": "m22 3-5 5" }], + ["path", { "d": "m17 3 5 5" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Filter_x = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance17, create_fragment17, safe_not_equal, {}); + } +}; +var Filter_x$1 = Filter_x; + +// node_modules/lucide-svelte/dist/esm/icons/filter.svelte.js +function create_default_slot11(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment18(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "filter" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot11] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance18($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "polygon", + { + "points": "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3" + } + ] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Filter = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance18, create_fragment18, safe_not_equal, {}); + } +}; +var Filter$1 = Filter; + +// node_modules/lucide-svelte/dist/esm/icons/fold-vertical.svelte.js +function create_default_slot12(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment19(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "fold-vertical" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot12] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance19($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["path", { "d": "M12 22v-6" }], + ["path", { "d": "M12 8V2" }], + ["path", { "d": "M4 12H2" }], + ["path", { "d": "M10 12H8" }], + ["path", { "d": "M16 12h-2" }], + ["path", { "d": "M22 12h-2" }], + ["path", { "d": "m15 19-3-3-3 3" }], + ["path", { "d": "m15 5-3 3-3-3" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Fold_vertical = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance19, create_fragment19, safe_not_equal, {}); + } +}; +var Fold_vertical$1 = Fold_vertical; + +// node_modules/lucide-svelte/dist/esm/icons/grip-vertical.svelte.js +function create_default_slot13(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment20(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "grip-vertical" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot13] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance20($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["circle", { "cx": "9", "cy": "12", "r": "1" }], + ["circle", { "cx": "9", "cy": "5", "r": "1" }], + ["circle", { "cx": "9", "cy": "19", "r": "1" }], + ["circle", { "cx": "15", "cy": "12", "r": "1" }], + ["circle", { "cx": "15", "cy": "5", "r": "1" }], + ["circle", { "cx": "15", "cy": "19", "r": "1" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Grip_vertical = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance20, create_fragment20, safe_not_equal, {}); + } +}; +var Grip_vertical$1 = Grip_vertical; + +// node_modules/lucide-svelte/dist/esm/icons/info.svelte.js +function create_default_slot14(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment21(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "info" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot14] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance21($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["circle", { "cx": "12", "cy": "12", "r": "10" }], + ["path", { "d": "M12 16v-4" }], + ["path", { "d": "M12 8h.01" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Info = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance21, create_fragment21, safe_not_equal, {}); + } +}; +var Info$1 = Info; + +// node_modules/lucide-svelte/dist/esm/icons/move-vertical.svelte.js +function create_default_slot15(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment22(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "move-vertical" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot15] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance22($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + ["polyline", { "points": "8 18 12 22 16 18" }], + ["polyline", { "points": "8 6 12 2 16 6" }], + [ + "line", + { + "x1": "12", + "x2": "12", + "y1": "2", + "y2": "22" + } + ] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Move_vertical = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance22, create_fragment22, safe_not_equal, {}); + } +}; +var Move_vertical$1 = Move_vertical; + +// node_modules/lucide-svelte/dist/esm/icons/refresh-cw-off.svelte.js +function create_default_slot16(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment23(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "refresh-cw-off" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot16] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance23($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "M21 8L18.74 5.74A9.75 9.75 0 0 0 12 3C11 3 10.03 3.16 9.13 3.47" + } + ], + ["path", { "d": "M8 16H3v5" }], + ["path", { "d": "M3 12C3 9.51 4 7.26 5.64 5.64" }], + [ + "path", + { + "d": "m3 16 2.26 2.26A9.75 9.75 0 0 0 12 21c2.49 0 4.74-1 6.36-2.64" + } + ], + ["path", { "d": "M21 12c0 1-.16 1.97-.47 2.87" }], + ["path", { "d": "M21 3v5h-5" }], + ["path", { "d": "M22 22 2 2" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Refresh_cw_off = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance23, create_fragment23, safe_not_equal, {}); + } +}; +var Refresh_cw_off$1 = Refresh_cw_off; + +// node_modules/lucide-svelte/dist/esm/icons/refresh-cw.svelte.js +function create_default_slot17(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment24(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "refresh-cw" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot17] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance24($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" + } + ], + ["path", { "d": "M21 3v5h-5" }], + [ + "path", + { + "d": "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" + } + ], + ["path", { "d": "M8 16H3v5" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Refresh_cw = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance24, create_fragment24, safe_not_equal, {}); + } +}; +var Refresh_cw$1 = Refresh_cw; + +// node_modules/lucide-svelte/dist/esm/icons/settings.svelte.js +function create_default_slot18(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment25(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "settings" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot18] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance25($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z" + } + ], + ["circle", { "cx": "12", "cy": "12", "r": "3" }] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Settings = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance25, create_fragment25, safe_not_equal, {}); + } +}; +var Settings$1 = Settings; + +// node_modules/lucide-svelte/dist/esm/icons/table-2.svelte.js +function create_default_slot19(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment26(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "table-2" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot19] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance26($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [ + [ + "path", + { + "d": "M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18" + } + ] + ]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var Table_2 = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance26, create_fragment26, safe_not_equal, {}); + } +}; +var Table_2$1 = Table_2; + +// node_modules/lucide-svelte/dist/esm/icons/x.svelte.js +function create_default_slot20(ctx) { + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[2].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[3], + null + ); + return { + c() { + if (default_slot) + default_slot.c(); + }, + l(nodes) { + if (default_slot) + default_slot.l(nodes); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + current2 = true; + }, + p(ctx2, dirty) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 8)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[3], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[3] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[3], + dirty, + null + ), + null + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (default_slot) + default_slot.d(detaching); + } + }; +} +function create_fragment27(ctx) { + let icon; + let current2; + const icon_spread_levels = [ + { name: "x" }, + /*$$props*/ + ctx[1], + { iconNode: ( + /*iconNode*/ + ctx[0] + ) } + ]; + let icon_props = { + $$slots: { default: [create_default_slot20] }, + $$scope: { ctx } + }; + for (let i2 = 0; i2 < icon_spread_levels.length; i2 += 1) { + icon_props = assign(icon_props, icon_spread_levels[i2]); + } + icon = new Icon$1({ props: icon_props }); + return { + c() { + create_component(icon.$$.fragment); + }, + l(nodes) { + claim_component(icon.$$.fragment, nodes); + }, + m(target, anchor) { + mount_component(icon, target, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + const icon_changes = dirty & /*$$props, iconNode*/ + 3 ? get_spread_update(icon_spread_levels, [ + icon_spread_levels[0], + dirty & /*$$props*/ + 2 && get_spread_object( + /*$$props*/ + ctx2[1] + ), + dirty & /*iconNode*/ + 1 && { iconNode: ( + /*iconNode*/ + ctx2[0] + ) } + ]) : {}; + if (dirty & /*$$scope*/ + 8) { + icon_changes.$$scope = { dirty, ctx: ctx2 }; + } + icon.$set(icon_changes); + }, + i(local) { + if (current2) + return; + transition_in(icon.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(icon.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(icon, detaching); + } + }; +} +function instance27($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + const iconNode = [["path", { "d": "M18 6 6 18" }], ["path", { "d": "m6 6 12 12" }]]; + $$self.$$set = ($$new_props) => { + $$invalidate(1, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props))); + if ("$$scope" in $$new_props) + $$invalidate(3, $$scope = $$new_props.$$scope); + }; + $$props = exclude_internal_props($$props); + return [iconNode, $$props, slots, $$scope]; +} +var X = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance27, create_fragment27, safe_not_equal, {}); + } +}; +var X$1 = X; + +// src/ui/components/timeline-controls.svelte +var import_moment7 = __toESM(require_moment()); + +// src/ui/hooks/use-dataview-source.ts +var import_obsidian7 = require("obsidian"); +function useDataviewSource({ refreshTasks }) { + const sourceIsEmpty = derived( + settings, + ($settings) => $settings.dataviewSource.trim().length === 0 + ); + const dataviewSourceInput = writable(get_store_value(settings).dataviewSource); + const errorMessage = writable(""); + function validate(source) { + try { + refreshTasks(source); + return ""; + } catch (error) { + return String(error); + } + } + function tryUpdateSettings(source) { + const validationError = validate(source); + errorMessage.set(validationError); + if (validationError.length === 0) { + settings.update((previous) => ({ ...previous, dataviewSource: source })); + } + } + const debouncedUpdate = (0, import_obsidian7.debounce)(tryUpdateSettings, 1e3, true); + const unsubscribe = dataviewSourceInput.subscribe((value) => { + debouncedUpdate(value); + }); + onDestroy(() => { + unsubscribe(); + }); + return { + sourceIsEmpty, + errorMessage, + dataviewSourceInput + }; +} + +// src/ui/components/control-button.svelte +function add_css5(target) { + append_styles(target, "svelte-xud6aw", ".clickable-icon.svelte-xud6aw{grid-column-start:var(--grid-column-start, auto);flex-basis:var(--flex-basis, var(--input-height));align-self:var(--align-self, center);justify-content:var(--justify-content, center);justify-self:var(--justify-self, auto);color:var(--color, var(--icon-color));white-space:nowrap;border:var(--control-button-border, none)}"); +} +function create_fragment28(ctx) { + let div; + let div_class_value; + let current2; + let mounted; + let dispose; + const default_slot_template = ( + /*#slots*/ + ctx[5].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[4], + null + ); + return { + c() { + div = element("div"); + if (default_slot) + default_slot.c(); + attr(div, "class", div_class_value = "clickable-icon " + /*classes*/ + ctx[3] + " svelte-xud6aw"); + attr( + div, + "aria-disabled", + /*disabled*/ + ctx[2] + ); + attr( + div, + "aria-label", + /*label*/ + ctx[0] + ); + toggle_class( + div, + "is-active", + /*isActive*/ + ctx[1] + ); + }, + m(target, anchor) { + insert(target, div, anchor); + if (default_slot) { + default_slot.m(div, null); + } + current2 = true; + if (!mounted) { + dispose = listen( + div, + "click", + /*click_handler*/ + ctx[6] + ); + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 16)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[4], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[4] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[4], + dirty, + null + ), + null + ); + } + } + if (!current2 || dirty & /*classes*/ + 8 && div_class_value !== (div_class_value = "clickable-icon " + /*classes*/ + ctx2[3] + " svelte-xud6aw")) { + attr(div, "class", div_class_value); + } + if (!current2 || dirty & /*disabled*/ + 4) { + attr( + div, + "aria-disabled", + /*disabled*/ + ctx2[2] + ); + } + if (!current2 || dirty & /*label*/ + 1) { + attr( + div, + "aria-label", + /*label*/ + ctx2[0] + ); + } + if (!current2 || dirty & /*classes, isActive*/ + 10) { + toggle_class( + div, + "is-active", + /*isActive*/ + ctx2[1] + ); + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(div); + if (default_slot) + default_slot.d(detaching); + mounted = false; + dispose(); + } + }; +} +function instance28($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + let { label = void 0 } = $$props; + let { isActive = false } = $$props; + let { disabled = false } = $$props; + let { classes = "" } = $$props; + function click_handler(event) { + bubble.call(this, $$self, event); + } + $$self.$$set = ($$props2) => { + if ("label" in $$props2) + $$invalidate(0, label = $$props2.label); + if ("isActive" in $$props2) + $$invalidate(1, isActive = $$props2.isActive); + if ("disabled" in $$props2) + $$invalidate(2, disabled = $$props2.disabled); + if ("classes" in $$props2) + $$invalidate(3, classes = $$props2.classes); + if ("$$scope" in $$props2) + $$invalidate(4, $$scope = $$props2.$$scope); + }; + return [label, isActive, disabled, classes, $$scope, slots, click_handler]; +} +var Control_button = class extends SvelteComponent { + constructor(options) { + super(); + init( + this, + options, + instance28, + create_fragment28, + safe_not_equal, + { + label: 0, + isActive: 1, + disabled: 2, + classes: 3 + }, + add_css5 + ); + } +}; +var control_button_default = Control_button; + +// src/util/create-error-url.ts +function createErrorUrl(error) { + const asMarkdown = ` + + +Steps to reproduce: +1. + +Error log: +\`\`\`log +${error.stack} +\`\`\` + +Other relevant details: +`; + const encoded = encodeURI(asMarkdown); + return `https://github.com/ivan-lednev/obsidian-day-planner/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&body=${encoded}`; +} + +// src/ui/components/error-report.svelte +function add_css6(target) { + append_styles(target, "svelte-47ifb9", ".container.svelte-47ifb9{display:grid;grid-template-columns:1fr auto}.error-message.svelte-47ifb9{overflow:auto;grid-column:1 / 3;max-height:400px;padding:var(--size-4-1);font-size:var(--font-ui-smaller);border:1px solid var(--text-error);border-radius:var(--radius-s)}"); +} +function create_if_block2(ctx) { + let div; + let span; + let t0; + let a2; + let t1; + let a_href_value; + let t2; + let controlbutton; + let t3; + let pre; + let t4_value = ( + /*$errorStore*/ + ctx[0].stack + "" + ); + let t4; + let current2; + controlbutton = new control_button_default({ + props: { + classes: "dismiss-button", + label: "Dismiss error", + $$slots: { default: [create_default_slot21] }, + $$scope: { ctx } + } + }); + controlbutton.$on( + "click", + /*dismiss*/ + ctx[2] + ); + return { + c() { + div = element("div"); + span = element("span"); + t0 = text("\u{1F635} Something went wrong.\n "); + a2 = element("a"); + t1 = text("Report an issue"); + t2 = space(); + create_component(controlbutton.$$.fragment); + t3 = space(); + pre = element("pre"); + t4 = text(t4_value); + attr(a2, "href", a_href_value = createErrorUrl( + /*$errorStore*/ + ctx[0] + )); + attr(pre, "class", "error-message svelte-47ifb9"); + attr(div, "class", "container svelte-47ifb9"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, span); + append(span, t0); + append(span, a2); + append(a2, t1); + append(div, t2); + mount_component(controlbutton, div, null); + append(div, t3); + append(div, pre); + append(pre, t4); + current2 = true; + }, + p(ctx2, dirty) { + if (!current2 || dirty & /*$errorStore*/ + 1 && a_href_value !== (a_href_value = createErrorUrl( + /*$errorStore*/ + ctx2[0] + ))) { + attr(a2, "href", a_href_value); + } + const controlbutton_changes = {}; + if (dirty & /*$$scope*/ + 8) { + controlbutton_changes.$$scope = { dirty, ctx: ctx2 }; + } + controlbutton.$set(controlbutton_changes); + if ((!current2 || dirty & /*$errorStore*/ + 1) && t4_value !== (t4_value = /*$errorStore*/ + ctx2[0].stack + "")) + set_data(t4, t4_value); + }, + i(local) { + if (current2) + return; + transition_in(controlbutton.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(controlbutton.$$.fragment, local); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(div); + destroy_component(controlbutton); + } + }; +} +function create_default_slot21(ctx) { + let x2; + let current2; + x2 = new X$1({ props: { class: "svg-icon" } }); + return { + c() { + create_component(x2.$$.fragment); + }, + m(target, anchor) { + mount_component(x2, target, anchor); + current2 = true; + }, + p: noop, + i(local) { + if (current2) + return; + transition_in(x2.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(x2.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(x2, detaching); + } + }; +} +function create_fragment29(ctx) { + let if_block_anchor; + let current2; + let if_block = ( + /*$errorStore*/ + ctx[0] && create_if_block2(ctx) + ); + return { + c() { + if (if_block) + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if (if_block) + if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + current2 = true; + }, + p(ctx2, [dirty]) { + if ( + /*$errorStore*/ + ctx2[0] + ) { + if (if_block) { + if_block.p(ctx2, dirty); + if (dirty & /*$errorStore*/ + 1) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block2(ctx2); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + check_outros(); + } + }, + i(local) { + if (current2) + return; + transition_in(if_block); + current2 = true; + }, + o(local) { + transition_out(if_block); + current2 = false; + }, + d(detaching) { + if (if_block) + if_block.d(detaching); + if (detaching) + detach(if_block_anchor); + } + }; +} +function instance29($$self, $$props, $$invalidate) { + let $errorStore; + const errorStore = getContext(errorContextKey); + component_subscribe($$self, errorStore, (value) => $$invalidate(0, $errorStore = value)); + function dismiss() { + set_store_value(errorStore, $errorStore = void 0, $errorStore); + } + return [$errorStore, errorStore, dismiss]; +} +var Error_report = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance29, create_fragment29, safe_not_equal, {}, add_css6); + } +}; +var error_report_default = Error_report; + +// src/ui/components/obsidian/dropdown.svelte +function get_each_context3(ctx, list, i2) { + const child_ctx = ctx.slice(); + child_ctx[1] = list[i2]; + return child_ctx; +} +function create_each_block3(ctx) { + let option; + let t_value = ( + /*value*/ + ctx[1] + "" + ); + let t2; + let option_value_value; + return { + c() { + option = element("option"); + t2 = text(t_value); + option.__value = option_value_value = /*value*/ + ctx[1]; + option.value = option.__value; + }, + m(target, anchor) { + insert(target, option, anchor); + append(option, t2); + }, + p(ctx2, dirty) { + if (dirty & /*values*/ + 1 && t_value !== (t_value = /*value*/ + ctx2[1] + "")) + set_data(t2, t_value); + if (dirty & /*values*/ + 1 && option_value_value !== (option_value_value = /*value*/ + ctx2[1])) { + option.__value = option_value_value; + option.value = option.__value; + } + }, + d(detaching) { + if (detaching) + detach(option); + } + }; +} +function create_fragment30(ctx) { + let select; + let mounted; + let dispose; + let each_value = ( + /*values*/ + ctx[0] + ); + let each_blocks = []; + for (let i2 = 0; i2 < each_value.length; i2 += 1) { + each_blocks[i2] = create_each_block3(get_each_context3(ctx, each_value, i2)); + } + return { + c() { + select = element("select"); + for (let i2 = 0; i2 < each_blocks.length; i2 += 1) { + each_blocks[i2].c(); + } + attr(select, "class", "dropdown"); + }, + m(target, anchor) { + insert(target, select, anchor); + for (let i2 = 0; i2 < each_blocks.length; i2 += 1) { + if (each_blocks[i2]) { + each_blocks[i2].m(select, null); + } + } + select_option( + select, + /*value*/ + ctx[1] + ); + if (!mounted) { + dispose = listen( + select, + "input", + /*input_handler*/ + ctx[2] + ); + mounted = true; + } + }, + p(ctx2, [dirty]) { + if (dirty & /*values*/ + 1) { + each_value = /*values*/ + ctx2[0]; + let i2; + for (i2 = 0; i2 < each_value.length; i2 += 1) { + const child_ctx = get_each_context3(ctx2, each_value, i2); + if (each_blocks[i2]) { + each_blocks[i2].p(child_ctx, dirty); + } else { + each_blocks[i2] = create_each_block3(child_ctx); + each_blocks[i2].c(); + each_blocks[i2].m(select, null); + } + } + for (; i2 < each_blocks.length; i2 += 1) { + each_blocks[i2].d(1); + } + each_blocks.length = each_value.length; + } + if (dirty & /*value, values*/ + 3) { + select_option( + select, + /*value*/ + ctx2[1] + ); + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) + detach(select); + destroy_each(each_blocks, detaching); + mounted = false; + dispose(); + } + }; +} +function instance30($$self, $$props, $$invalidate) { + let { value } = $$props; + let { values } = $$props; + function input_handler(event) { + bubble.call(this, $$self, event); + } + $$self.$$set = ($$props2) => { + if ("value" in $$props2) + $$invalidate(1, value = $$props2.value); + if ("values" in $$props2) + $$invalidate(0, values = $$props2.values); + }; + return [values, value, input_handler]; +} +var Dropdown = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance30, create_fragment30, safe_not_equal, { value: 1, values: 0 }); + } +}; +var dropdown_default = Dropdown; + +// src/ui/components/obsidian/setting-item.svelte +function add_css7(target) { + append_styles(target, "svelte-ysxaf1", ".setting-item.svelte-ysxaf1{padding:var(--size-2-3) 0}.setting-item-name.svelte-ysxaf1{font-size:var(--font-ui-small)}"); +} +var get_control_slot_changes = (dirty) => ({}); +var get_control_slot_context = (ctx) => ({}); +var get_name_slot_changes = (dirty) => ({}); +var get_name_slot_context = (ctx) => ({}); +function create_fragment31(ctx) { + let div3; + let div1; + let div0; + let t2; + let div2; + let current2; + const name_slot_template = ( + /*#slots*/ + ctx[1].name + ); + const name_slot = create_slot( + name_slot_template, + ctx, + /*$$scope*/ + ctx[0], + get_name_slot_context + ); + const control_slot_template = ( + /*#slots*/ + ctx[1].control + ); + const control_slot = create_slot( + control_slot_template, + ctx, + /*$$scope*/ + ctx[0], + get_control_slot_context + ); + return { + c() { + div3 = element("div"); + div1 = element("div"); + div0 = element("div"); + if (name_slot) + name_slot.c(); + t2 = space(); + div2 = element("div"); + if (control_slot) + control_slot.c(); + attr(div0, "class", "setting-item-name svelte-ysxaf1"); + attr(div1, "class", "setting-item-info"); + attr(div2, "class", "setting-item-control"); + attr(div3, "class", "setting-item svelte-ysxaf1"); + }, + m(target, anchor) { + insert(target, div3, anchor); + append(div3, div1); + append(div1, div0); + if (name_slot) { + name_slot.m(div0, null); + } + append(div3, t2); + append(div3, div2); + if (control_slot) { + control_slot.m(div2, null); + } + current2 = true; + }, + p(ctx2, [dirty]) { + if (name_slot) { + if (name_slot.p && (!current2 || dirty & /*$$scope*/ + 1)) { + update_slot_base( + name_slot, + name_slot_template, + ctx2, + /*$$scope*/ + ctx2[0], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[0] + ) : get_slot_changes( + name_slot_template, + /*$$scope*/ + ctx2[0], + dirty, + get_name_slot_changes + ), + get_name_slot_context + ); + } + } + if (control_slot) { + if (control_slot.p && (!current2 || dirty & /*$$scope*/ + 1)) { + update_slot_base( + control_slot, + control_slot_template, + ctx2, + /*$$scope*/ + ctx2[0], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[0] + ) : get_slot_changes( + control_slot_template, + /*$$scope*/ + ctx2[0], + dirty, + get_control_slot_changes + ), + get_control_slot_context + ); + } + } + }, + i(local) { + if (current2) + return; + transition_in(name_slot, local); + transition_in(control_slot, local); + current2 = true; + }, + o(local) { + transition_out(name_slot, local); + transition_out(control_slot, local); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(div3); + if (name_slot) + name_slot.d(detaching); + if (control_slot) + control_slot.d(detaching); + } + }; +} +function instance31($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + $$self.$$set = ($$props2) => { + if ("$$scope" in $$props2) + $$invalidate(0, $$scope = $$props2.$$scope); + }; + return [$$scope, slots]; +} +var Setting_item = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance31, create_fragment31, safe_not_equal, {}, add_css7); + } +}; +var setting_item_default = Setting_item; + +// src/ui/components/pill.svelte +function add_css8(target) { + append_styles(target, "svelte-1kszfgg", ".pill.svelte-1kszfgg{display:inline-flex;padding:var(--size-2-1) var(--size-4-1);font-size:var(--font-ui-smaller);color:var(--color-accent);white-space:nowrap;border:1px solid var(--color-accent);border-radius:var(--radius-m)}"); +} +function create_if_block3(ctx) { + let span; + let t0; + let t1; + let t2; + return { + c() { + span = element("span"); + t0 = text( + /*key*/ + ctx[0] + ); + t1 = text(": "); + t2 = text( + /*value*/ + ctx[1] + ); + attr(span, "class", "pill svelte-1kszfgg"); + }, + m(target, anchor) { + insert(target, span, anchor); + append(span, t0); + append(span, t1); + append(span, t2); + }, + p(ctx2, dirty) { + if (dirty & /*key*/ + 1) + set_data( + t0, + /*key*/ + ctx2[0] + ); + if (dirty & /*value*/ + 2) + set_data( + t2, + /*value*/ + ctx2[1] + ); + }, + d(detaching) { + if (detaching) + detach(span); + } + }; +} +function create_fragment32(ctx) { + let if_block_anchor; + let if_block = ( + /*value*/ + ctx[1] && create_if_block3(ctx) + ); + return { + c() { + if (if_block) + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if (if_block) + if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + }, + p(ctx2, [dirty]) { + if ( + /*value*/ + ctx2[1] + ) { + if (if_block) { + if_block.p(ctx2, dirty); + } else { + if_block = create_if_block3(ctx2); + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + }, + i: noop, + o: noop, + d(detaching) { + if (if_block) + if_block.d(detaching); + if (detaching) + detach(if_block_anchor); + } + }; +} +function instance32($$self, $$props, $$invalidate) { + let { key } = $$props; + let { value } = $$props; + $$self.$$set = ($$props2) => { + if ("key" in $$props2) + $$invalidate(0, key = $$props2.key); + if ("value" in $$props2) + $$invalidate(1, value = $$props2.value); + }; + return [key, value]; +} +var Pill = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance32, create_fragment32, safe_not_equal, { key: 0, value: 1 }, add_css8); + } +}; +var pill_default = Pill; + +// src/ui/components/timeline-controls.svelte +function add_css9(target) { + append_styles(target, "svelte-1llgdzz", ".active-filter{color:var(--text-success)}.stretcher.svelte-1llgdzz.svelte-1llgdzz{display:flex;flex-direction:column;gap:var(--size-4-2);font-size:var(--font-ui-small);color:var(--text-muted)}.mod-error{color:var(--text-error)}.stretcher.svelte-1llgdzz input.svelte-1llgdzz{font-family:var(--font-monospace)}.info-container.svelte-1llgdzz.svelte-1llgdzz{display:flex;gap:var(--size-4-1);margin:var(--size-4-2)}.info-container.svelte-1llgdzz .svg-icon{flex-shrink:0}.error-message.svelte-1llgdzz.svelte-1llgdzz{overflow-x:auto;padding:var(--size-4-1);border:1px solid var(--text-error);border-radius:var(--radius-s)}.controls-section.svelte-1llgdzz.svelte-1llgdzz{margin:var(--size-4-2) 0;font-size:var(--font-ui-small);font-weight:var(--font-medium)}.date.svelte-1llgdzz.svelte-1llgdzz{display:flex;align-items:center;justify-content:center;font-size:var(--font-ui-small);font-weight:var(--font-medium);color:var(--text-normal)}.settings.svelte-1llgdzz.svelte-1llgdzz{margin:var(--size-4-1) 0}.controls.svelte-1llgdzz.svelte-1llgdzz{overflow:hidden;display:flex;flex:0 0 auto;flex-direction:column;gap:var(--size-4-1);padding:var(--size-4-2);font-size:var(--font-ui-small)}.header.svelte-1llgdzz.svelte-1llgdzz{display:grid;grid-template-columns:repeat(3, var(--size-4-8)) repeat(3, 1fr) repeat(\n 3,\n var(--size-4-8)\n )}"); +} +function create_default_slot_13(ctx) { + let fileinput; + let current2; + fileinput = new File_input$1({ props: { class: "svg-icon" } }); + return { + c() { + create_component(fileinput.$$.fragment); + }, + m(target, anchor) { + mount_component(fileinput, target, anchor); + current2 = true; + }, + p: noop, + i(local) { + if (current2) + return; + transition_in(fileinput.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(fileinput.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(fileinput, detaching); + } + }; +} +function create_default_slot_12(ctx) { + let table2; + let current2; + table2 = new Table_2$1({ props: { class: "svg-icon" } }); + return { + c() { + create_component(table2.$$.fragment); + }, + m(target, anchor) { + mount_component(table2, target, anchor); + current2 = true; + }, + p: noop, + i(local) { + if (current2) + return; + transition_in(table2.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(table2.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(table2, detaching); + } + }; +} +function create_else_block_1(ctx) { + let controlbutton; + let current2; + controlbutton = new control_button_default({ + props: { + disabled: true, + label: "Can't sync, you're offline!", + $$slots: { default: [create_default_slot_11] }, + $$scope: { ctx } + } + }); + return { + c() { + create_component(controlbutton.$$.fragment); + }, + m(target, anchor) { + mount_component(controlbutton, target, anchor); + current2 = true; + }, + p(ctx2, dirty) { + const controlbutton_changes = {}; + if (dirty[1] & /*$$scope*/ + 64) { + controlbutton_changes.$$scope = { dirty, ctx: ctx2 }; + } + controlbutton.$set(controlbutton_changes); + }, + i(local) { + if (current2) + return; + transition_in(controlbutton.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(controlbutton.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(controlbutton, detaching); + } + }; +} +function create_if_block_7(ctx) { + let controlbutton; + let current2; + controlbutton = new control_button_default({ + props: { + label: "Manually sync with all remote calendars", + $$slots: { default: [create_default_slot_10] }, + $$scope: { ctx } + } + }); + controlbutton.$on( + "click", + /*reSync*/ + ctx[14] + ); + return { + c() { + create_component(controlbutton.$$.fragment); + }, + m(target, anchor) { + mount_component(controlbutton, target, anchor); + current2 = true; + }, + p(ctx2, dirty) { + const controlbutton_changes = {}; + if (dirty[1] & /*$$scope*/ + 64) { + controlbutton_changes.$$scope = { dirty, ctx: ctx2 }; + } + controlbutton.$set(controlbutton_changes); + }, + i(local) { + if (current2) + return; + transition_in(controlbutton.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(controlbutton.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(controlbutton, detaching); + } + }; +} +function create_default_slot_11(ctx) { + let refreshcwoff; + let current2; + refreshcwoff = new Refresh_cw_off$1({ props: { class: "svg-icon" } }); + return { + c() { + create_component(refreshcwoff.$$.fragment); + }, + m(target, anchor) { + mount_component(refreshcwoff, target, anchor); + current2 = true; + }, + p: noop, + i(local) { + if (current2) + return; + transition_in(refreshcwoff.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(refreshcwoff.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(refreshcwoff, detaching); + } + }; +} +function create_default_slot_10(ctx) { + let refreshcw; + let current2; + refreshcw = new Refresh_cw$1({ props: { class: "svg-icon" } }); + return { + c() { + create_component(refreshcw.$$.fragment); + }, + m(target, anchor) { + mount_component(refreshcw, target, anchor); + current2 = true; + }, + p: noop, + i(local) { + if (current2) + return; + transition_in(refreshcw.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(refreshcw.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(refreshcw, detaching); + } + }; +} +function create_default_slot_9(ctx) { + let arrowleft; + let current2; + arrowleft = new Arrow_left$1({ props: { class: "svg-icon" } }); + return { + c() { + create_component(arrowleft.$$.fragment); + }, + m(target, anchor) { + mount_component(arrowleft, target, anchor); + current2 = true; + }, + p: noop, + i(local) { + if (current2) + return; + transition_in(arrowleft.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(arrowleft.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(arrowleft, detaching); + } + }; +} +function create_default_slot_8(ctx) { + let span; + let t_value = ( + /*$dateRange*/ + ctx[3][0].format( + /*$settings*/ + ctx[2].timelineDateFormat + ) + "" + ); + let t2; + return { + c() { + span = element("span"); + t2 = text(t_value); + attr(span, "class", "date svelte-1llgdzz"); + }, + m(target, anchor) { + insert(target, span, anchor); + append(span, t2); + }, + p(ctx2, dirty) { + if (dirty[0] & /*$dateRange, $settings*/ + 12 && t_value !== (t_value = /*$dateRange*/ + ctx2[3][0].format( + /*$settings*/ + ctx2[2].timelineDateFormat + ) + "")) + set_data(t2, t_value); + }, + d(detaching) { + if (detaching) + detach(span); + } + }; +} +function create_default_slot_7(ctx) { + let arrowright; + let current2; + arrowright = new Arrow_right$1({ props: { class: "svg-icon" } }); + return { + c() { + create_component(arrowright.$$.fragment); + }, + m(target, anchor) { + mount_component(arrowright, target, anchor); + current2 = true; + }, + p: noop, + i(local) { + if (current2) + return; + transition_in(arrowright.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(arrowright.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(arrowright, detaching); + } + }; +} +function create_else_block2(ctx) { + let filter3; + let current2; + filter3 = new Filter$1({ + props: { class: "svg-icon active-filter" } + }); + return { + c() { + create_component(filter3.$$.fragment); + }, + m(target, anchor) { + mount_component(filter3, target, anchor); + current2 = true; + }, + i(local) { + if (current2) + return; + transition_in(filter3.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(filter3.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(filter3, detaching); + } + }; +} +function create_if_block_6(ctx) { + let filterx; + let current2; + filterx = new Filter_x$1({ props: { class: "svg-icon" } }); + return { + c() { + create_component(filterx.$$.fragment); + }, + m(target, anchor) { + mount_component(filterx, target, anchor); + current2 = true; + }, + i(local) { + if (current2) + return; + transition_in(filterx.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(filterx.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(filterx, detaching); + } + }; +} +function create_default_slot_6(ctx) { + let current_block_type_index; + let if_block; + let if_block_anchor; + let current2; + const if_block_creators = [create_if_block_6, create_else_block2]; + const if_blocks = []; + function select_block_type_1(ctx2, dirty) { + if ( + /*$sourceIsEmpty*/ + ctx2[6] + ) + return 0; + return 1; + } + current_block_type_index = select_block_type_1(ctx, [-1, -1]); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + return { + c() { + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if_blocks[current_block_type_index].m(target, anchor); + insert(target, if_block_anchor, anchor); + current2 = true; + }, + p(ctx2, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type_1(ctx2, dirty); + if (current_block_type_index !== previous_block_index) { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block = if_blocks[current_block_type_index]; + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block.c(); + } else { + } + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + }, + i(local) { + if (current2) + return; + transition_in(if_block); + current2 = true; + }, + o(local) { + transition_out(if_block); + current2 = false; + }, + d(detaching) { + if_blocks[current_block_type_index].d(detaching); + if (detaching) + detach(if_block_anchor); + } + }; +} +function create_default_slot_5(ctx) { + let settings_1; + let current2; + settings_1 = new Settings$1({ props: { class: "svg-icon" } }); + return { + c() { + create_component(settings_1.$$.fragment); + }, + m(target, anchor) { + mount_component(settings_1, target, anchor); + current2 = true; + }, + p: noop, + i(local) { + if (current2) + return; + transition_in(settings_1.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(settings_1.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(settings_1, detaching); + } + }; +} +function create_if_block_52(ctx) { + let div; + let alerttriangle; + let t0; + let span; + let current2; + alerttriangle = new Alert_triangle$1({ props: { class: "svg-icon mod-error" } }); + return { + c() { + div = element("div"); + create_component(alerttriangle.$$.fragment); + t0 = space(); + span = element("span"); + span.innerHTML = `You need to install and enable + Dataview + for the day planner to work.`; + attr(div, "class", "info-container svelte-1llgdzz"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(alerttriangle, div, null); + append(div, t0); + append(div, span); + current2 = true; + }, + i(local) { + if (current2) + return; + transition_in(alerttriangle.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(alerttriangle.$$.fragment, local); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(div); + destroy_component(alerttriangle); + } + }; +} +function create_if_block_22(ctx) { + let div1; + let t0; + let input; + let input_placeholder_value; + let t1; + let t2; + let t3; + let div0; + let info; + let t4; + let a2; + let current2; + let mounted; + let dispose; + let if_block0 = ( + /*$sourceIsEmpty*/ + ctx[6] && create_if_block_42(ctx) + ); + let if_block1 = ( + /*$dataviewErrorMessage*/ + ctx[9].length > 0 && create_if_block_32(ctx) + ); + info = new Info$1({ props: { class: "svg-icon" } }); + return { + c() { + div1 = element("div"); + t0 = text("Include additional files, folders and tags with a Dataview source:\n "); + input = element("input"); + t1 = space(); + if (if_block0) + if_block0.c(); + t2 = space(); + if (if_block1) + if_block1.c(); + t3 = space(); + div0 = element("div"); + create_component(info.$$.fragment); + t4 = space(); + a2 = element("a"); + a2.textContent = "Dataview source reference"; + attr(input, "placeholder", input_placeholder_value = `-#archived and -"notes/personal"`); + attr(input, "spellcheck", "false"); + attr(input, "type", "text"); + attr(input, "class", "svelte-1llgdzz"); + attr(a2, "href", "https://blacksmithgu.github.io/obsidian-dataview/reference/sources/"); + attr(div0, "class", "info-container svelte-1llgdzz"); + attr(div1, "class", "stretcher svelte-1llgdzz"); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, t0); + append(div1, input); + set_input_value( + input, + /*$dataviewSourceInput*/ + ctx[8] + ); + append(div1, t1); + if (if_block0) + if_block0.m(div1, null); + append(div1, t2); + if (if_block1) + if_block1.m(div1, null); + append(div1, t3); + append(div1, div0); + mount_component(info, div0, null); + append(div0, t4); + append(div0, a2); + current2 = true; + if (!mounted) { + dispose = listen( + input, + "input", + /*input_input_handler*/ + ctx[30] + ); + mounted = true; + } + }, + p(ctx2, dirty) { + if (dirty[0] & /*$dataviewSourceInput*/ + 256 && input.value !== /*$dataviewSourceInput*/ + ctx2[8]) { + set_input_value( + input, + /*$dataviewSourceInput*/ + ctx2[8] + ); + } + if ( + /*$sourceIsEmpty*/ + ctx2[6] + ) { + if (if_block0) { + if (dirty[0] & /*$sourceIsEmpty*/ + 64) { + transition_in(if_block0, 1); + } + } else { + if_block0 = create_if_block_42(ctx2); + if_block0.c(); + transition_in(if_block0, 1); + if_block0.m(div1, t2); + } + } else if (if_block0) { + group_outros(); + transition_out(if_block0, 1, 1, () => { + if_block0 = null; + }); + check_outros(); + } + if ( + /*$dataviewErrorMessage*/ + ctx2[9].length > 0 + ) { + if (if_block1) { + if_block1.p(ctx2, dirty); + } else { + if_block1 = create_if_block_32(ctx2); + if_block1.c(); + if_block1.m(div1, t3); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + }, + i(local) { + if (current2) + return; + transition_in(if_block0); + transition_in(info.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(if_block0); + transition_out(info.$$.fragment, local); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(div1); + if (if_block0) + if_block0.d(); + if (if_block1) + if_block1.d(); + destroy_component(info); + mounted = false; + dispose(); + } + }; +} +function create_if_block_42(ctx) { + let div; + let alerttriangle; + let t2; + let current2; + alerttriangle = new Alert_triangle$1({ props: { class: "svg-icon" } }); + return { + c() { + div = element("div"); + create_component(alerttriangle.$$.fragment); + t2 = text("\n Tasks are pulled only from daily notes"); + attr(div, "class", "info-container svelte-1llgdzz"); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(alerttriangle, div, null); + append(div, t2); + current2 = true; + }, + i(local) { + if (current2) + return; + transition_in(alerttriangle.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(alerttriangle.$$.fragment, local); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(div); + destroy_component(alerttriangle); + } + }; +} +function create_if_block_32(ctx) { + let div; + let pre; + let t2; + return { + c() { + div = element("div"); + pre = element("pre"); + t2 = text( + /*$dataviewErrorMessage*/ + ctx[9] + ); + attr(pre, "class", "error-message svelte-1llgdzz"); + attr(div, "class", "info-container svelte-1llgdzz"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, pre); + append(pre, t2); + }, + p(ctx2, dirty) { + if (dirty[0] & /*$dataviewErrorMessage*/ + 512) + set_data( + t2, + /*$dataviewErrorMessage*/ + ctx2[9] + ); + }, + d(detaching) { + if (detaching) + detach(div); + } + }; +} +function create_if_block4(ctx) { + let div1; + let settingitem0; + let t0; + let settingitem1; + let t1; + let settingitem2; + let t2; + let settingitem3; + let t3; + let settingitem4; + let t4; + let div0; + let t6; + let settingitem5; + let t7; + let t8; + let button; + let current2; + let mounted; + let dispose; + settingitem0 = new setting_item_default({ + props: { + $$slots: { + control: [create_control_slot_6], + name: [create_name_slot_6] + }, + $$scope: { ctx } + } + }); + settingitem1 = new setting_item_default({ + props: { + $$slots: { + control: [create_control_slot_5], + name: [create_name_slot_5] + }, + $$scope: { ctx } + } + }); + settingitem2 = new setting_item_default({ + props: { + $$slots: { + control: [create_control_slot_4], + name: [create_name_slot_4] + }, + $$scope: { ctx } + } + }); + settingitem3 = new setting_item_default({ + props: { + $$slots: { + control: [create_control_slot_3], + name: [create_name_slot_3] + }, + $$scope: { ctx } + } + }); + settingitem4 = new setting_item_default({ + props: { + $$slots: { + control: [create_control_slot_2], + name: [create_name_slot_2] + }, + $$scope: { ctx } + } + }); + settingitem5 = new setting_item_default({ + props: { + $$slots: { + control: [create_control_slot_1], + name: [create_name_slot_1] + }, + $$scope: { ctx } + } + }); + let if_block = ( + /*$settings*/ + ctx[2].showUncheduledTasks && create_if_block_12(ctx) + ); + return { + c() { + div1 = element("div"); + create_component(settingitem0.$$.fragment); + t0 = space(); + create_component(settingitem1.$$.fragment); + t1 = space(); + create_component(settingitem2.$$.fragment); + t2 = space(); + create_component(settingitem3.$$.fragment); + t3 = space(); + create_component(settingitem4.$$.fragment); + t4 = space(); + div0 = element("div"); + div0.textContent = "Unscheduled tasks"; + t6 = space(); + create_component(settingitem5.$$.fragment); + t7 = space(); + if (if_block) + if_block.c(); + t8 = space(); + button = element("button"); + button.textContent = "Show release notes"; + attr(div0, "class", "controls-section svelte-1llgdzz"); + attr(div1, "class", "settings svelte-1llgdzz"); + attr(button, "class", "release-notes-button"); + }, + m(target, anchor) { + insert(target, div1, anchor); + mount_component(settingitem0, div1, null); + append(div1, t0); + mount_component(settingitem1, div1, null); + append(div1, t1); + mount_component(settingitem2, div1, null); + append(div1, t2); + mount_component(settingitem3, div1, null); + append(div1, t3); + mount_component(settingitem4, div1, null); + append(div1, t4); + append(div1, div0); + append(div1, t6); + mount_component(settingitem5, div1, null); + append(div1, t7); + if (if_block) + if_block.m(div1, null); + insert(target, t8, anchor); + insert(target, button, anchor); + current2 = true; + if (!mounted) { + dispose = listen( + button, + "click", + /*showReleaseNotes*/ + ctx[13] + ); + mounted = true; + } + }, + p(ctx2, dirty) { + const settingitem0_changes = {}; + if (dirty[0] & /*$settings*/ + 4 | dirty[1] & /*$$scope*/ + 64) { + settingitem0_changes.$$scope = { dirty, ctx: ctx2 }; + } + settingitem0.$set(settingitem0_changes); + const settingitem1_changes = {}; + if (dirty[0] & /*$settings*/ + 4 | dirty[1] & /*$$scope*/ + 64) { + settingitem1_changes.$$scope = { dirty, ctx: ctx2 }; + } + settingitem1.$set(settingitem1_changes); + const settingitem2_changes = {}; + if (dirty[0] & /*$settings*/ + 4 | dirty[1] & /*$$scope*/ + 64) { + settingitem2_changes.$$scope = { dirty, ctx: ctx2 }; + } + settingitem2.$set(settingitem2_changes); + const settingitem3_changes = {}; + if (dirty[0] & /*$settings*/ + 4 | dirty[1] & /*$$scope*/ + 64) { + settingitem3_changes.$$scope = { dirty, ctx: ctx2 }; + } + settingitem3.$set(settingitem3_changes); + const settingitem4_changes = {}; + if (dirty[0] & /*$settings*/ + 4 | dirty[1] & /*$$scope*/ + 64) { + settingitem4_changes.$$scope = { dirty, ctx: ctx2 }; + } + settingitem4.$set(settingitem4_changes); + const settingitem5_changes = {}; + if (dirty[0] & /*$settings*/ + 4 | dirty[1] & /*$$scope*/ + 64) { + settingitem5_changes.$$scope = { dirty, ctx: ctx2 }; + } + settingitem5.$set(settingitem5_changes); + if ( + /*$settings*/ + ctx2[2].showUncheduledTasks + ) { + if (if_block) { + if_block.p(ctx2, dirty); + if (dirty[0] & /*$settings*/ + 4) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_12(ctx2); + if_block.c(); + transition_in(if_block, 1); + if_block.m(div1, null); + } + } else if (if_block) { + group_outros(); + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + check_outros(); + } + }, + i(local) { + if (current2) + return; + transition_in(settingitem0.$$.fragment, local); + transition_in(settingitem1.$$.fragment, local); + transition_in(settingitem2.$$.fragment, local); + transition_in(settingitem3.$$.fragment, local); + transition_in(settingitem4.$$.fragment, local); + transition_in(settingitem5.$$.fragment, local); + transition_in(if_block); + current2 = true; + }, + o(local) { + transition_out(settingitem0.$$.fragment, local); + transition_out(settingitem1.$$.fragment, local); + transition_out(settingitem2.$$.fragment, local); + transition_out(settingitem3.$$.fragment, local); + transition_out(settingitem4.$$.fragment, local); + transition_out(settingitem5.$$.fragment, local); + transition_out(if_block); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(div1); + destroy_component(settingitem0); + destroy_component(settingitem1); + destroy_component(settingitem2); + destroy_component(settingitem3); + destroy_component(settingitem4); + destroy_component(settingitem5); + if (if_block) + if_block.d(); + if (detaching) + detach(t8); + if (detaching) + detach(button); + mounted = false; + dispose(); + } + }; +} +function create_name_slot_6(ctx) { + let t2; + return { + c() { + t2 = text("Start hour"); + }, + m(target, anchor) { + insert(target, t2, anchor); + }, + d(detaching) { + if (detaching) + detach(t2); + } + }; +} +function create_control_slot_6(ctx) { + let dropdown; + let current2; + dropdown = new dropdown_default({ + props: { + slot: "control", + value: String( + /*$settings*/ + ctx[2].startHour + ), + values: ( + /*startHourOptions*/ + ctx[20] + ) + } + }); + dropdown.$on( + "input", + /*handleStartHourInput*/ + ctx[27] + ); + return { + c() { + create_component(dropdown.$$.fragment); + }, + m(target, anchor) { + mount_component(dropdown, target, anchor); + current2 = true; + }, + p(ctx2, dirty) { + const dropdown_changes = {}; + if (dirty[0] & /*$settings*/ + 4) + dropdown_changes.value = String( + /*$settings*/ + ctx2[2].startHour + ); + dropdown.$set(dropdown_changes); + }, + i(local) { + if (current2) + return; + transition_in(dropdown.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(dropdown.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(dropdown, detaching); + } + }; +} +function create_name_slot_5(ctx) { + let t2; + return { + c() { + t2 = text("Zoom"); + }, + m(target, anchor) { + insert(target, t2, anchor); + }, + d(detaching) { + if (detaching) + detach(t2); + } + }; +} +function create_control_slot_5(ctx) { + let dropdown; + let current2; + dropdown = new dropdown_default({ + props: { + slot: "control", + value: String( + /*$settings*/ + ctx[2].zoomLevel + ), + values: ( + /*zoomLevelOptions*/ + ctx[21] + ) + } + }); + dropdown.$on( + "input", + /*handleZoomLevelInput*/ + ctx[28] + ); + return { + c() { + create_component(dropdown.$$.fragment); + }, + m(target, anchor) { + mount_component(dropdown, target, anchor); + current2 = true; + }, + p(ctx2, dirty) { + const dropdown_changes = {}; + if (dirty[0] & /*$settings*/ + 4) + dropdown_changes.value = String( + /*$settings*/ + ctx2[2].zoomLevel + ); + dropdown.$set(dropdown_changes); + }, + i(local) { + if (current2) + return; + transition_in(dropdown.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(dropdown.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(dropdown, detaching); + } + }; +} +function create_name_slot_4(ctx) { + let t2; + return { + c() { + t2 = text("Auto-scroll to now"); + }, + m(target, anchor) { + insert(target, t2, anchor); + }, + d(detaching) { + if (detaching) + detach(t2); + } + }; +} +function create_control_slot_4(ctx) { + let div; + let mounted; + let dispose; + return { + c() { + div = element("div"); + div.innerHTML = ``; + attr(div, "slot", "control"); + attr(div, "class", "checkbox-container mod-small"); + toggle_class( + div, + "is-enabled", + /*$settings*/ + ctx[2].centerNeedle + ); + }, + m(target, anchor) { + insert(target, div, anchor); + if (!mounted) { + dispose = listen( + div, + "click", + /*click_handler_1*/ + ctx[31] + ); + mounted = true; + } + }, + p(ctx2, dirty) { + if (dirty[0] & /*$settings*/ + 4) { + toggle_class( + div, + "is-enabled", + /*$settings*/ + ctx2[2].centerNeedle + ); + } + }, + d(detaching) { + if (detaching) + detach(div); + mounted = false; + dispose(); + } + }; +} +function create_name_slot_3(ctx) { + let t2; + return { + c() { + t2 = text("Show completed tasks"); + }, + m(target, anchor) { + insert(target, t2, anchor); + }, + d(detaching) { + if (detaching) + detach(t2); + } + }; +} +function create_control_slot_3(ctx) { + let div; + let mounted; + let dispose; + return { + c() { + div = element("div"); + div.innerHTML = ``; + attr(div, "slot", "control"); + attr(div, "class", "checkbox-container mod-small"); + toggle_class( + div, + "is-enabled", + /*$settings*/ + ctx[2].showCompletedTasks + ); + }, + m(target, anchor) { + insert(target, div, anchor); + if (!mounted) { + dispose = listen( + div, + "click", + /*click_handler_2*/ + ctx[32] + ); + mounted = true; + } + }, + p(ctx2, dirty) { + if (dirty[0] & /*$settings*/ + 4) { + toggle_class( + div, + "is-enabled", + /*$settings*/ + ctx2[2].showCompletedTasks + ); + } + }, + d(detaching) { + if (detaching) + detach(div); + mounted = false; + dispose(); + } + }; +} +function create_name_slot_2(ctx) { + let t2; + return { + c() { + t2 = text("Show subtasks in task blocks"); + }, + m(target, anchor) { + insert(target, t2, anchor); + }, + d(detaching) { + if (detaching) + detach(t2); + } + }; +} +function create_control_slot_2(ctx) { + let div; + let mounted; + let dispose; + return { + c() { + div = element("div"); + div.innerHTML = ``; + attr(div, "slot", "control"); + attr(div, "class", "checkbox-container mod-small"); + toggle_class( + div, + "is-enabled", + /*$settings*/ + ctx[2].showSubtasksInTaskBlocks + ); + }, + m(target, anchor) { + insert(target, div, anchor); + if (!mounted) { + dispose = listen( + div, + "click", + /*click_handler_3*/ + ctx[33] + ); + mounted = true; + } + }, + p(ctx2, dirty) { + if (dirty[0] & /*$settings*/ + 4) { + toggle_class( + div, + "is-enabled", + /*$settings*/ + ctx2[2].showSubtasksInTaskBlocks + ); + } + }, + d(detaching) { + if (detaching) + detach(div); + mounted = false; + dispose(); + } + }; +} +function create_name_slot_1(ctx) { + let t2; + return { + c() { + t2 = text("Show unscheduled tasks"); + }, + m(target, anchor) { + insert(target, t2, anchor); + }, + d(detaching) { + if (detaching) + detach(t2); + } + }; +} +function create_control_slot_1(ctx) { + let div; + let mounted; + let dispose; + return { + c() { + div = element("div"); + div.innerHTML = ``; + attr(div, "slot", "control"); + attr(div, "class", "checkbox-container mod-small"); + toggle_class( + div, + "is-enabled", + /*$settings*/ + ctx[2].showUncheduledTasks + ); + }, + m(target, anchor) { + insert(target, div, anchor); + if (!mounted) { + dispose = listen( + div, + "click", + /*click_handler_4*/ + ctx[34] + ); + mounted = true; + } + }, + p(ctx2, dirty) { + if (dirty[0] & /*$settings*/ + 4) { + toggle_class( + div, + "is-enabled", + /*$settings*/ + ctx2[2].showUncheduledTasks + ); + } + }, + d(detaching) { + if (detaching) + detach(div); + mounted = false; + dispose(); + } + }; +} +function create_if_block_12(ctx) { + let settingitem; + let current2; + settingitem = new setting_item_default({ + props: { + $$slots: { + control: [create_control_slot], + name: [create_name_slot] + }, + $$scope: { ctx } + } + }); + return { + c() { + create_component(settingitem.$$.fragment); + }, + m(target, anchor) { + mount_component(settingitem, target, anchor); + current2 = true; + }, + p(ctx2, dirty) { + const settingitem_changes = {}; + if (dirty[0] & /*$settings*/ + 4 | dirty[1] & /*$$scope*/ + 64) { + settingitem_changes.$$scope = { dirty, ctx: ctx2 }; + } + settingitem.$set(settingitem_changes); + }, + i(local) { + if (current2) + return; + transition_in(settingitem.$$.fragment, local); + current2 = true; + }, + o(local) { + transition_out(settingitem.$$.fragment, local); + current2 = false; + }, + d(detaching) { + destroy_component(settingitem, detaching); + } + }; +} +function create_name_slot(ctx) { + let t2; + return { + c() { + t2 = text("Show unscheduled sub-tasks as separate blocks"); + }, + m(target, anchor) { + insert(target, t2, anchor); + }, + d(detaching) { + if (detaching) + detach(t2); + } + }; +} +function create_control_slot(ctx) { + let div; + let mounted; + let dispose; + return { + c() { + div = element("div"); + div.innerHTML = ``; + attr(div, "slot", "control"); + attr(div, "class", "checkbox-container mod-small"); + toggle_class( + div, + "is-enabled", + /*$settings*/ + ctx[2].showUnscheduledNestedTasks + ); + }, + m(target, anchor) { + insert(target, div, anchor); + if (!mounted) { + dispose = listen( + div, + "click", + /*click_handler_5*/ + ctx[35] + ); + mounted = true; + } + }, + p(ctx2, dirty) { + if (dirty[0] & /*$settings*/ + 4) { + toggle_class( + div, + "is-enabled", + /*$settings*/ + ctx2[2].showUnscheduledNestedTasks + ); + } + }, + d(detaching) { + if (detaching) + detach(div); + mounted = false; + dispose(); + } + }; +} +function create_fragment33(ctx) { + let div2; + let errorreport; + let t0; + let div0; + let controlbutton0; + let t1; + let controlbutton1; + let t2; + let current_block_type_index; + let if_block0; + let t3; + let controlbutton2; + let div; + let t4; + let controlbutton3; + let div_1; + let __control_button_border_last; + let t5; + let controlbutton4; + let div_2; + let t6; + let controlbutton5; + let div_3; + let t7; + let controlbutton6; + let t8; + let div1; + let pill; + let t9; + let t10; + let t11; + let current2; + errorreport = new error_report_default({}); + controlbutton0 = new control_button_default({ + props: { + label: "Open today's daily note", + $$slots: { default: [create_default_slot_13] }, + $$scope: { ctx } + } + }); + controlbutton0.$on( + "click", + /*goToToday*/ + ctx[26] + ); + controlbutton1 = new control_button_default({ + props: { + label: "Open week planner", + $$slots: { default: [create_default_slot_12] }, + $$scope: { ctx } + } + }); + controlbutton1.$on( + "click", + /*initWeeklyView*/ + ctx[11] + ); + const if_block_creators = [create_if_block_7, create_else_block_1]; + const if_blocks = []; + function select_block_type(ctx2, dirty) { + if ( + /*$isOnline*/ + ctx2[4] + ) + return 0; + return 1; + } + current_block_type_index = select_block_type(ctx, [-1, -1]); + if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + controlbutton2 = new control_button_default({ + props: { + label: "Go to previous day", + $$slots: { default: [create_default_slot_9] }, + $$scope: { ctx } + } + }); + controlbutton2.$on( + "click", + /*goBack*/ + ctx[24] + ); + controlbutton3 = new control_button_default({ + props: { + label: "Go to file", + $$slots: { default: [create_default_slot_8] }, + $$scope: { ctx } + } + }); + controlbutton3.$on( + "click", + /*click_handler*/ + ctx[29] + ); + controlbutton4 = new control_button_default({ + props: { + label: "Go to next day", + $$slots: { default: [create_default_slot_7] }, + $$scope: { ctx } + } + }); + controlbutton4.$on( + "click", + /*goForward*/ + ctx[25] + ); + controlbutton5 = new control_button_default({ + props: { + isActive: ( + /*filterVisible*/ + ctx[1] + ), + label: "Dataview source", + $$slots: { default: [create_default_slot_6] }, + $$scope: { ctx } + } + }); + controlbutton5.$on( + "click", + /*toggleFilter*/ + ctx[23] + ); + controlbutton6 = new control_button_default({ + props: { + isActive: ( + /*settingsVisible*/ + ctx[0] + ), + label: "Settings", + $$slots: { default: [create_default_slot_5] }, + $$scope: { ctx } + } + }); + controlbutton6.$on( + "click", + /*toggleSettings*/ + ctx[22] + ); + pill = new pill_default({ + props: { + key: "filter", + value: ( + /*$settings*/ + ctx[2].dataviewSource + ) + } + }); + let if_block1 = !/*$dataviewLoaded*/ + ctx[7] && create_if_block_52(ctx); + let if_block2 = ( + /*filterVisible*/ + ctx[1] && create_if_block_22(ctx) + ); + let if_block3 = ( + /*settingsVisible*/ + ctx[0] && create_if_block4(ctx) + ); + return { + c() { + div2 = element("div"); + create_component(errorreport.$$.fragment); + t0 = space(); + div0 = element("div"); + create_component(controlbutton0.$$.fragment); + t1 = space(); + create_component(controlbutton1.$$.fragment); + t2 = space(); + if_block0.c(); + t3 = space(); + div = element("div"); + create_component(controlbutton2.$$.fragment); + t4 = space(); + div_1 = element("div"); + create_component(controlbutton3.$$.fragment); + t5 = space(); + div_2 = element("div"); + create_component(controlbutton4.$$.fragment); + t6 = space(); + div_3 = element("div"); + create_component(controlbutton5.$$.fragment); + t7 = space(); + create_component(controlbutton6.$$.fragment); + t8 = space(); + div1 = element("div"); + create_component(pill.$$.fragment); + t9 = space(); + if (if_block1) + if_block1.c(); + t10 = space(); + if (if_block2) + if_block2.c(); + t11 = space(); + if (if_block3) + if_block3.c(); + set_style(div, "display", "contents"); + set_style(div, "--justify-self", "flex-end"); + set_style(div_1, "display", "contents"); + set_style(div_1, "--control-button-border", __control_button_border_last = /*$isToday*/ + ctx[5]( + /*$dateRange*/ + ctx[3][0] + ) ? "1px solid var(--color-accent)" : "none"); + set_style(div_2, "display", "contents"); + set_style(div_2, "--justify-self", "flex-start"); + set_style(div_3, "display", "contents"); + set_style(div_3, "--grid-column-start", "8"); + attr(div0, "class", "header svelte-1llgdzz"); + attr(div2, "class", "controls svelte-1llgdzz"); + }, + m(target, anchor) { + insert(target, div2, anchor); + mount_component(errorreport, div2, null); + append(div2, t0); + append(div2, div0); + mount_component(controlbutton0, div0, null); + append(div0, t1); + mount_component(controlbutton1, div0, null); + append(div0, t2); + if_blocks[current_block_type_index].m(div0, null); + append(div0, t3); + append(div0, div); + mount_component(controlbutton2, div, null); + append(div0, t4); + append(div0, div_1); + mount_component(controlbutton3, div_1, null); + append(div0, t5); + append(div0, div_2); + mount_component(controlbutton4, div_2, null); + append(div0, t6); + append(div0, div_3); + mount_component(controlbutton5, div_3, null); + append(div0, t7); + mount_component(controlbutton6, div0, null); + append(div2, t8); + append(div2, div1); + mount_component(pill, div1, null); + append(div2, t9); + if (if_block1) + if_block1.m(div2, null); + append(div2, t10); + if (if_block2) + if_block2.m(div2, null); + append(div2, t11); + if (if_block3) + if_block3.m(div2, null); + current2 = true; + }, + p(ctx2, dirty) { + const controlbutton0_changes = {}; + if (dirty[1] & /*$$scope*/ + 64) { + controlbutton0_changes.$$scope = { dirty, ctx: ctx2 }; + } + controlbutton0.$set(controlbutton0_changes); + const controlbutton1_changes = {}; + if (dirty[1] & /*$$scope*/ + 64) { + controlbutton1_changes.$$scope = { dirty, ctx: ctx2 }; + } + controlbutton1.$set(controlbutton1_changes); + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx2, dirty); + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx2, dirty); + } else { + group_outros(); + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + check_outros(); + if_block0 = if_blocks[current_block_type_index]; + if (!if_block0) { + if_block0 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2); + if_block0.c(); + } else { + if_block0.p(ctx2, dirty); + } + transition_in(if_block0, 1); + if_block0.m(div0, t3); + } + const controlbutton2_changes = {}; + if (dirty[1] & /*$$scope*/ + 64) { + controlbutton2_changes.$$scope = { dirty, ctx: ctx2 }; + } + controlbutton2.$set(controlbutton2_changes); + if (dirty[0] & /*$isToday, $dateRange*/ + 40 && __control_button_border_last !== (__control_button_border_last = /*$isToday*/ + ctx2[5]( + /*$dateRange*/ + ctx2[3][0] + ) ? "1px solid var(--color-accent)" : "none")) { + set_style(div_1, "--control-button-border", __control_button_border_last); + } + const controlbutton3_changes = {}; + if (dirty[0] & /*$dateRange, $settings*/ + 12 | dirty[1] & /*$$scope*/ + 64) { + controlbutton3_changes.$$scope = { dirty, ctx: ctx2 }; + } + controlbutton3.$set(controlbutton3_changes); + const controlbutton4_changes = {}; + if (dirty[1] & /*$$scope*/ + 64) { + controlbutton4_changes.$$scope = { dirty, ctx: ctx2 }; + } + controlbutton4.$set(controlbutton4_changes); + const controlbutton5_changes = {}; + if (dirty[0] & /*filterVisible*/ + 2) + controlbutton5_changes.isActive = /*filterVisible*/ + ctx2[1]; + if (dirty[0] & /*$sourceIsEmpty*/ + 64 | dirty[1] & /*$$scope*/ + 64) { + controlbutton5_changes.$$scope = { dirty, ctx: ctx2 }; + } + controlbutton5.$set(controlbutton5_changes); + const controlbutton6_changes = {}; + if (dirty[0] & /*settingsVisible*/ + 1) + controlbutton6_changes.isActive = /*settingsVisible*/ + ctx2[0]; + if (dirty[1] & /*$$scope*/ + 64) { + controlbutton6_changes.$$scope = { dirty, ctx: ctx2 }; + } + controlbutton6.$set(controlbutton6_changes); + const pill_changes = {}; + if (dirty[0] & /*$settings*/ + 4) + pill_changes.value = /*$settings*/ + ctx2[2].dataviewSource; + pill.$set(pill_changes); + if (!/*$dataviewLoaded*/ + ctx2[7]) { + if (if_block1) { + if (dirty[0] & /*$dataviewLoaded*/ + 128) { + transition_in(if_block1, 1); + } + } else { + if_block1 = create_if_block_52(ctx2); + if_block1.c(); + transition_in(if_block1, 1); + if_block1.m(div2, t10); + } + } else if (if_block1) { + group_outros(); + transition_out(if_block1, 1, 1, () => { + if_block1 = null; + }); + check_outros(); + } + if ( + /*filterVisible*/ + ctx2[1] + ) { + if (if_block2) { + if_block2.p(ctx2, dirty); + if (dirty[0] & /*filterVisible*/ + 2) { + transition_in(if_block2, 1); + } + } else { + if_block2 = create_if_block_22(ctx2); + if_block2.c(); + transition_in(if_block2, 1); + if_block2.m(div2, t11); + } + } else if (if_block2) { + group_outros(); + transition_out(if_block2, 1, 1, () => { + if_block2 = null; + }); + check_outros(); + } + if ( + /*settingsVisible*/ + ctx2[0] + ) { + if (if_block3) { + if_block3.p(ctx2, dirty); + if (dirty[0] & /*settingsVisible*/ + 1) { + transition_in(if_block3, 1); + } + } else { + if_block3 = create_if_block4(ctx2); + if_block3.c(); + transition_in(if_block3, 1); + if_block3.m(div2, null); + } + } else if (if_block3) { + group_outros(); + transition_out(if_block3, 1, 1, () => { + if_block3 = null; + }); + check_outros(); + } + }, + i(local) { + if (current2) + return; + transition_in(errorreport.$$.fragment, local); + transition_in(controlbutton0.$$.fragment, local); + transition_in(controlbutton1.$$.fragment, local); + transition_in(if_block0); + transition_in(controlbutton2.$$.fragment, local); + transition_in(controlbutton3.$$.fragment, local); + transition_in(controlbutton4.$$.fragment, local); + transition_in(controlbutton5.$$.fragment, local); + transition_in(controlbutton6.$$.fragment, local); + transition_in(pill.$$.fragment, local); + transition_in(if_block1); + transition_in(if_block2); + transition_in(if_block3); + current2 = true; + }, + o(local) { + transition_out(errorreport.$$.fragment, local); + transition_out(controlbutton0.$$.fragment, local); + transition_out(controlbutton1.$$.fragment, local); + transition_out(if_block0); + transition_out(controlbutton2.$$.fragment, local); + transition_out(controlbutton3.$$.fragment, local); + transition_out(controlbutton4.$$.fragment, local); + transition_out(controlbutton5.$$.fragment, local); + transition_out(controlbutton6.$$.fragment, local); + transition_out(pill.$$.fragment, local); + transition_out(if_block1); + transition_out(if_block2); + transition_out(if_block3); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(div2); + destroy_component(errorreport); + destroy_component(controlbutton0); + destroy_component(controlbutton1); + if_blocks[current_block_type_index].d(); + destroy_component(controlbutton2); + destroy_component(controlbutton3); + destroy_component(controlbutton4); + destroy_component(controlbutton5); + destroy_component(controlbutton6); + destroy_component(pill); + if (if_block1) + if_block1.d(); + if (if_block2) + if_block2.d(); + if (if_block3) + if_block3.d(); + } + }; +} +function instance33($$self, $$props, $$invalidate) { + let $settings; + let $dateRange; + let $isOnline; + let $isToday; + let $sourceIsEmpty; + let $dataviewLoaded; + let $dataviewSourceInput; + let $dataviewErrorMessage; + component_subscribe($$self, settings, ($$value) => $$invalidate(2, $settings = $$value)); + component_subscribe($$self, isToday, ($$value) => $$invalidate(5, $isToday = $$value)); + const { obsidianFacade, initWeeklyView, refreshTasks, dataviewLoaded, showReleaseNotes, reSync, isOnline } = getContext(obsidianContext); + component_subscribe($$self, dataviewLoaded, (value) => $$invalidate(7, $dataviewLoaded = value)); + component_subscribe($$self, isOnline, (value) => $$invalidate(4, $isOnline = value)); + const dateRange = getContext(dateRangeContextKey); + component_subscribe($$self, dateRange, (value) => $$invalidate(3, $dateRange = value)); + const { sourceIsEmpty, errorMessage: dataviewErrorMessage, dataviewSourceInput } = useDataviewSource({ refreshTasks }); + component_subscribe($$self, sourceIsEmpty, (value) => $$invalidate(6, $sourceIsEmpty = value)); + component_subscribe($$self, dataviewErrorMessage, (value) => $$invalidate(9, $dataviewErrorMessage = value)); + component_subscribe($$self, dataviewSourceInput, (value) => $$invalidate(8, $dataviewSourceInput = value)); + const startHourOptions = (0, import_fp7.range)(0, 13).map(String); + const zoomLevelOptions = (0, import_fp7.range)(1, 9).map(String); + let settingsVisible = false; + let filterVisible = false; + function toggleSettings() { + $$invalidate(0, settingsVisible = !settingsVisible); + } + function toggleFilter() { + $$invalidate(1, filterVisible = !filterVisible); + } + function goBack() { + return __awaiter(this, void 0, void 0, function* () { + const previousDay = $dateRange[0].clone().subtract(1, "day"); + set_store_value(dateRange, $dateRange = [previousDay], $dateRange); + }); + } + function goForward() { + return __awaiter(this, void 0, void 0, function* () { + const nextDay = $dateRange[0].clone().add(1, "day"); + set_store_value(dateRange, $dateRange = [nextDay], $dateRange); + }); + } + function goToToday() { + return __awaiter(this, void 0, void 0, function* () { + const noteForToday = yield createDailyNoteIfNeeded(window.moment()); + yield obsidianFacade.openFileInEditor(noteForToday); + }); + } + function handleStartHourInput(event) { + set_store_value(settings, $settings.startHour = Number(event.currentTarget.value), $settings); + } + function handleZoomLevelInput(event) { + set_store_value(settings, $settings.zoomLevel = Number(event.currentTarget.value), $settings); + } + const click_handler = async () => { + const note = await createDailyNoteIfNeeded($dateRange[0]); + await obsidianFacade.openFileInEditor(note); + }; + function input_input_handler() { + $dataviewSourceInput = this.value; + dataviewSourceInput.set($dataviewSourceInput); + } + const click_handler_1 = () => { + set_store_value(settings, $settings.centerNeedle = !$settings.centerNeedle, $settings); + }; + const click_handler_2 = () => { + set_store_value(settings, $settings.showCompletedTasks = !$settings.showCompletedTasks, $settings); + }; + const click_handler_3 = () => { + settings.update((previous) => ({ + ...previous, + showSubtasksInTaskBlocks: !previous.showSubtasksInTaskBlocks + })); + }; + const click_handler_4 = () => { + set_store_value(settings, $settings.showUncheduledTasks = !$settings.showUncheduledTasks, $settings); + }; + const click_handler_5 = () => { + set_store_value(settings, $settings.showUnscheduledNestedTasks = !$settings.showUnscheduledNestedTasks, $settings); + }; + return [ + settingsVisible, + filterVisible, + $settings, + $dateRange, + $isOnline, + $isToday, + $sourceIsEmpty, + $dataviewLoaded, + $dataviewSourceInput, + $dataviewErrorMessage, + obsidianFacade, + initWeeklyView, + dataviewLoaded, + showReleaseNotes, + reSync, + isOnline, + dateRange, + sourceIsEmpty, + dataviewErrorMessage, + dataviewSourceInput, + startHourOptions, + zoomLevelOptions, + toggleSettings, + toggleFilter, + goBack, + goForward, + goToToday, + handleStartHourInput, + handleZoomLevelInput, + click_handler, + input_input_handler, + click_handler_1, + click_handler_2, + click_handler_3, + click_handler_4, + click_handler_5 + ]; +} +var Timeline_controls = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance33, create_fragment33, safe_not_equal, {}, add_css9, [-1, -1]); + } +}; +var timeline_controls_default = Timeline_controls; + +// src/ui/components/timeline.svelte +var import_moment10 = __toESM(require_moment()); + +// src/util/util.ts +function isTouchEvent(event) { + return ["pen", "touch"].includes(event.pointerType); +} +function isEventRelated(event, otherNode) { + if (!otherNode) { + return false; + } + return event.relatedTarget && (event.relatedTarget === otherNode || event.relatedTarget instanceof Node && otherNode.contains(event.relatedTarget)); +} +function isTapOutside(event, container) { + return isTouchEvent(event) && event.target !== container && event.target instanceof Node && !container.contains(event.target); +} + +// src/ui/components/column.svelte +function add_css10(target) { + append_styles(target, "svelte-131kw4b", ".column.svelte-131kw4b{position:relative;flex:1 0 0}.hour-block.svelte-131kw4b{flex:1 0 0;border-bottom:1px solid var(--background-modifier-border)}.half-hour-separator.svelte-131kw4b{border-bottom:1px dashed var(--background-modifier-border)}"); +} +function get_each_context4(ctx, list, i2) { + const child_ctx = ctx.slice(); + child_ctx[4] = list[i2]; + return child_ctx; +} +function create_each_block4(ctx) { + let div1; + let div0; + let style_height = `${getHourSize( + /*$settings*/ + ctx[1] + ) / 2}px`; + let t2; + let style_height_1 = `${getHourSize( + /*$settings*/ + ctx[1] + )}px`; + return { + c() { + div1 = element("div"); + div0 = element("div"); + t2 = space(); + attr(div0, "class", "half-hour-separator svelte-131kw4b"); + set_style(div0, "height", style_height); + attr(div1, "class", "hour-block svelte-131kw4b"); + set_style(div1, "height", style_height_1); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, div0); + append(div1, t2); + }, + p(ctx2, dirty) { + if (dirty & /*$settings*/ + 2 && style_height !== (style_height = `${getHourSize( + /*$settings*/ + ctx2[1] + ) / 2}px`)) { + set_style(div0, "height", style_height); + } + if (dirty & /*$settings*/ + 2 && style_height_1 !== (style_height_1 = `${getHourSize( + /*$settings*/ + ctx2[1] + )}px`)) { + set_style(div1, "height", style_height_1); + } + }, + d(detaching) { + if (detaching) + detach(div1); + } + }; +} +function create_fragment34(ctx) { + let div; + let t2; + let current2; + const default_slot_template = ( + /*#slots*/ + ctx[3].default + ); + const default_slot = create_slot( + default_slot_template, + ctx, + /*$$scope*/ + ctx[2], + null + ); + let each_value = ( + /*visibleHours*/ + ctx[0] + ); + let each_blocks = []; + for (let i2 = 0; i2 < each_value.length; i2 += 1) { + each_blocks[i2] = create_each_block4(get_each_context4(ctx, each_value, i2)); + } + return { + c() { + div = element("div"); + if (default_slot) + default_slot.c(); + t2 = space(); + for (let i2 = 0; i2 < each_blocks.length; i2 += 1) { + each_blocks[i2].c(); + } + attr(div, "class", "column svelte-131kw4b"); + }, + m(target, anchor) { + insert(target, div, anchor); + if (default_slot) { + default_slot.m(div, null); + } + append(div, t2); + for (let i2 = 0; i2 < each_blocks.length; i2 += 1) { + if (each_blocks[i2]) { + each_blocks[i2].m(div, null); + } + } + current2 = true; + }, + p(ctx2, [dirty]) { + if (default_slot) { + if (default_slot.p && (!current2 || dirty & /*$$scope*/ + 4)) { + update_slot_base( + default_slot, + default_slot_template, + ctx2, + /*$$scope*/ + ctx2[2], + !current2 ? get_all_dirty_from_scope( + /*$$scope*/ + ctx2[2] + ) : get_slot_changes( + default_slot_template, + /*$$scope*/ + ctx2[2], + dirty, + null + ), + null + ); + } + } + if (dirty & /*getHourSize, $settings, visibleHours*/ + 3) { + each_value = /*visibleHours*/ + ctx2[0]; + let i2; + for (i2 = 0; i2 < each_value.length; i2 += 1) { + const child_ctx = get_each_context4(ctx2, each_value, i2); + if (each_blocks[i2]) { + each_blocks[i2].p(child_ctx, dirty); + } else { + each_blocks[i2] = create_each_block4(child_ctx); + each_blocks[i2].c(); + each_blocks[i2].m(div, null); + } + } + for (; i2 < each_blocks.length; i2 += 1) { + each_blocks[i2].d(1); + } + each_blocks.length = each_value.length; + } + }, + i(local) { + if (current2) + return; + transition_in(default_slot, local); + current2 = true; + }, + o(local) { + transition_out(default_slot, local); + current2 = false; + }, + d(detaching) { + if (detaching) + detach(div); + if (default_slot) + default_slot.d(detaching); + destroy_each(each_blocks, detaching); + } + }; +} +function instance34($$self, $$props, $$invalidate) { + let $settings; + component_subscribe($$self, settings, ($$value) => $$invalidate(1, $settings = $$value)); + let { $$slots: slots = {}, $$scope } = $$props; + let { visibleHours } = $$props; + $$self.$$set = ($$props2) => { + if ("visibleHours" in $$props2) + $$invalidate(0, visibleHours = $$props2.visibleHours); + if ("$$scope" in $$props2) + $$invalidate(2, $$scope = $$props2.$$scope); + }; + return [visibleHours, $settings, $$scope, slots]; +} +var Column = class extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance34, create_fragment34, safe_not_equal, { visibleHours: 0 }, add_css10); + } +}; +var column_default = Column; + +// node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +var min = Math.min; +var max = Math.max; +var round = Math.round; +var floor = Math.floor; +var createCoords = (v2) => ({ + x: v2, + y: v2 +}); +function evaluate(value, param) { + return typeof value === "function" ? value(param) : value; +} +function getSide(placement) { + return placement.split("-")[0]; +} +function getAlignment(placement) { + return placement.split("-")[1]; +} +function getOppositeAxis(axis) { + return axis === "x" ? "y" : "x"; +} +function getAxisLength(axis) { + return axis === "y" ? "height" : "width"; +} +function getSideAxis(placement) { + return ["top", "bottom"].includes(getSide(placement)) ? "y" : "x"; +} +function getAlignmentAxis(placement) { + return getOppositeAxis(getSideAxis(placement)); +} +function rectToClientRect(rect) { + const { + x: x2, + y: y2, + width, + height + } = rect; + return { + width, + height, + top: y2, + left: x2, + right: x2 + width, + bottom: y2 + height, + x: x2, + y: y2 + }; +} + +// node_modules/@floating-ui/core/dist/floating-ui.core.mjs +function computeCoordsFromPlacement(_ref, placement, rtl) { + let { + reference, + floating + } = _ref; + const sideAxis = getSideAxis(placement); + const alignmentAxis = getAlignmentAxis(placement); + const alignLength = getAxisLength(alignmentAxis); + const side = getSide(placement); + const isVertical = sideAxis === "y"; + const commonX = reference.x + reference.width / 2 - floating.width / 2; + const commonY = reference.y + reference.height / 2 - floating.height / 2; + const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; + let coords; + switch (side) { + case "top": + coords = { + x: commonX, + y: reference.y - floating.height + }; + break; + case "bottom": + coords = { + x: commonX, + y: reference.y + reference.height + }; + break; + case "right": + coords = { + x: reference.x + reference.width, + y: commonY + }; + break; + case "left": + coords = { + x: reference.x - floating.width, + y: commonY + }; + break; + default: + coords = { + x: reference.x, + y: reference.y + }; + } + switch (getAlignment(placement)) { + case "start": + coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1); + break; + case "end": + coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1); + break; + } + return coords; +} +var computePosition = async (reference, floating, config) => { + const { + placement = "bottom", + strategy = "absolute", + middleware = [], + platform: platform2 + } = config; + const validMiddleware = middleware.filter(Boolean); + const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(floating)); + let rects = await platform2.getElementRects({ + reference, + floating, + strategy + }); + let { + x: x2, + y: y2 + } = computeCoordsFromPlacement(rects, placement, rtl); + let statefulPlacement = placement; + let middlewareData = {}; + let resetCount = 0; + for (let i2 = 0; i2 < validMiddleware.length; i2++) { + const { + name, + fn + } = validMiddleware[i2]; + const { + x: nextX, + y: nextY, + data, + reset + } = await fn({ + x: x2, + y: y2, + initialPlacement: placement, + placement: statefulPlacement, + strategy, + middlewareData, + rects, + platform: platform2, + elements: { + reference, + floating + } + }); + x2 = nextX != null ? nextX : x2; + y2 = nextY != null ? nextY : y2; + middlewareData = { + ...middlewareData, + [name]: { + ...middlewareData[name], + ...data + } + }; + if (reset && resetCount <= 50) { + resetCount++; + if (typeof reset === "object") { + if (reset.placement) { + statefulPlacement = reset.placement; + } + if (reset.rects) { + rects = reset.rects === true ? await platform2.getElementRects({ + reference, + floating, + strategy + }) : reset.rects; + } + ({ + x: x2, + y: y2 + } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); + } + i2 = -1; + } + } + return { + x: x2, + y: y2, + placement: statefulPlacement, + strategy, + middlewareData + }; +}; +async function convertValueToCoords(state, options) { + const { + placement, + platform: platform2, + elements + } = state; + const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating)); + const side = getSide(placement); + const alignment = getAlignment(placement); + const isVertical = getSideAxis(placement) === "y"; + const mainAxisMulti = ["left", "top"].includes(side) ? -1 : 1; + const crossAxisMulti = rtl && isVertical ? -1 : 1; + const rawValue = evaluate(options, state); + let { + mainAxis, + crossAxis, + alignmentAxis + } = typeof rawValue === "number" ? { + mainAxis: rawValue, + crossAxis: 0, + alignmentAxis: null + } : { + mainAxis: 0, + crossAxis: 0, + alignmentAxis: null, + ...rawValue + }; + if (alignment && typeof alignmentAxis === "number") { + crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; + } + return isVertical ? { + x: crossAxis * crossAxisMulti, + y: mainAxis * mainAxisMulti + } : { + x: mainAxis * mainAxisMulti, + y: crossAxis * crossAxisMulti + }; +} +var offset = function(options) { + if (options === void 0) { + options = 0; + } + return { + name: "offset", + options, + async fn(state) { + var _middlewareData$offse, _middlewareData$arrow; + const { + x: x2, + y: y2, + placement, + middlewareData + } = state; + const diffCoords = await convertValueToCoords(state, options); + if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { + return {}; + } + return { + x: x2 + diffCoords.x, + y: y2 + diffCoords.y, + data: { + ...diffCoords, + placement + } + }; + } + }; +}; + +// node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +function getNodeName(node) { + if (isNode(node)) { + return (node.nodeName || "").toLowerCase(); + } + return "#document"; +} +function getWindow(node) { + var _node$ownerDocument; + return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; +} +function getDocumentElement(node) { + var _ref; + return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; +} +function isNode(value) { + return value instanceof Node || value instanceof getWindow(value).Node; +} +function isElement(value) { + return value instanceof Element || value instanceof getWindow(value).Element; +} +function isHTMLElement(value) { + return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; +} +function isShadowRoot(value) { + if (typeof ShadowRoot === "undefined") { + return false; + } + return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; +} +function isOverflowElement(element2) { + const { + overflow, + overflowX, + overflowY, + display + } = getComputedStyle2(element2); + return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !["inline", "contents"].includes(display); +} +function isTableElement(element2) { + return ["table", "td", "th"].includes(getNodeName(element2)); +} +function isTopLayer(element2) { + return [":popover-open", ":modal"].some((selector) => { + try { + return element2.matches(selector); + } catch (e2) { + return false; + } + }); +} +function isContainingBlock(element2) { + const webkit = isWebKit(); + const css = getComputedStyle2(element2); + return css.transform !== "none" || css.perspective !== "none" || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || ["transform", "perspective", "filter"].some((value) => (css.willChange || "").includes(value)) || ["paint", "layout", "strict", "content"].some((value) => (css.contain || "").includes(value)); +} +function getContainingBlock(element2) { + let currentNode = getParentNode(element2); + while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { + if (isTopLayer(currentNode)) { + return null; + } + if (isContainingBlock(currentNode)) { + return currentNode; + } + currentNode = getParentNode(currentNode); + } + return null; +} +function isWebKit() { + if (typeof CSS === "undefined" || !CSS.supports) + return false; + return CSS.supports("-webkit-backdrop-filter", "none"); +} +function isLastTraversableNode(node) { + return ["html", "body", "#document"].includes(getNodeName(node)); +} +function getComputedStyle2(element2) { + return getWindow(element2).getComputedStyle(element2); +} +function getNodeScroll(element2) { + if (isElement(element2)) { + return { + scrollLeft: element2.scrollLeft, + scrollTop: element2.scrollTop + }; + } + return { + scrollLeft: element2.pageXOffset, + scrollTop: element2.pageYOffset + }; +} +function getParentNode(node) { + if (getNodeName(node) === "html") { + return node; + } + const result = ( + // Step into the shadow DOM of the parent of a slotted node. + node.assignedSlot || // DOM Element detected. + node.parentNode || // ShadowRoot detected. + isShadowRoot(node) && node.host || // Fallback. + getDocumentElement(node) + ); + return isShadowRoot(result) ? result.host : result; +} +function getNearestOverflowAncestor(node) { + const parentNode = getParentNode(node); + if (isLastTraversableNode(parentNode)) { + return node.ownerDocument ? node.ownerDocument.body : node.body; + } + if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { + return parentNode; + } + return getNearestOverflowAncestor(parentNode); +} +function getOverflowAncestors(node, list, traverseIframes) { + var _node$ownerDocument2; + if (list === void 0) { + list = []; + } + if (traverseIframes === void 0) { + traverseIframes = true; + } + const scrollableAncestor = getNearestOverflowAncestor(node); + const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); + const win = getWindow(scrollableAncestor); + if (isBody) { + return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []); + } + return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); +} + +// node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +function getCssDimensions(element2) { + const css = getComputedStyle2(element2); + let width = parseFloat(css.width) || 0; + let height = parseFloat(css.height) || 0; + const hasOffset = isHTMLElement(element2); + const offsetWidth = hasOffset ? element2.offsetWidth : width; + const offsetHeight = hasOffset ? element2.offsetHeight : height; + const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; + if (shouldFallback) { + width = offsetWidth; + height = offsetHeight; + } + return { + width, + height, + $: shouldFallback + }; +} +function unwrapElement(element2) { + return !isElement(element2) ? element2.contextElement : element2; +} +function getScale(element2) { + const domElement = unwrapElement(element2); + if (!isHTMLElement(domElement)) { + return createCoords(1); + } + const rect = domElement.getBoundingClientRect(); + const { + width, + height, + $: $2 + } = getCssDimensions(domElement); + let x2 = ($2 ? round(rect.width) : rect.width) / width; + let y2 = ($2 ? round(rect.height) : rect.height) / height; + if (!x2 || !Number.isFinite(x2)) { + x2 = 1; + } + if (!y2 || !Number.isFinite(y2)) { + y2 = 1; + } + return { + x: x2, + y: y2 + }; +} +var noOffsets = /* @__PURE__ */ createCoords(0); +function getVisualOffsets(element2) { + const win = getWindow(element2); + if (!isWebKit() || !win.visualViewport) { + return noOffsets; + } + return { + x: win.visualViewport.offsetLeft, + y: win.visualViewport.offsetTop + }; +} +function shouldAddVisualOffsets(element2, isFixed, floatingOffsetParent) { + if (isFixed === void 0) { + isFixed = false; + } + if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element2)) { + return false; + } + return isFixed; +} +function getBoundingClientRect(element2, includeScale, isFixedStrategy, offsetParent) { + if (includeScale === void 0) { + includeScale = false; + } + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } + const clientRect = element2.getBoundingClientRect(); + const domElement = unwrapElement(element2); + let scale = createCoords(1); + if (includeScale) { + if (offsetParent) { + if (isElement(offsetParent)) { + scale = getScale(offsetParent); + } + } else { + scale = getScale(element2); + } + } + const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); + let x2 = (clientRect.left + visualOffsets.x) / scale.x; + let y2 = (clientRect.top + visualOffsets.y) / scale.y; + let width = clientRect.width / scale.x; + let height = clientRect.height / scale.y; + if (domElement) { + const win = getWindow(domElement); + const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; + let currentWin = win; + let currentIFrame = currentWin.frameElement; + while (currentIFrame && offsetParent && offsetWin !== currentWin) { + const iframeScale = getScale(currentIFrame); + const iframeRect = currentIFrame.getBoundingClientRect(); + const css = getComputedStyle2(currentIFrame); + const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; + const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; + x2 *= iframeScale.x; + y2 *= iframeScale.y; + width *= iframeScale.x; + height *= iframeScale.y; + x2 += left; + y2 += top; + currentWin = getWindow(currentIFrame); + currentIFrame = currentWin.frameElement; + } + } + return rectToClientRect({ + width, + height, + x: x2, + y: y2 + }); +} +function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { + let { + elements, + rect, + offsetParent, + strategy + } = _ref; + const isFixed = strategy === "fixed"; + const documentElement = getDocumentElement(offsetParent); + const topLayer = elements ? isTopLayer(elements.floating) : false; + if (offsetParent === documentElement || topLayer && isFixed) { + return rect; + } + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + let scale = createCoords(1); + const offsets = createCoords(0); + const isOffsetParentAnElement = isHTMLElement(offsetParent); + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isHTMLElement(offsetParent)) { + const offsetRect = getBoundingClientRect(offsetParent); + scale = getScale(offsetParent); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } + } + return { + width: rect.width * scale.x, + height: rect.height * scale.y, + x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x, + y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + }; +} +function getClientRects(element2) { + return Array.from(element2.getClientRects()); +} +function getWindowScrollBarX(element2) { + return getBoundingClientRect(getDocumentElement(element2)).left + getNodeScroll(element2).scrollLeft; +} +function getDocumentRect(element2) { + const html = getDocumentElement(element2); + const scroll = getNodeScroll(element2); + const body = element2.ownerDocument.body; + const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); + const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); + let x2 = -scroll.scrollLeft + getWindowScrollBarX(element2); + const y2 = -scroll.scrollTop; + if (getComputedStyle2(body).direction === "rtl") { + x2 += max(html.clientWidth, body.clientWidth) - width; + } + return { + width, + height, + x: x2, + y: y2 + }; +} +function getViewportRect(element2, strategy) { + const win = getWindow(element2); + const html = getDocumentElement(element2); + const visualViewport = win.visualViewport; + let width = html.clientWidth; + let height = html.clientHeight; + let x2 = 0; + let y2 = 0; + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; + const visualViewportBased = isWebKit(); + if (!visualViewportBased || visualViewportBased && strategy === "fixed") { + x2 = visualViewport.offsetLeft; + y2 = visualViewport.offsetTop; + } + } + return { + width, + height, + x: x2, + y: y2 + }; +} +function getInnerBoundingClientRect(element2, strategy) { + const clientRect = getBoundingClientRect(element2, true, strategy === "fixed"); + const top = clientRect.top + element2.clientTop; + const left = clientRect.left + element2.clientLeft; + const scale = isHTMLElement(element2) ? getScale(element2) : createCoords(1); + const width = element2.clientWidth * scale.x; + const height = element2.clientHeight * scale.y; + const x2 = left * scale.x; + const y2 = top * scale.y; + return { + width, + height, + x: x2, + y: y2 + }; +} +function getClientRectFromClippingAncestor(element2, clippingAncestor, strategy) { + let rect; + if (clippingAncestor === "viewport") { + rect = getViewportRect(element2, strategy); + } else if (clippingAncestor === "document") { + rect = getDocumentRect(getDocumentElement(element2)); + } else if (isElement(clippingAncestor)) { + rect = getInnerBoundingClientRect(clippingAncestor, strategy); + } else { + const visualOffsets = getVisualOffsets(element2); + rect = { + ...clippingAncestor, + x: clippingAncestor.x - visualOffsets.x, + y: clippingAncestor.y - visualOffsets.y + }; + } + return rectToClientRect(rect); +} +function hasFixedPositionAncestor(element2, stopNode) { + const parentNode = getParentNode(element2); + if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) { + return false; + } + return getComputedStyle2(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode); +} +function getClippingElementAncestors(element2, cache) { + const cachedResult = cache.get(element2); + if (cachedResult) { + return cachedResult; + } + let result = getOverflowAncestors(element2, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body"); + let currentContainingBlockComputedStyle = null; + const elementIsFixed = getComputedStyle2(element2).position === "fixed"; + let currentNode = elementIsFixed ? getParentNode(element2) : element2; + while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { + const computedStyle = getComputedStyle2(currentNode); + const currentNodeIsContaining = isContainingBlock(currentNode); + if (!currentNodeIsContaining && computedStyle.position === "fixed") { + currentContainingBlockComputedStyle = null; + } + const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && ["absolute", "fixed"].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element2, currentNode); + if (shouldDropCurrentNode) { + result = result.filter((ancestor) => ancestor !== currentNode); + } else { + currentContainingBlockComputedStyle = computedStyle; + } + currentNode = getParentNode(currentNode); + } + cache.set(element2, result); + return result; +} +function getClippingRect(_ref) { + let { + element: element2, + boundary, + rootBoundary, + strategy + } = _ref; + const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element2) ? [] : getClippingElementAncestors(element2, this._c) : [].concat(boundary); + const clippingAncestors = [...elementClippingAncestors, rootBoundary]; + const firstClippingAncestor = clippingAncestors[0]; + const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => { + const rect = getClientRectFromClippingAncestor(element2, clippingAncestor, strategy); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromClippingAncestor(element2, firstClippingAncestor, strategy)); + return { + width: clippingRect.right - clippingRect.left, + height: clippingRect.bottom - clippingRect.top, + x: clippingRect.left, + y: clippingRect.top + }; +} +function getDimensions(element2) { + const { + width, + height + } = getCssDimensions(element2); + return { + width, + height + }; +} +function getRectRelativeToOffsetParent(element2, offsetParent, strategy) { + const isOffsetParentAnElement = isHTMLElement(offsetParent); + const documentElement = getDocumentElement(offsetParent); + const isFixed = strategy === "fixed"; + const rect = getBoundingClientRect(element2, true, isFixed, offsetParent); + let scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + const offsets = createCoords(0); + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + if (isOffsetParentAnElement) { + const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); + offsets.x = offsetRect.x + offsetParent.clientLeft; + offsets.y = offsetRect.y + offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + const x2 = rect.left + scroll.scrollLeft - offsets.x; + const y2 = rect.top + scroll.scrollTop - offsets.y; + return { + x: x2, + y: y2, + width: rect.width, + height: rect.height + }; +} +function isStaticPositioned(element2) { + return getComputedStyle2(element2).position === "static"; +} +function getTrueOffsetParent(element2, polyfill) { + if (!isHTMLElement(element2) || getComputedStyle2(element2).position === "fixed") { + return null; + } + if (polyfill) { + return polyfill(element2); + } + return element2.offsetParent; +} +function getOffsetParent(element2, polyfill) { + const win = getWindow(element2); + if (isTopLayer(element2)) { + return win; + } + if (!isHTMLElement(element2)) { + let svgOffsetParent = getParentNode(element2); + while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { + if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) { + return svgOffsetParent; + } + svgOffsetParent = getParentNode(svgOffsetParent); + } + return win; + } + let offsetParent = getTrueOffsetParent(element2, polyfill); + while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) { + offsetParent = getTrueOffsetParent(offsetParent, polyfill); + } + if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) { + return win; + } + return offsetParent || getContainingBlock(element2) || win; +} +var getElementRects = async function(data) { + const getOffsetParentFn = this.getOffsetParent || getOffsetParent; + const getDimensionsFn = this.getDimensions; + const floatingDimensions = await getDimensionsFn(data.floating); + return { + reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), + floating: { + x: 0, + y: 0, + width: floatingDimensions.width, + height: floatingDimensions.height + } + }; +}; +function isRTL(element2) { + return getComputedStyle2(element2).direction === "rtl"; +} +var platform = { + convertOffsetParentRelativeRectToViewportRelativeRect, + getDocumentElement, + getClippingRect, + getOffsetParent, + getElementRects, + getClientRects, + getDimensions, + getScale, + isElement, + isRTL +}; +function observeMove(element2, onMove) { + let io = null; + let timeoutId; + const root = getDocumentElement(element2); + function cleanup() { + var _io; + clearTimeout(timeoutId); + (_io = io) == null || _io.disconnect(); + io = null; + } + function refresh(skip, threshold) { + if (skip === void 0) { + skip = false; + } + if (threshold === void 0) { + threshold = 1; + } + cleanup(); + const { + left, + top, + width, + height + } = element2.getBoundingClientRect(); + if (!skip) { + onMove(); + } + if (!width || !height) { + return; + } + const insetTop = floor(top); + const insetRight = floor(root.clientWidth - (left + width)); + const insetBottom = floor(root.clientHeight - (top + height)); + const insetLeft = floor(left); + const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px"; + const options = { + rootMargin, + threshold: max(0, min(1, threshold)) || 1 + }; + let isFirstUpdate = true; + function handleObserve(entries) { + const ratio = entries[0].intersectionRatio; + if (ratio !== threshold) { + if (!isFirstUpdate) { + return refresh(); + } + if (!ratio) { + timeoutId = setTimeout(() => { + refresh(false, 1e-7); + }, 1e3); + } else { + refresh(false, ratio); + } + } + isFirstUpdate = false; + } + try { + io = new IntersectionObserver(handleObserve, { + ...options, + // Handle \n\n',RELEASE_NOTES={Intro:'After each update you\'ll be prompted with the release notes. You can disable this in plugin settings.\n\nI develop this plugin as a hobby, spending my free time doing this. If you find it valuable, then please say THANK YOU or...\n\n
\n',"2.4.3":"\nCheck out the [Excalidraw Plugin's Community WIKI](https://excalidraw-obsidian.online/Hobbies/Excalidraw+Blog/WIKI/Welcome+to+the+WIKI) and help with your content contribution.\n\n## Fixed\n- In some situations Excalidraw hangs indefinitely when opening a different file in the same tab\n- Can't exit arrow tool on phone [#2006](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/2006)\n- Save is triggered every few seconds, leading to glitches in handwriting [#2004](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/2004)\n- Canvas shifts when editing text reaches right hand side of the canvas, especially at higher zoom values\n- Minor styling tweaks to adapt to Obsidian 1.7.1 new stylesheet, in particular to scale Excalidraw properly in line with Obsidian Appearance Setting Font-Size value.\n- Tweaked Compatibilty Setting description to mention Obsidian 1.7.1 Footnotes support\n","2.4.2":"\nThis release addresses critical issues for all Obsidian Mobile users.\n\n#### 😞 I made two mistakes...\n- I expedited the 2.4.1 release to resolve a major bug, but in doing so, I skippes some of my usual rigorous testing\n- I included a new feature in 2.4.1 fresh from Excalidraw.com because I believe it brings significant end user benefits and did not want to wait until October. However, a small part of this feature was designed for server-side execution on Excalidraw.com, not for local use on Obsidian Mobile.\n\nDespite the recent two (2.4.1 and 2.4.2) emergency bug-fix releases, this doesn't deviate from the [monthly release schedule](https://youtu.be/2poSS-Z91lY). The next feature update is still planned for early October.\n\n## Fixes:\n- **Excalidraw rendering issues on Obsidian Mobile:** [#1995](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1995), [#1997](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1997)\n - Nested Excalidraw drawings with text failed to render.\n - Drawings in Markdown view didn't render if they contained text and were set to SVG Image or SVG Native (they worked with PNG).\n - SVG export failed for drawings containing text.\n- **LaTeX equation duplication:** After using ALT+Drag to duplicate a LaTeX equation, editing the duplicate modified the original instead. [#1984](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1994)\n- **Unreadable Obsidian search results:** When drawings contained numerous Element Links and Embedded Files Links, search results became unreadable. This fix will apply to files saved after installing the update. [#1999](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1999)\n","2.4.1":`\nThis release includes an important fix that can result in your drawing being overwritten by another drawing. Please update to this version as soon as possible.\n\n## Fixed\n- A problem where switching between two Excalidraw documents in the same tab could result in the content from the first document overwriting the second one, particularly when the first document was large. [#1988](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1988)\n- Styling issue when Obsidian font size is set to the non-default value.\n- Embedding a block reference ${String.fromCharCode(96)}![[file#^block]]${String.fromCharCode(96)} where the file is an excalidraw file incorrectly replaced the embedding with the image instead of the block of text.\n\n## New\n- Improved SVG export to include only the necessary glyphs for .woff2 fonts, minimizing file sizes. Note that this feature is currently supported only for .woff2 files; other font formats like .ttf and .otf will be fully embedded, leading to larger SVG files. I recommend using .woff2 files whenever possible.\n`,"2.4.0":'\n
\n\n
\n\n## New\n- Flowcharts with CTRL/CMD+Arrow and ALT/OPT+Arrow keys\n- Improved PDF Support\n - PDF++ cropped area paste\n - Import PDF into frames\n- Element links with metadata\n- Obisidan Hotkey overrides\n- Support for Zotero style markdown links\n\n## QoL\n- Much improved freedraw flow, less autosave glitches\n- Link editor CTRL+Meta/(CTRL+CMD) + click or via the command palette "Open the image-link or LaTeX-formula editor.\n- Improved search and search results\n- Disable double tap ereaser activation in pen mode\n- Single click editing of markdown embeddables\n- Set grid size and frequency\n- Improved paste\n- Pan & Zoom while editing Text\n- Save active too-state (e.g. tool-lock) with the drawing\n- Show/hide "sword" splashscreen in new drawings\n\n## Fixed\n- Duplicate line points when Alt+click adding new points in line editor- - Excalidraw Automate measureText, impacting gate placement in ExcaliBrain\n- If a group includes a frame, the image reference will include all the elements in the frame, not just the frame\n- Excalidraw rendering issues in markdown preview\n- Markdown pages embedded in Excalidraw were broken\n- Drawing did not save arrow type\n- Fixed rendering of newly pasted links\n\n## ExcalidrawAutomate\n- new functions\n - tex2dataURL\n - addElementsToFrame\n - resetImageAspectRatio\n- Changed\n - getViewSelectedElements(includeFrameChildren: boolean = true);\n - getOriginalImageSize with option to wait for the image to load\n',"2.3.0":`\nI am moving to a new release approach aiming to publish one update per month to the Obsidian script store. If you want to continue to receive more frequent updates with new features and minor bug fixes, then join the beta testing team. [#1912](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1912)\n\n
\n\n
\n\n## New\n- Elbow connectors: https://x.com/excalidraw/status/1819084086222393554\n\n## Fixed \n- Convert Markdown to Excalidraw did not work correctly when there was ${String.fromCharCode(96)}---${String.fromCharCode(96)} anywhere in the file, but no frontmatter (e.g. a table)\n- Fixed Obsidian move tab to new window\n- Fixed duplicating bound arrows without its bound elements throwing error [#8315](https://github.com/excalidraw/excalidraw/issues/8315)\n`,"2.2.13":`\n## Fixed\n- Could not undo element after pasting [#1906](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1906)\n- Links broke after renaming an Excalidraw file using the F2 shortcut [#1907](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1907)\n- Unable to open or convert very large ${String.fromCharCode(96)}.excalidraw${String.fromCharCode(96)} file, e.g. BoaPs you can download from [here](https://ko-fi.com/zsolt/shop)\n`,"2.2.12":"\n## Fixed\n- Rename moved files to root folder [#1905](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1905)\n- Fonts not displaying correctly in cached image previews\n","2.2.11":'\nbadges\n\n## New\n- Font picker with additional fonts (not yet fully configurable, but that will come in due time) [#8012](https://github.com/excalidraw/excalidraw/pull/8012)\n- Introducing Visual Thinking Badges. The more you use Excalidraw the higher your rank will be. Levels are: Bronze, Silver, Gold and Platinum.\n\n## Fixed\n- Embedded PDF was not visible on phones [#1904](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1904)\n- F2 does not rename files in Excalidraw View [#1900](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1900)\n- Wireframe to Code now honors the GPT model settings in plugin settings. [#1901](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1901)\n- Updated ExcaliAI to support gpt-4o for vision. [#1859](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1859) 🙏@Saik0s\n- Minor fixes from excalidraw.com [#8287](https://github.com/excalidraw/excalidraw/pull/8287), [#8285](https://github.com/excalidraw/excalidraw/pull/8285)\n',"2.2.10":`\n
\n\n
\n\n## Fixed\n- Drastically degraded rendering performance when zoomed in and when arrows with labels are used. [#8267](https://github.com/excalidraw/excalidraw/pull/8267), [#8266](https://github.com/excalidraw/excalidraw/pull/8266), [#1893](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1893)\n- Frame title font in exports. \n\n## New\n- Area, Group, Frame, and Clipped-Frame references to images now also work when pasting images to Excalidraw.\n- The new reference type ${String.fromCharCode(96)}clippedframe=${String.fromCharCode(96)} works in the same way as ${String.fromCharCode(96)}frame=${String.fromCharCode(96)} but will display the elements clipped by the frame. ${String.fromCharCode(96)}clippedframe=${String.fromCharCode(96)} will always display the image with zero padding.\n- New command palette action: ${String.fromCharCode(96)}Frame Settings${String.fromCharCode(96)} gives you fine-grained control over how frames are rendered. Frame settings will also be reflected in image exports. For example, if you hide the frame name or outline, then in exports they will not be visible.\n`,"2.2.9":'\n## New\n- Improved the "Open the back-of-the-note of the selected Excalidraw image" action. It now works with grouped elements and keeps the popout window within the visible screen area when elements are close to the top of the canvas. Note: Due to an Obsidian bug, I do not recommend using this feature with versions 1.6.0 - 1.6.6, if you have Obsidian Sync enabled, because Obsidian may freeze when closing the popout window. It functions properly in Obsidian versions before 1.6.0 and from 1.6.7 onwards. \n\n## Fixed\n- Drag and drop from a local folder (outside Obsidian) resulted in duplicate images.\n- Insert Link Action did not work [#1873](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1873)\n- Insert Obsidian Command Action did not work\n- Element link for text element got deleted when editing the text. [#1878](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1878)\n- When back-of-the-drawing Section Headings have spaces in them, clicking the link opens the drawing side not the markdown side. [#1877](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1877)\n- obsidian:// links did not work as expected. [#1872](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1872)\n- copying and moving a rectangle with text, moves the text unexpectedly. The issue should now be resolved (at least much less likely to occur) [#1867](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1867)\n',"2.2.8":"\nWhile this release may appear modest with no new features, it represents nearly 50 hours of dedicated work. Here's what's been improved:\n\n- **Enhanced Memory Management**: Significant improvements to optimize memory usage.\n- Bug Fixes:\n - Support for multi-file drag and drop from the operating system.\n - Correct theming of animated GIFs as Embeddables.\n - Several other minor bug fixes.\n\nPlease note that due to extensive refactoring of the codebase, there may be some unexpected issues. Thanks for your understanding and patience.\n","2.2.7":"\n## New\n- In Miscellaneous Settings: added **Load Excalidraw Properties into Obsidian Suggester**. This setting toggles the automatic loading of Excalidraw properties at startup. Enabled by default for easy use of front matter properties. Disabling it prevents auto-loading, but you'll need to manually remove unwanted properties using Obsidian properties view. A plugin restart is required after enabling auto-loading.\n\n## Fixed\n- Zotero support [1835](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1835)\n- Lines binding to elements and selections [#8146](https://github.com/excalidraw/excalidraw/issues/8146), and plugin getting stuck with dragging an element [#8131](https://github.com/excalidraw/excalidraw/issues/8131)","2.2.6":`\n## Fixed\n- CTRL+F search for text elements in drawing, the result did not get selected. This was a regression in 2.2.5 [#1822](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1822)\n\n## New\n- Zotero compatibility support for back-of-the-side markdown notes. This needs to be enabled in plugin settings under Compatibility [#1820](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1820)\n\n## New from Excalidraw.com\n- ${String.fromCharCode(96)}Stats & Element Properties${String.fromCharCode(96)}, accessible via the context menu, is now editable, e.g. you can type in the exact position and size of objects, change font size and set element angle.\n- Pasting mermaid diagrams from chatGPT will embed a diagram instead of the text\n`,"2.2.5":`\n## Fixed\n- Cursor visibility in dark mode [#1812](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1812)\n- SVG to Excalidraw now...\n - converts elements inside the ${String.fromCharCode(96)}${String.fromCharCode(96)} tag, improving compatibility with SVGs from [The Noun Project](https://thenounproject.com/)\n - sets visibility for all elements, preventing invisible converted images.\n- Cached images sometimes lost their font face and natural size when nested in an Excalidraw scene. This issue occurred when drawings were embedded in a markdown note (native SVG) and nested in a drawing simultaneously. Depending on the update and render sequence, these drawings sometimes appeared incorrectly in the Excalidraw scene.\n`,"2.2.4":`\n
\n \n \n \n
\n\n## New from Excalidraw.com\n- You can now set the text width even during creation. Simply drag with the text tool. Note, there's a minimum distance before the text enters the wrapped mode so there aren't false positives. [See example here](https://x.com/excalidraw/status/1795468201335075000)\n\n## New\n- Updated zh-cn translation. Thank you @dmscode \n- New context menu and command palette action: "Move back-of-note card to File". This is only active when an eligible embeddable element is selected.\n\n## Fixed\n- Setting different autosaveIntervals on Desktop and Mobile will no longer trigger unnecessary commits to settings each time you open Excalidraw on a different device. Thanks @jmhammond for the contribution! [#1805](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1805), [#1652](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1652), [#888](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/888)\n\n## Fixed in ExcalidrawAutomate\n- ${String.fromCharCode(96)}getCM(color)${String.fromCharCode(96)} was missing from ${String.fromCharCode(96)}ea.help()${String.fromCharCode(96)}. It is now added. getCM returns a ColorMaster object. ColorMaster is a powerful library should you want to create scripts to manipulate colors. Check out my [Scripting Colors](https://youtu.be/7gJDwNgQ6NU) video should you want to learn more. [#1806](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1806)\n`,"2.2.3":`\n## Fixed\n- Undo history was not properly initialized [#1791](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1785)\n- Excalidraw did not save edits when switching to markdown view mode with a hotkey or terminating the popout window\n- SVG export did not maintain the aspect ratio of manually distorted images [#1780](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1780)\n\n## New\n- In pen mode, double tapping the screen will toggle the eraser tool when using freedraw tool, or one of the other tools in locked mode.\n- New setting under "Excalidraw appearance and behavior" to disable rendering of Excalidraw drawings in hover previews, in case the file has the ${String.fromCharCode(96)}excalidraw-open-md: true${String.fromCharCode(96)} frontmatter property [#1795](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1795)\n- Additional foolproofing of ${String.fromCharCode(96)}# Excalidraw Data${String.fromCharCode(96)}. The file is now more resilient to automated linting and other changes. There is also a new setting under "Compatibility Features" to add a dummy first text element to ${String.fromCharCode(96)}## Text Elements${String.fromCharCode(96)}. You can use this feature if your auto-linter adds empty lines after section headings.\n- Pasting markdown code blocks will create a back-of-the-note card with the code block. CTRL+SHIFT+V will paste the text as a normal text element. When copying code from Chat GPT the markdown code fence (triple backtick) is missing. In this case, you may use the new context menu action "Paste code block" to create a back of the note card with the code block.\n- Pasting long text will be wrapped in the text element.\n\n## New in ExcalidrawAutomate\n- Updated viewUpdateScene: This now implements the [new Excalidraw API](https://github.com/excalidraw/excalidraw/pull/7898)\n${String.fromCharCode(96,96,96)}ts\n viewUpdateScene (\n scene: {\n elements?: ExcalidrawElement[],\n appState?: AppState,\n files?: BinaryFileData,\n commitToHistory?: boolean,\n storeAction?: "capture" | "none" | "update",\n },\n restore: boolean = false,\n ):void ;\n ${String.fromCharCode(96,96,96)}\n- Updated addText. The function now supports the new text-wrapping feature\n${String.fromCharCode(96,96,96)}ts\n addText(\n topX: number,\n topY: number,\n text: string,\n formatting?: {\n autoResize?: boolean; //Default is true. Setting this to false will wrap the text in the text element without the need for the container. If set to false, you must set a width value as well.\n wrapAt?: number; //wrapAt is ignored if autoResize is set to false (and width is provided)\n width?: number;\n height?: number;\n textAlign?: "left" | "center" | "right";\n box?: boolean | "box" | "blob" | "ellipse" | "diamond";\n boxPadding?: number;\n boxStrokeColor?: string;\n textVerticalAlign?: "top" | "middle" | "bottom";\n },\n id?: string,\n ): string\n ${String.fromCharCode(96,96,96)}\n `,"2.2.2":"\n## Fixed\n- ExcaliBrain stopped working with 2.2.0\n\n![I apologize](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/3b05aa28-788d-4329-9721-798ad58a6ca2)\n","2.2.1":"\n## Fixed\n- Text height becomes unreadable after 2.2.0 update [#1784](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1784)\n- Images are loaded with a rounded border when loading old Excalidraw files\n- Embedded Excalidraw images cache gets stuck with old version of the image\n- Extremely long loading times with legacy (3+ years old) Excalidraw files\n","2.2.0":`\n
\n\n
\n\n⚠️⚠️⚠️ BREAKING CHANGE ⚠️⚠️⚠️\nFiles you save with 2.2.0 are not backward compatible with earlier plugin versions!\n\n## New from excalidraw.com\n- Wrapable text elements (without the need for transparent sticky notes!)\n\n## New\n- File format. I nested all Excalidraw markup under ${String.fromCharCode(96)}# Excalidraw Data${String.fromCharCode(96)}. Here's the new structure.\n${String.fromCharCode(96,96,96)}markdown\n---\nexcalidraw-plugin: parsed\nother-frontmatter-properties: values\n---\nback of the note bla bla bla\n\n# Excalidraw Data\n## Text Element\n## Element Links\n## Embedded Files\n%%\n## Drawing\n%%\n${String.fromCharCode(96,96,96)}\n- When opening Excalidraw in Markdown ${String.fromCharCode(96)}# Excalidraw Data${String.fromCharCode(96)} will be folded.\n- New command palette action: ${String.fromCharCode(96)}Open the back-of-the-note of the selected Excalidraw image${String.fromCharCode(96)}. The action is only visible when selecting an embedded Excalidraw drawing in the Scene. On a desktop, the command will open the back of the selected card in a popout window, and on a mobile, in a new tab.\n\n## Fixed\n- Drag and drop from Finder/Explorer (OS external). Images will retain their filenames. PDFs will be imported to the Vault. [#1779](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1779)\n`,"2.1.8":'\n## Fixed\n- Fixing issues that surfaced after upgrading to Obsidian 1.6.0\n - Fixed Excalidraw hover previews\n - Cursor for editing links, text elements, and frame names became virtually invisible if Obsidian was in dark mode and Excalidraw in light mode and vica versa.\n - Rendering Excalidraw drawings in Markdown views, right after Obsidian loaded did not work.\n- I implemented more graceful fail if you submitted a malformed SVG for SVG to Excalidraw conversation. [#1768](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1768)\n\n## New\n- New setting under "Save" in plugin settings to NOT decompress JSON when switching to Markdown view mode. For details see description under "Save" settings. The benefit is smaller file size and fewer results in the Obsidian search. If you want to edit the JSON, you can always manually decompress JSON in markdown view mode with the command palette action "Excalidraw: Decompress JSON".\n',"2.1.7:":`\n
\n\n
\n\n## Updates from Excalidraw.com\n- Improved undo management.\n- Improved handle to scale images from the side.\n- Changed arrow binding behavior.\n- Many other minor fixes and improvements.\n\n## New\n- Introduced image caching for nested (embedded) Excalidraw drawings on the scene. This enhancement should lead to improved scene loading times, especially when dealing with numerous embedded Excalidraw drawings.\n- Added new OCR Command Palette actions. Users can now re-run OCR and run OCR for selected elements.\n\n## Fixed\n- Fixed an issue where cropping an embeddable PDF frame in the Excalidraw Scene caused distortion based on the embeddable element's aspect ratio. ([#1756](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1756))\n- Removed the listing of ${String.fromCharCode(96)}# Embedded files${String.fromCharCode(96)} section when adding a "Back of the note card". ([#1754](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1754))\n- Resolved the issue where closing the on-screen keyboard with the keyboard hide button of your phone, instead of tapping somewhere else on the Excalidraw scene, did not resize the scene correctly. ([#1729](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1729))\n- Fixed the problem where pasting a text element as text into markdown incorrectly pasted the text to the end of the MD note, with line breaks as rendered on screen in Excalidraw. Also addressed the issue where pasting an image element as an image resulted in it being pasted to the end of the document. ([#1749](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1749))\n- Corrected the color inversion of embedded images when changing the theme from light to dark, then back from dark to light, and again from light to dark on the third change.\n- Addressed the problem where cropping an image while unlocking and rotating it in the cropper did not reflect the rotation. Note that rotating the image in Cropper required switching to markdown view mode, changing the "locked": true property to false, then switching back to Excalidraw mode. This issue likely impacted only a very few power users. ([#1745](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1745))\n\n## New in ExcalidrawAutomate\n${String.fromCharCode(96,96,96)}ts\n/**\n * Retruns the embedded images in the scene recursively. If excalidrawFile is not provided, \n * the function will use ea.targetView.file\n * @param excalidrawFile \n * @returns TFile[] of all nested images and Excalidraw drawings recursively\n */\n public getEmbeddedImagesFiletree(excalidrawFile?: TFile): TFile[];\n${String.fromCharCode(96,96,96)}\n\n`,"2.1.6":`\n## Two minor fixes\n- Scaling of LaTeX formulas when the formula is changed\n- If the back of the note card only contains a block embed ${String.fromCharCode(96)}![[embed]]${String.fromCharCode(96)} this got removed when saving the Excalidraw file. This issue has been present since November, 2021 (v1.4.9).\n`,"2.1.5":`\n## New\n- Save "Snap to objects" with the scene state. If this is the only change you make to the scene, force save it using CTRL+S (note, use CTRL on Mac as well).\n- Added "Copy markdown link" to the context menu.\n\n## Fixed\n- Paste operation occasionally duplicated text elements.\n- Pasting multiple instances of the same image from excalidraw.com or another instance of Obsidian, or pasting an image from anywhere and making copies with ALT/OPT + drag immediately after pasting (before autosave triggered) led to broken images when reopening the drawing.\n- CTRL/CMD+Click on a Text Element with an element link did not work (previously, you had to click the top right link indicator). Now, you can click anywhere on the element.\n- Hover preview for elements with a link only worked when hovering over the element link. Now, you can hover anywhere. If there are multiple elements with links, the top-level element will take precedence.\n- Link navigation within drawing when the "Focus on Existing Tab" feature is enabled under "Links, transclusion and TODOs" in settings works again.\n- If a link points to a back-of-the-card section or block the drawing will automatically switch to markdown view mode and navigate to the block or section.\n- DynamicSytle, dark mode when canvas background is set to transparent.\n- Scale to maintain the aspect ratio of a markdown notes embedded as images.\n- You can now borrow interactive markdown embeds to tables, blockquotes, list elements and callouts - not just paragraphs.\n- Back of the drawing cards:\n - Leaving the Section Name empty when creating the first back of the card note resulted in an error.\n - If you add the markdown comment (${String.fromCharCode(96)}%%${String.fromCharCode(96)}) directly before ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)}, a trailing ${String.fromCharCode(96)}#${String.fromCharCode(96)} will be added to your document, when adding a back of the card note. This is to hide the markdown comment from the card. The trailing (empty) ${String.fromCharCode(96)}#${String.fromCharCode(96)} will not be visible in reading mode, pdf exports, and when publishing with Obsidian Publish.\nHere's a sample markdown structure of your document:\n\n${String.fromCharCode(96,96,96)}markdown\n---\nexcalidraw-plugin: parsed\n---\n# Your back of the card section\nbla bla bla\n\n#\n%%\n# Text Elements\n... the rest of the Excalidraw file\n${String.fromCharCode(96,96,96)}\n`,"2.1.4":`\n## Fixed\n- Fixed the **aspect ratio** of an Excalidraw embedded within another Excalidraw **not updating**. [#1707](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1707)\n- Some plugins automatically add document properties to all files in the Vault. Users with this configuration were **unable to run Excalidraw scripts**. Excalidraw now removes document properties from the script before execution.\n- The very last markdown edit sometimes **wasn't saved when immediately switching from Markdown to Excalidraw View**. I now force a save before switching views. \n- The setting to disable/enable ${String.fromCharCode(96)}CTRL/CMD + CLICK on text with [[links]] or [](links) to open them${String.fromCharCode(96)} works again. [#1704](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1704)\n- **Annotation and cropping** of images in Markdown notes now also work **with Markdown links that have encoded characters** e.g.: ${String.fromCharCode(96)}![images with](markdown%20links)${String.fromCharCode(96)}.\n- Solved compatibility issue of **Taskbone OCR on Android**.\n\n## New\n- New settings:\n - Under "Appearance and Behavior": Option to **render Excalidraw file as an image in Markdown reading mode**. This setting is disabled by default. [#1706](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1706), [#1705](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1705)\n - Under "Embedding Excalidraw ... and Exporting"/"Export Settings": Option to **render Excalidraw file as an image when exporting to PDF** in Markdown mode. This option is disabled by default. When enabled, exporting an Excalidraw drawing in markdown view mode to PDF will render the image on the page.\n- **Enhanced annotation and cropping** of images in Markdown documents:\n - Newly embedded **links will now follow the style of the original link**. If the original format was a ${String.fromCharCode(96)}![markdown](link)${String.fromCharCode(96)}, the annotated file will follow this format. For ${String.fromCharCode(96)}[[wiki links]]${String.fromCharCode(96)}, it will follow that style. Additionally, if an alias was specified like ${String.fromCharCode(96)}[[link|alias]]${String.fromCharCode(96)}, the annotated or cropped image will retain the alias.\n - Introduced a new setting under "Saving" titled **"Preserve image size when annotating"**. This setting is disabled by default. When enabled, the embed link replacing the annotated image will maintain the size of the original image.\n- Option to **automatically embed the scene in exported PNG and SVG image files**. Including the scene will allow users to open the picture on Excalidraw.com or in another Obsidian Vault as an editable Excalidraw file.New setting is under the Export category. The new frontmatter tag is: ${String.fromCharCode(96)}excalidraw-export-embed-scene: true/false${String.fromCharCode(96)}.\n`,"2.1.3":"\nThis is a republish of 2.1.2 with a minor change. Sorry about the frequent releases. I will hold back for a few weeks now.\n","2.1.2":'\n## Quality of Life Improvements\n- The "Insert Any File" option that disappeared from the Command Palette is now restored. [#1690](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1690)\n- Improved two-finger pan speed.\n- Fixed text wrapping issue that caused text to jump around when editing text in a sticky note when the Obsidian zoom level was not set to 100%.\n- Mask Generation in [ExcaliAI](https://youtu.be/3G8hsV-V-gQ) Edit Image now works properly again. [#1684](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1684)\n- Fixed aspect ratio change for .jpg, .png, .bmp, .webp, .SVG (non-Excalidraw) images. Previously, if the image was distorted (i.e. you held SHIFT while resizing it), it would revert to the original aspect ratio upon saving the drawing. Resetting the aspect ratio is the desired behavior for nested Excalidraw drawings since you might have changed the source image and want it to still display with the correct aspect ratio, however for other image files, the behavior is not desired. [#1698](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1698)\n- The command palette action "Set selected image element size to 100% of original" now works even on freshly pasted images, not just after saving the drawing. ([#1695](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1698))\n- If a text element has an element link (CTRL/CMD+K), but the link was not reflected in the Element Text, then CTRL/CMD+clicking the text element did not navigate to the link, only clicking the link indicator did. Now you can also CTRL/CMD click anywhere on the text element and it will navigate. Note, however, that links in the text element text take precedence over element links.\n',"2.1.1":`\n## Fixed\n- Printing a markdown page that has an Excalidraw drawing on the back side, resulted in an empty PDF. This is now resolved.\n\n## New\n- Reduce the visual clutter by fading out the Excalidraw markup in markdown view mode. This feature needs to be enabled in plugin settings. You'll find the setting under ${String.fromCharCode(96)}Miscellaneous features${String.fromCharCode(96)}. Look for ${String.fromCharCode(96)}Fade out Excalidraw markup${String.fromCharCode(96)}. Depending on the location of the markdown comment ${String.fromCharCode(96)}%%${String.fromCharCode(96)}, if the comment starts before ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} then the fading will start from ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)}, if the comment is before ${String.fromCharCode(96)}# Drawing${String.fromCharCode(96)} then the fading will only start with "drawing". If you delete the opening ${String.fromCharCode(96)}%%${String.fromCharCode(96)} the markup will be visible. Note, that if you place the comment before ${String.fromCharCode(96)}#Text Elements${String.fromCharCode(96)}, you will not be able to reference blocks in the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section, because Obsidian does not index blocks within comment blocks. Image references are not effective, they will work.\n\n\n\n`,"2.1.0":`\nBumping the version to 2.1.0 due to minor file format changes that aren't backward compatible. Essentially, 2.0.26 is already not backward compatible, but I forgot to update the version number.\n\nIf you haven't watched the [walkthrough video](https://youtu.be/tHUcD4rWIuY) for 2.0.26, I recommend you do so.\n\n## New\n- Settings under ${String.fromCharCode(96)}Excalidraw Appearance and Behavior${String.fromCharCode(96)}\n - Configure visibility of the crosshair cursor when using the pen tool. [#1673](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1673)\n - Set the time delay for long press to open drawings from markdown under "Link Click and Modifier Keys".\n\n## \n`,"2.0.26":`\n
\n\n
\n\n## New\n- Minor updates from [Excalidraw.com](https://excalidraw.com). The key change is text measurements that should result in consistent text sizing between desktop and mobile devices.\n- Now you can embed the markdown section of an Excalidraw note to your drawing. Simply select ${String.fromCharCode(96)}Insert ANY file${String.fromCharCode(96)}, choose the drawing, and select the relevant heading section to embed.\n - This also works with "back-of-the-drawing" markdown sections. Use the context menu ${String.fromCharCode(96)}Add back-of-note Card${String.fromCharCode(96)}. The action is also available on the Command Palette and in the Excalidraw-Obsidian Tools Panel.\n- Editing an embedded markdown note is now easier. Just press Enter when the element is selected. [#1650](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1650)\n- The crosshair cursor is now hidden when the freedraw tool is active and using a pen. [#1659](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1659)\n- ${String.fromCharCode(96)}Convert markdown note to Excalidraw Drawing${String.fromCharCode(96)} now converts an existing markdown note (not just empty notes) into a drawing. The original markdown note will be on the "back side of the drawing".\n- Introducing ${String.fromCharCode(96)}Annotate image in Excalidraw${String.fromCharCode(96)}, which works very similarly to ${String.fromCharCode(96)}Crop and mask image${String.fromCharCode(96)}. You can replace an image in a markdown note or on the Obsidian Canvas with an Excalidraw drawing containing that image. You will be able to annotate the image in Excalidraw.\n- Now you can reference frames in images embedded in markdown and canvas with frame names e.g. ${String.fromCharCode(96)}![[drawing#^frame=Frame 01]]${String.fromCharCode(96)}\n- Excalidraw file format change:\n - New frontmatter switch ${String.fromCharCode(96)}excalidraw-open-md${String.fromCharCode(96)}: If set to true, the file by default will open as a markdown file. You can switch to Excalidraw View Mode via the command palette action or by right-clicking the tab.\n - Easter Egg: If you add a comment in front of ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)}, then the entire Excalidraw data: markdown and JSON will be commented out, thus invisible when exporting to the web. If you remove the comment from before ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)}, then only the JSON will be commented out.\n\nBefore:\n${String.fromCharCode(96,96,96)}markdown\n#1657 \n%%\n# Text Elements\n...\n# Drawing\n${String.fromCharCode(96,96,96)}\n\nAfter:\n${String.fromCharCode(96,96,96)}markdown\n# Text Elements\n....\n%%\n# Drawing\n${String.fromCharCode(96,96,96)}\n`,"2.0.25":'\n# New - a small change that opens big opportunities\n- You can now set a folder as the Excalidraw Template in settings (See under Basic). If a folder is provided, Excalidraw will treat drawings in that folder as templates and will prompt you to select the template to use for new drawings.\n- I updated the Deconstruct Selected Elements into new Drawing script to accommodate the new template setting.\n',"2.0.24":`\nQuality of Life Fixes!\n\n## Fixed\n- Text editing issue on mobile devices with an on-screen keyboard is now fixed 🥳. Previously, Excalidraw's UI fell apart when the keyboard was activated, and often even after you stopped editing, the canvas positioning was off. I hope to have solved the issue (we'll see after your testing and feedback!). This is one of those cases that seems insignificant but took enormous effort. It took me 2.5 full days of net time to figure out the root cause and the solution (this is not an exaggeration).\n- Tool buttons did not get selected on the first click.\n- Images flicker on Forced Save.\n- Hover preview fixes:\n - ${String.fromCharCode(96)}area=${String.fromCharCode(96)}, ${String.fromCharCode(96)}group=${String.fromCharCode(96)}, ${String.fromCharCode(96)}frame=${String.fromCharCode(96)} references now display the part of the image as expected in hover preview (showed an empty preview until now).\n - Block and section references to notes on the "back side of the drawing" now correctly show up in hover preview (showed an empty preview until now).\n\n## New\n- Default height setting in Plugin Settings. Thanks @leoccyao! [#1612](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1612)\n`,"2.0.23":`\n## New\n- Additional arrowheads (Circle, Circle Outline, Diamond, Diamond Outline, Triangle Outline) are now available via element properties.\n- Setting under "Links and Transclusions" to show/hide second-order links\n\n## Fixed\n- some styling issues with dynamic styles (e.g.: text color of context menu)\n\n## New in ExcalidrawAutomate\n- Excalidraw Publish Support: New hook to modify the link in the exported SVGs. This is useful when you want to export SVGs to your website. If set, this callback is triggered whenever a drawing is exported to SVG. The string returned by the hook will replace the link in the exported SVG. The hook is only executed if the link is to a file internal to Obsidian. [1605](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1605)\n${String.fromCharCode(96,96,96)}js\nonUpdateElementLinkForExportHook: (data: {\n* originalLink: string,\n* obsidianLink: string,\n* linkedFile: TFile | null,\n* hostFile: TFile,\n* }) => string = null;\n${String.fromCharCode(96,96,96)}\n`,"2.0.22":"\n## Fixed\n- BUG: Unable to load obsidian excalidraw plugin on ipad 15.x or older [#1525](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1525)\n- BUG: ea.help does not display help if only function signature is available [#1601](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1601)\n","2.0.21":`\n## New/changed\n**"Focus on Existing Tab"**\n- New Setting: Disabled by default.\n - Prevents multiple instances of the same drawing from opening when clicking on links within Excalidraw.\n - Overrides the "Reuse Adjacent Pane" option when the file is already open.\n - Accessible under "Links, Transclusions, and TODOs" in plugin settings.\n\n**Enhanced Context Menu Functions for Text Containers**\n- Two new context menu functions added for containers with a text element:\n - Right-click to select the text element only, allowing independent color changes from the container.\n - Remove orphaned element links when the text element has a link but no longer includes a link in the text.\n\n**Improved Laser Pointer Activation**\n- Laser pointer activation on double tap in view mode removed due to interference with link navigation and other features.\n- When the drawing is in "view" mode, laser pointer activation now available via long-press/right-click context menu.\n- Alternatively, activate the laser pointer with "k" if you have a keyboard.\n\n## Fixed\n- **Older iOS and Android webview support**: Rebuilt all packages and dependencies with Node 18, hoping to address (sorry I can't reproduce/test these issues myself) compatibility issues with older iPad OS versions, up to 15.7. [#1525](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1525), and Android [1598](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1598)\n- **Double-click navigation**: Fixed the issue where double-clicking an embedded image did not navigate to the link in view mode.\n- **ExcaliBrain new file creation**: Resolved the issue with new file creation from ExcaliBrain. [#201](https://github.com/zsviczian/excalibrain/issues/201)\n- **Canvas immersive style**: Removed Canvas immersive embedding style support from the Excalidraw stylesheet to address performance issues experienced by some users with various Obsidian themes. If you require this feature, you can add a CSS snippet with the provided code.\n\n${String.fromCharCode(96,96,96)}css\n.canvas-node:not(.is-editing):has(.excalidraw-canvas-immersive) {\n ::-webkit-scrollbar,\n ::-webkit-scrollbar-horizontal {\n display: none;\n }\n background-color: transparent !important;\n}\n\n.canvas-node:not(.is-editing) .canvas-node-container:has(.excalidraw-canvas-immersive) {\n border: unset;\n box-shadow: unset;\n}\n${String.fromCharCode(96,96,96)}\n`,"2.0.20":`\n## Fixed in ExcalidrawAutomate\n- Regression: ${String.fromCharCode(96)}ea.getMaximumGroups(elements)${String.fromCharCode(96)} stopped working after the 2.0.19 update. [#1576](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1576)\n`,"2.0.19":'\n
\n\n
\n\n## Fixed\n- When updating Excalidraw, some open drawings weren\'t automatically reopening. I hope I got this fixed (note this change will only have an effect when you receive the update after this).\n- In dark mode, the frame header is challenging to see when modified [#1568](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1568).\n\n## New\n- Crop PDF pages:\n - Available in Excalidraw, Markdown Notes, and on the Canvas.\n - Crop the active page from the embedded PDF viewer and insert the cropped image into the current view, both in Excalidraw and on Canvas.\n- New Command Palette Action: "Insert active PDF page as image." This action is functional in Excalidraw. If an embedded Obsidian-PDF-viewer is present, executing this command will insert the active page as an image into the Excalidraw scene.\n- Two new settings introduced:\n - "Basic" section allows setting the folder for crop files.\n - "Saving/filename" section enables setting the prefix for crop files.\n- PDF import now defaults to importing all pages.\n- Rounded corners now available for images.\n- Second-order links now encompass forward links from embedded Excalidraw Files.\n- Clicking a cropped file in a markdown note or on Canvas will prompt to open the original file, not just the cropper.\n',"2.0.18":'\n## New\n\n
\n \n \n \n
\n\n- [Crop Vintage Mask Script](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Crop%20Vintage%20Mask.md) adds rounded corner mask to cropped images. Install it from the script library.\n- Advanced Setting: Modify image zoom memory limit for sharper zoom. See under "Non-Excalidraw.com Supported Features" in settings.\n- Laser Pointer will not activate on double-click in ExcaliBrain\n\n## Fixed\n- Resolved cropping issue with rotated images.\n\n## New in ExcalidrawAutomate\n- You can now specify elementId to add functions: addLine, addArrow, addRect, etc.\n- ea.help() now provides help on Script Engine utils functions as well\n- ea.isExcalidrawMask(file?:TFile) will return true if the currently open view or the supplied file is an Excalidraw Mask file.\n',"2.0.17":"\n## Fixed\n- Image cropping now supports dark mode\n- Image cropping/carve out was not working reliably in some cases [#1546](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1546)\n- Masking a mirrored image resulted in an off-positioned mask\n\n## New\n- Context menu action to convert SVG to Excalidraw strokes\n- Updated Chinese translation (Thank you @tswwe)\n","2.0.16":"\n## Fixed\n- Image cropping did not work consistently with large image files on lower-powered devices [#1538](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1538). \n- Mermaid editor was not working when Excalidraw was open in an Obsidian popout window [#1503](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1503)\n","2.0.15":'\n
\n\n
\n\n## New\n- Crop and Mask Images in Excalidraw, Canvas, and Markdown. (Inspired by @bonecast [#4566](https://github.com/excalidraw/excalidraw/issues/4566))\n- Draw metadata around images but hide it on the export.\n\n## Fixed\n- Freedraw closed circles (2nd attempt)\n- Interactive Markdown embeddable border-color (setting did not have an effect)\n',"2.0.14":'\n## New\n- Stylus button now activates the eraser function. Note: This feature is supported for styluses that comply with industry-standard button events. Unfortunately, Samsung SPEN and Apple Pencil do not support this functionality.\n\n## Fixed\n- Improved handwriting quality. I have resolved the long-standing issue of closing the loop when ends of the line are close, making an "u" into an "o" ([#1529](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1529) and [#6303](https://github.com/excalidraw/excalidraw/issues/6303)).\n- Improved Excalidraw\'s full-screen mode behavior. Access it via the Obsidian Command Palette or the full-screen button on the Obsidian Tools Panel ([#1528](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1528)).\n- Fixed color picker overlapping with the Obsidian mobile toolbar on Obsidian-Mobile.\n- Corrected display issues with alternative font sizes (Fibonacci and Zoom relative) in the element properties panel when editing a text element (refer to [2.0.11 Release Notes](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.11) for details about the font-size Easter Egg).\n- Resolved the issue where Excalidraw SVG exports containing LaTeX were not loading correctly into Inkscape ([#1519](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1519)). Thanks to 🙏@HyunggyuJang for the contribution.\n',"2.0.13":"\n## Fixed\n- Excalidraw crashes if you paste an image and right-click on canvas immediately after pasting.\n","2.0.12":'\n## Fixed\n- Stencil library not working [#1516](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1516), [#1517](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1517)\n- The new convert image from URL to Local File feature did not work in two situations:\n - When the embedded image is downloaded from a very slow server (e.g. OpenAIs temp image server)\n - On Android\n- The postToOpenAI function did not work in all situations on Android.\n- ExcaliAI wireframe to code did not display correctly on Android\n- Tooltips kept popping up on Android.\n\n## New\n- Added "Save image from URL to local file" to the right-click context menu\n- Further [ExcaliAI](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/ExcaliAI.md) improvements including support for image editing with image mask\n',"2.0.11":`\n## Fixed\n- Resolved an Obsidian performance issue caused by simultaneous installations of Excalidraw and the Minimal theme. Optimized Excalidraw CSS loading into Obsidian since April 2021, resulting in noticeable performance improvements. ([#1456](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1456))\n- Removed default support for the [Sliding Panes Plugin](https://github.com/deathau/sliding-panes-obsidian) due to compatibility issues with Obsidian Workspaces. Obsidian's "Stack Tabs" feature now supersedes Sliding Panes. To re-enable sliding panes support, navigate to Compatibility Features in Plugin Settings.\n- Sometimes images referenced with URLs did not show in exported scenes and when embedding Excalidraw into a markdown note. I hope all that is now resolved.\n- ExcalidrawAutomate scripts sometimes were not able to save their settings.\n\n## New\n- Introduced an "Easter Egg" feature in font-size properties:\n - Hold SHIFT while selecting font size to use scaled sizes (S, M, L, XL) based on the current canvas zoom, ensuring consistent sizes within zoom ranges.\n - Hold ALT/OPT while selecting font size to use values based on the golden mean (s:16, m:26, l:42, xl:68). ALT+SHIFT scales font sizes based on canvas zoom.\n - Scaled sizes are sticky; new text elements adjust font sizes relative to the canvas zoom. Deselect SHIFT to disable this feature.\n - For more on the Golden Scale, watch [The Golden Opportunity](https://youtu.be/2SHn_ruax-s).\n- Added two new Command Palette Actions:\n - "Decompress current Excalidraw File" in Markdown View mode helps repair corrupted, compressed Excalidraw files manually.\n - "Save image from URL to local file" saves referenced URL images to your Vault, replacing images in the drawing.\n- Updated the ExcaliAI script to generate images using ExcaliAI.\n\n## New in ExcalidrawAutomate\n- Added additional documentation about functions to ea.suggester.\n- Added ea.help(). You can use this function from Developer Console to print help information about functions. Usage: ${String.fromCharCode(96)}ea.help(ea.functionName)${String.fromCharCode(96)} or ${String.fromCharCode(96)}ea.help('propertyName')${String.fromCharCode(96)} - notice property name is in quotes.\n`,"2.0.10":"\nOne more minor tweak to support an updated ExcaliAI script - now available in the script store.\n","2.0.9":"\nThis release is very minor, and I apologize for the frequent updates in a short span. I chose not to delay this fix for 1-2 weeks, waiting for my larger release. The WireframeToAI feature wasn't working in 2.0.8, but now it does.\n","2.0.8":`\n## New\n- Mermaid Class Diagrams [#7381](https://github.com/excalidraw/excalidraw/pull/7381)\n- New Scripts:\n - Repeat Texts contributed by @soraliu [#1425](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1425)\n - Relative Font Size Cycle [#1474](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1474)\n- New setting to configure the URL used to reach the OpenAI API - for setting an OpenAI API compatible local LLM URL.\n\n## Fixed\n- web images with jpeg extension were not displayed. [#1486](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1486)\n- MathJax was causing errors on the file in the active editor when starting Obsidian or starting the Excalidraw Plugin. I reworked the MathJax implementation from the ground up. [#1484](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1484), [#1473](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1473)\n- Enhanced performance for resizing sticky notes (resize + ALT) on slower devices when centrally adjusting their size.\n\n## New in ExcalidrawAutomate:\n- New ArrowHead types. Currently only available programmatically and when converting Mermaid Class Diagrams into Excalidraw Objects:\n${String.fromCharCode(96,96,96)}ts\n addArrow(\n points: [x: number, y: number][],\n formatting?: {\n startArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n endArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n startObjectId?: string;\n endObjectId?: string;\n },\n ): string;\n \n connectObjects(\n objectA: string,\n connectionA: ConnectionPoint | null,\n objectB: string,\n connectionB: ConnectionPoint | null,\n formatting?: {\n numberOfPoints?: number;\n startArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n endArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n padding?: number;\n },\n ): string;\n\n connectObjectWithViewSelectedElement(\n objectA: string,\n connectionA: ConnectionPoint | null,\n connectionB: ConnectionPoint | null,\n formatting?: {\n numberOfPoints?: number;\n startArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n endArrowHead?: "arrow"|"bar"|"circle"|"circle_outline"|"triangle"|"triangle_outline"|"diamond"|"diamond_outline"|null;\n padding?: number;\n },\n ): boolean;\n${String.fromCharCode(96,96,96)}\n`,"2.0.7":'\n
\n\n
\n\n# Fixed\n- The Android and iOS crash with 2.0.5 😰. I can\'t apologize enough for releasing a version that I did not properly test on Android and iOS. That ought to teach me something about last-minute changes before hitting release.\n- Scaled-resizing a sticky note (SHIFT+resize) caused Excalidraw to choke on slower devices\n- Improved plugin performance focusing on minimizing Excalidraw\'s effect on Obsidian overall\n- Images embedded with a URL often did not show up in image exports, hopefully, the issue will less frequently occur in the future.\n- Local file URL now follows Obsidian standard - making it easier to navigate in Markdown view mode.\n\n# New\n- Bonus feature compared to 2.0.4: Second-order links when clicking embedded images. I use images to connect ideas. Clicking on an image and seeing all the connections immediately is very powerful.\n- In plugin settings, under "Startup Script", the button now opens the startup script if it already exists.\n- Partial support for animated GIFs (will not show up in image exports, but can be added as interactive embeddables)\n- Configurable modifier keys for link click action and drag&drop actions.\n- Improved support for drag&drop from your local drive and embedding of files external to Excalidraw.\n',"2.0.5":'\n
\n\n
\n\n# Fixed\n- Scaled-resizing a sticky note (SHIFT+resize) caused Excalidraw to choke on slower devices\n- Improved plugin performance focusing on minimizing Excalidraw\'s effect on Obsidian overall\n- Images embedded with a URL often did not show up in image exports, hopefully, the issue will less frequently occur in the future.\n- Local file URL now follows Obsidian standard - making it easier to navigate in Markdown view mode.\n\n# New\n- In plugin settings, under "Startup Script", the button now opens the startup script if it already exists.\n- Partial support for animated GIFs (will not show up in image exports, but can be added as interactive embeddables)\n- Configurable modifier keys for link click action and drag&drop actions.\n- Improved support for drag&drop from your local drive and embedding of files external to Excalidraw.\n',"2.0.4":`\n
\n\n
\n\n## New\n- ExcaliAI\n- You can now add ${String.fromCharCode(96)}ex-md-font-hand-drawn${String.fromCharCode(96)} or ${String.fromCharCode(96)}ex-md-font-hand-drawn${String.fromCharCode(96)} to the ${String.fromCharCode(96)}cssclasses:${String.fromCharCode(96)} frontmatter property in embedded markdown nodes and their font face will match the respective Excalidraw fonts.\n\n## Fixed\n- Adding a script for the very first time (when the script folder did not yet exist) did not show up in the tools panel. Required an Obsidian restart. \n- Performance improvements\n\n## New and updated In Excalidraw Automate\n- Added many new functions and some features to existing functions. See the [release notes](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.3) for details\n`,"2.0.3":'\n## Fixed\n- Mermaid to Excalidraw stopped working after installing the Obsidian 1.5.0 insider build. [#1450](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1450)\n- CTRL+Click on a Mermaid diagram did not open the Mermaid editor.\n- Embed color settings were not honored when the embedded markdown was focused on a section or block.\n- Scrollbars were visible when the embeddable was set to transparent (set background color to match element background, and set element background color to "transparent").\n',"2.0.2":'\n
\n\n
\n\n## Fixed\n- Resolved an issue where the Command Palette\'s "Toggle between Excalidraw and Markdown mode" failed to uncompress the Excalidraw JSON for editing.\n\n## New\n- Scaling feature for embedded objects (markdown documents, pdfs, YouTube, etc.): Hold down the SHIFT key while resizing elements to adjust their size.\n- Expanded support for Canvas Candy. Regardless of Canvas Candy, you can apply CSS classes to embedded markdown documents for transparency, shape adjustments, text orientation, and more.\n- Added new functionalities to the active embeddable top-left menu:\n - Document Properties (cog icon)\n - File renaming\n - Basic styling options for embedded markdown documents\n - Setting YouTube start time\n - Zoom to full screen for PDFs\n- Improved immersive embedding of Excalidraw into Obsidian Canvas.\n- Introduced new Command Palette Actions:\n - Embeddable Properties\n - Scaling selected embeddable elements to 100% relative to the current canvas zoom.\n',"2.0.1":'\n
\n\n
\n\n## Fixed\n- bug with cssclasses in frontmatter\n- styling of help screen keyboard shortcuts [#1437](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1437)\n',"2.0.0":`\n
\n\n
\n\n## New\n- Added support for applying CSS classes in frontmatter. Now, when embedding Excalidraw drawings into Obsidian Canvas, you can use [Canvas Candy](https://tfthacker.com/canvas-candy) classes. For instance, ${String.fromCharCode(96)}cssclasses: cc-border-none${String.fromCharCode(96)} removes the canvas node border around the drawing.\n- Introduced new context menu actions:\n - Navigate to link or embedded image.\n - Add any file from the vault to the canvas.\n - Convert the selected text element or sticky note to an embedded markdown file.\n - Add a link from the Vault to the selected element.\n- Frames are now rendered in exported images.\n- SVG Export includes the ${String.fromCharCode(96)}.excalidraw-svg${String.fromCharCode(96)} class, enabling post-processing of SVGs using publish.js when using custom domains with Obsidian Publish. Also, added a command palette action ${String.fromCharCode(96)}Obsidian Publish: Find SVG and PNG exports that are out of date${String.fromCharCode(96)}.\n- Added a new Command palette action to open the corresponding Excalidraw file based on the embedded SVG or PNG file. ${String.fromCharCode(96)}Open Excalidraw Drawing${String.fromCharCode(96)} [Issue #1411](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1411)\n\n## Fixed and Improved\n- Resolved issue with the Mermaid Timeline graph displaying all black. [Issue #1424](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1424)\n- Enabled toggling pen mode off after activation by a pen touch.\n- Now you are able to unlock elements on mobile; previously, locked elements couldn't be selected.\n- Fixed the disabled ${String.fromCharCode(96)}complete line button${String.fromCharCode(96)} for multipoint lines on mobile.\n![Mobile Editing Image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/e7051c75-818f-4800-ba16-ac276e229184)\n\n`,"1.9.28":"\n## Fixed & Improved\n- Fixed an issue where the toolbar lost focus, requiring two clicks. This caused a problem when the hand tool was activated from ExcalidrawAutomate script when opening a drawing, causing buttons to stop working. [#1344](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1344)\n- Resolved a caching issue affecting image area-links and group-links, making them work inconsistently. For more details, refer to the discussion on [Discord](https://discord.com/channels/1026825302900494357/1169311900308361318).\n- Improved frame colors with Dynamic Coloring.\n- Added support for multiline LaTeX formulas. [#1403](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1403)\n- Fixed the issue of Chinese characters overlapping in MathJax. [#1406](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1406)\n\n## New\n- Added support for Mermaid to Excalidraw **Sequence Diagrams**.\n- If an image contains an element link, clicking on the image will now open the link chooser, allowing you to decide whether to open the image or follow the element link.\n- When hovering over an image that also has an element link, the hover preview will display the contents of the link.\n- You can now choose to **import PDFs** in columns instead of rows. Additionally, you have the option to group all pages after import, which will improve the unlocking experience if you also lock pages on import.\n- Introduced configuration options for the **Laser Tool**, including pointer color, decay length, and time. ([#1408](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1408), [#1220](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1220))\n\n![image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/c0cad40a-1afc-42af-b41b-f912dd8a4e78)\n","1.9.27":'\n## New\n- Restructured plugin settings, added additional comments and relevant videos\n- Added setting to change PDF to Image resolution/scale. This has an effect when embedding PDF pages to Excalidraw. A lower value will result in less-sharp pages, but better overall performance. Also, larger pages (higher scale value) were not accepted by Excalidraw.com when copying from Obsidian due to the 2MB image file limit. Find the "PDF to Image" setting under "Embedding Excalidraw into your Notes and Exporting" setting. [#1393](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1393)\n\n## Fixed\n- When multiple Excalidraw Scripts were executed parallel a race condition occurred causing scripts to override each other\n- I implemented a partial fix to "text detaching from figures when dragging them" [#1400](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1400)\n- Regression: extra thin stroke removed with 1.9.26 [#1399](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1399)',"1.9.26":'\n## Fixes and improvements from Excalidraw.com\n- Freedraw shape selection issue, when fill-pattern is not solid [#7193](https://github.com/excalidraw/excalidraw/pull/7193)\n- Actions panel UX improvement [#6850](https://github.com/excalidraw/excalidraw/pull/6850)\n\n## Fixed in plugin\n- After inserting PDF pages as image the size of inserted images were incorrectly anchored preventing resizing of pages. The fix does not solve the issue with already imported pages, but pages you import in the future will not be anchored. \n- Mobile toolbar flashes up on tab change on desktop\n- Toolbar buttons are active on the first click after opening a drawing. This addresses the "hand" issue raised here: [#1344](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1344)\n',"1.9.25":`\n## Fixed\n- Fixed issues with creating Markdown or Excalidraw files for non-existing documents [#1385](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1385)\n- Resolved a bug where changing the section/block filter after duplicating a markdown embeddable now works correctly on the first attempt [#1387](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1387)\n\n## New\n- Easily create a markdown file and embed it as an embedded frame with a single click when clicking a link pointing to a non-existent file.\n![image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/4b9de54d-2382-4a52-b500-918ba2a60133)\n- Offline LaTeX support. The MathJax package is now included in the plugin, eliminating the need for an internet connection. [#1383](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1383), [#936](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/936), [#1289](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1289)\n\n## Minor Updates from excalidraw.com\n- Improved the laser pointer in dark mode.\n- Removed bound arrows from frames.\n- Enhanced fill rendering.\n- Maintained the z-order of elements added to frames.\n\n## New in ExcalidrawAutomate\n- Introduced two LZString functions in ExcalidrawAutomate:\n${String.fromCharCode(96,96,96)}typescript\ncompressToBase64(str:string):string;\ndecompressFromBase64(str:string):string;\n${String.fromCharCode(96,96,96)}\n`,"1.9.24":`\n## Fixed\n- Resolved some hidden Image and Backup Cache initialization errors.\n\n## New Features\n- Introducing the ${String.fromCharCode(96)}[[cmd://cmd-id]]${String.fromCharCode(96)} link type, along with a new Command Palette Action: ${String.fromCharCode(96)}Insert Obsidian Command as a link${String.fromCharCode(96)}. With this update, you can now add any command available on the Obsidian Command palette as a link in Excalidraw. When you click the link, the corresponding command will be executed. This feature opens up exciting possibilities for automating your drawings by creating Excalidraw Scripts and attaching them to elements.\n\n- I am thrilled to announce that you can now embed images directly from your local hard drive in Excalidraw. These files won't be moved into Obsidian. Please note, however, that these images won't be synchronized across your other devices. [#1365](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1365)\n\nCheck out the [updated keyboard map](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\nKeyboard map\n\nStay creative and productive with Excalidraw!\n`,"1.9.23":"\n## Fixed\n- Link navigation error in view mode introduced with 1.9.21 [#7120](https://github.com/excalidraw/excalidraw/pull/7120)\n","1.9.21":'\n## Fixed:\n- When moving a group of objects on the grid, each object snapped separately resulting in a jumbled-up image [#7082](https://github.com/excalidraw/excalidraw/issues/7082)\n\n## New from Excalidraw.com:\n- 🎉 Laser Pointer. Press "K" to activate the laser pointer, or find it under more tools. In View-Mode double click/tap the canvas to toggle the laser pointer\n\n![image](https://github.com/zsviczian/obsidian-excalidraw-plugin/assets/14358394/d3fc079d-9428-4a93-9a9b-1947ce9b6b57)\n',"1.9.20":`\n
\n\n
\n\n## Fixed\n- Fourth Font displays correctly in SVG embeds mode\n- The re-colorMap map (see [1.9.19](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.9.19) for more info) did not work when either of the fill or stroke color properties of the image was missing.\n- Excalidraw Pasting with middle mouse button on Linux [#1338](https://github.com/zsviczian/obsidian-excalidraw-plugin/pull/1338) 🙏@Aeases \n\n### Fixed by excalidraw.com\n- Excalidraw's native eyedropper fixes [#7019](https://github.com/excalidraw/excalidraw/pull/7019)\n\n## New\n- Now you can insert [Mermaid](https://mermaid.live/) diagrams as Excalidraw elements into your drawings (currently only the [Flowchart](https://mermaid.js.org/syntax/flowchart.html) type is supported, [other diagram types](https://mermaid.js.org/intro/#diagram-types) are inserted as Mermaid native images. \n - ⚠️**This feature requires Obsidian API v1.4.14 (the latest desktop version). On Obsidian mobile API v1.4.14 is only available to Obsidian insiders currently**\n - If you want to contribute to the project please head over to [mermaid-to-excalidraw](https://github.com/excalidraw/mermaid-to-excalidraw) and help create the converters for the other diagram types.\n- The Fourth Font now also supports the OTF format\n- Disable snap-to-grid in grid mode by holding down the CTRL/CMD while drawing or moving an element [#6983](https://github.com/excalidraw/excalidraw/pull/6983)\n- I updated the Excalidraw logo in Obsidian. This affects the logo on the tab and the ribbon.\n\n### New from excalidraw.com\n- Elements alignment snapping. Hold down the CTRL/CMD button while moving an element to snap it to other objects. [#6256](https://github.com/excalidraw/excalidraw/pull/6256)\n\n### New in the script library\n- The amazing shape [Boolean Operations](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Boolean%20Operations.md) script created by 🙏@GColoy is available in the script library.\n\n### New in Excalidraw Automate\n- ${String.fromCharCode(96)}getPolyBool()${String.fromCharCode(96)} returns a [PolyBool](https://github.com/velipso/polybooljs) object\n- sample mermaid code:\n${String.fromCharCode(96,96,96)}js\nea = ExcalidrawAutomate();\nea.setView();\nawait ea.addMermaid(\n ${String.fromCharCode(96)}flowchart TD\n A[Christmas] --\x3e|Get money| B(Go shopping)\n B --\x3e C{Let me think}\n C --\x3e|One| D[Laptop]\n C --\x3e|Two| E[iPhone]\n C --\x3e|Three| F[fa:fa-car Car]${String.fromCharCode(96)}\n);\nea.addElementsToView();\n${String.fromCharCode(96,96,96)}`,"1.9.19":`\n## New\n- I added new features to the [Deconstruct Selected Elements](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md) script\n- I added a new script: [Text Aura](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Text%20Aura.md)\n- I updated the [Set Grid](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20Grid.md) script. You can now set the Major/Minor tick frequency. [#1305](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1305)\n- The re-colorMap is now case-insensitive. The color map is a hidden feature. In Markdown View mode you can add a JSON map after the embedded SVG or Excalidraw image filename with a mapping of current colors to new colors.\n\n\n## New in ExcalidrawAutomate\n- I added the ${String.fromCharCode(96)}silent${String.fromCharCode(96)} switch. If this is true, the created file will not be opened.\n${String.fromCharCode(96,96,96)}typescript\n async create(params?: {\n filename?: string;\n foldername?: string;\n templatePath?: string;\n onNewPane?: boolean;\n silent?: boolean;\n frontmatterKeys?: {\n "excalidraw-plugin"?: "raw" | "parsed";\n "excalidraw-link-prefix"?: string;\n "excalidraw-link-brackets"?: boolean;\n "excalidraw-url-prefix"?: string;\n "excalidraw-export-transparent"?: boolean;\n "excalidraw-export-dark"?: boolean;\n "excalidraw-export-padding"?: number;\n "excalidraw-export-pngscale"?: number;\n "excalidraw-default-mode"?: "view" | "zen";\n "excalidraw-onload-script"?: string;\n "excalidraw-linkbutton-opacity"?: number;\n "excalidraw-autoexport"?: boolean;\n };\n plaintext?: string; //text to insert above the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section\n }): Promise\n${String.fromCharCode(96,96,96)}\n`,"1.9.18":`\n## New\n- Excalidraw now syncs with Obsidian's language settings, provided translations are available. [#1297](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1297)\n\n## Fixed\n- [#1285](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1285): Solved Obsidian crashes caused by copying images from Excalidraw into markdown notes. Going forward:\n - Copying an image will paste its embed link,\n - Copying a text element will paste the text,\n - For all other elements with links, the link will be pasted.\n - In all other cases nothing will be pasted.\n \n- Resolved grid instability ([#1298](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1298)).\n- Fixed missing ${String.fromCharCode(96)}[[square brackets]]${String.fromCharCode(96)} in PDF section references, making the links functional.\n- Corrected the behavior of "Open current link in browser" for embedded YouTube and Vimeo frames. Clicking the globe button will now correctly open the links.\n`,"1.9.17":'\n## New \n- Significant performance improvements from Excalidraw.com\n- When selecting a highlight in the Obsidian PDF editor and selecting "Copy as Quote" in the context menu, then paste this to Excalidraw, the text will arrive as a text element wrapped in a transparent sticky note with the link to the original highlight attached to the sticky note. You can override this behavior by SHIFT+CTRL/CMD pasting\n\n## Fixed\n- BUG: Image caching issue. Changes to the drawing do not reflect immediately in the note when re-opening the drawing [#1297](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1279)\n- Removed underline from links in NativeSVG embed.\n',"1.9.16":"\nI apologize for this extra release. I accidentally built 1.9.15 with an older excalidraw.com package version. Fixes and new features (like the improved grid) are now available again. Otherwise, this is the same as 1.9.15. Sorry for the inconvenience.\n","1.9.15":"\n## New\n- There is now a search box in the Excliadraw Script Store. I categorized the scripts and added keywords to help easier navigation.\n\n## Fixed\n- The theme of the embedded Markdown document did not always honor plugin settings. With some themes, it worked, with others (including the default Obsidian theme, it didn't). \n","1.9.14":`\n# Fixed\n- **Dynamic Styling**: Excalidraw ${String.fromCharCode(96)}Plugin Settings/Display/Dynamic Styling${String.fromCharCode(96)} did not handle theme changes correctly.\n- **Section References**: Section Headings that contained a dot (e.g. #2022.01.01) (or other special characters) did not work when focusing markdown embeds to a section. [#1262](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1262)\n- **PNG Export**: When using images from the web (i.e. based on URL and not a file from your Vault), embedding the Excalidraw file into a markdown document as PNG, or exporting as PNG failed. This is because due to browser cross-origin restrictions, Excalidraw is unable to access the image. In such cases, a placeholder will be included in the export, but the export will not fail, as until now.\n\n# New in ExcalidrawAutomate\n- ${String.fromCharCode(96)}getActiveEmbeddableViewOrEditor${String.fromCharCode(96)} will return the active editor and file in case of a markdown document or the active leaf.view for other files (e.g. PDF, MP4 player, Kanban, Canvas, etc) of the currently active embedded object. This function can be used by plugins to check if an editor is available and obtain the view or editor to perform their actions. Example: [package.json](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/package.json#L23), [Checking for EA](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/src/excalibrain-main.ts#L114-L127), and [Running the function](https://github.com/zsviczian/excalibrain/blob/2056a021af7c3a53ed08203a77f6eae304ca6e39/src/excalibrain-main.ts#L362-L399)\n\n${String.fromCharCode(96,96,96)}typescript\npublic getActiveEmbeddableViewOrEditor (view?:ExcalidrawView): {view:any}|{file:TFile, editor:Editor}|null;\n${String.fromCharCode(96,96,96)}\n`,"1.9.13":`\n
\n\n
\n\n# New\n- **Templater support**: You can now execute Templater scripts on an embedded Markdown document when the document is active for editing\n- **Interactive image-embeds**: I added a new image embed option "SVG Native". In "SVG Native" mode embedded items such as videos, webpages, and links (including links within the Vault) work.\n- **Anchored image resizing**: When you embed an Excalidraw drawing using the Anchor to 100% option, resizing the image will be disabled.\n\n# Fixed\n- when opening a new document in the Excalidraw view while a markdown document was open for editing in an embeddable, Excalidraw terminated with errors\n- shift-click to select multiple elements\n- dynamic styling when canvas background with transparent\n \n# New in ExcalidrawAutomate\n- added openState to the ${String.fromCharCode(96)}openFileInNewOrAdjacentLeaf${String.fromCharCode(96)}. For details see: [OpenViewState](https://github.com/obsidianmd/obsidian-api/blob/f86f95386d439c19d9a77831d5cac5748d80e7ec/obsidian.d.ts#L2686-L2695)\n${String.fromCharCode(96,96,96)}typescript\nopenFileInNewOrAdjacentLeaf(file: TFile, openState?: OpenViewState): WorkspaceLeaf\n${String.fromCharCode(96,96,96)}\n`,"1.9.12":`\n## New\n- If you create a Text Element that includes only a transclusion e.g.: ${String.fromCharCode(96)}![[My Image.png]]${String.fromCharCode(96)} then excalidraw will automatically replace the transclusion with the embedded image.\n- New Excalidraw splash screen icon contributed by Felix Häberle. 😍\n\n
\n\n
\n\n## Fixed\n- Popout windows behaved inconsistently losing focus at the time when a markdown file was embedded. Hopefully, this is now working as intended.\n- A number of small fixes that will also improve the ExcaliBrain experience\n`,"1.9.11":"\n# New\n- I added 2 new command palette actions: 1) to toggle frame clipping and 2) to toggle frame rendering.\n\n# Updated\n- I released a minor update to the slideshow script. Frame sequence (Frame 1, 2, 3, ...) will now be displayed in proper order. Frames will be hidden during the presentation (this was there before, but there was a change to excalidraw.com that broke this feature of the slideshow script).\n\n# Fixed: \n- Excalidraw Automate error introduced with 1.9.10 - when elements are repositioned to cursor and no ExcalidrawView is active\n","1.9.10":'\n## New\n- @mazurov added a new script: [Ellipse Selected Elements](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Ellipse%20Selected%20Elements.md)\n\n## Fixed\n- **Image Saving Error**: Previously, inserting an image from Firebase Storage or other URLs could result in an error that prevented the entire drawing from being saved. I have now improved the error handling and image fetching from the web, ensuring smooth image insertion and saving. \n- **Text Search Bug**: There was an issue where text search failed when frames had default names like "Frame 1," "Frame 2," etc. This has been resolved, and now the text search works correctly in such cases. ([#1239](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1239)) \n- **Image Positioning Fix**: An annoying bug caused the image to jump after inserting it using the "Insert Image" command palette action. I\'ve fixed this issue, and now the image behaves as expected when positioning it for the first time.\n',"1.9.9":`\n## ⚠️⚠️ IMPORTANT: PLEASE READ ⚠️⚠️\n\nI updated embedded frames for compatibility with excalidraw.com. To ensure everything works smoothly:\n\n🔄 Update Excalidraw on all your devices.\n\nThis will avoid any issues with converted files and let you enjoy the new features seamlessly.\n\nThank you for your understanding. If you have any questions, feel free to reach out.\n\n---\n\n## Fixed:\n- PNG image caching resulting in broken images after Obsidian restarts\n- SVG export now displays embedded iframes with the correct embed link (note this feature only works when you open the SVGs in a browser outside Obsidian).\n\n## Updated / fixed in Excalidraw Automate\n- I updated ${String.fromCharCode(96)}lib/ExcalidrawAutomate.d.ts${String.fromCharCode(96)} and published a new version of obsidian-excalidraw-plugin type library to npmjs.\n- Added new ExcalidrawAutomate functions: ${String.fromCharCode(96)} addEmbeddable()${String.fromCharCode(96)}, ${String.fromCharCode(96)}DEVICE${String.fromCharCode(96)}, ${String.fromCharCode(96)}newFilePrompt()${String.fromCharCode(96)}, and ${String.fromCharCode(96)}getLeaf()${String.fromCharCode(96)}\n- ${String.fromCharCode(96)}addImage${String.fromCharCode(96)} and ${String.fromCharCode(96)}addElementsToView${String.fromCharCode(96)} were extended with 1-1 additional optional parameter. As a result of ${String.fromCharCode(96)}shouldRestoreElements${String.fromCharCode(96)} defaulting to false, all elements in the scene will no longer be updated (iframes will not blink) when you add elements via script.\n- There is a new event hook: ${String.fromCharCode(96)}onPasteHook${String.fromCharCode(96)}. This will be called whenever the user pastes something to the canvas. You can use this callback if you want to do something additional during the onPaste event. In case you want to prevent the Excalidraw default onPaste action you must return false\n\n${String.fromCharCode(96,96,96)}typescript\nasync addImage(\n topX: number,\n topY: number,\n imageFile: TFile | string,\n scale: boolean = true,\n anchor: boolean = true,\n): Promise;\n\nasync addElementsToView(\n repositionToCursor: boolean = false,\n save: boolean = true,\n newElementsOnTop: boolean = false,\n shouldRestoreElements: boolean = false,\n): Promise;\n\n onPasteHook: (data: {\n ea: ExcalidrawAutomate;\n payload: ClipboardData;\n event: ClipboardEvent;\n excalidrawFile: TFile;\n view: ExcalidrawView;\n pointerPosition: { x: number; y: number };\n }) => boolean = null;\n\naddEmbeddable(\n topX: number,\n topY: number,\n width: number,\n height: number,\n url?: string,\n file?: TFile\n): string;\n\nget DEVICE(): DeviceType;\n\nnewFilePrompt(\n newFileNameOrPath: string,\n shouldOpenNewFile: boolean,\n targetPane?: PaneTarget,\n parentFile?: TFile\n): Promise;\n\ngetLeaf(\n origo: WorkspaceLeaf,\n targetPane?: PaneTarget\n): WorkspaceLeaf;\n${String.fromCharCode(96,96,96)}\n`,"1.9.8":'\n## New Features\n- Zoom to heading and block in markdown frames.\n- Added an iframe menu that allows users to change heading/block zoom, center the element, and open it in the browser.\n- Replaced twitframe with platform.twitter for tweets. The "Read more" and "Reply" buttons now work. Embedded tweets will honor theme settings.\n\n## Bug Fixes\n- Fixed an issue where embedded markdown frames disappeared in fullscreen mode. [#1197](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1197)\n- Resolved a problem with the "Embed Markdown as Image" feature where changes to embed properties were not always honored. [#1201](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1201)\n- When inserting any file from the Vault and embedding a Markdown document as an image, the embed now correctly honors the section heading if specified. [#1200](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1200)\n- SVG and PNG autoexport now function properly when closing a popout window. [#1209](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1209)\n- Many other minor fixes\n',"1.9.7":`\n## Fixed:\n\n- Fixed an issue where using the color picker shortcut would cause the UI to disappear in mobile view mode.\n- You can now add YouTube playlists to iframes.\n- Fixed a bug where the "Add any file" dropdown suggester opened in the main Obsidian workspace instead of the popout window when Excalidraw was running. ([#1179](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1191))\n- Made some improvements to the logic of opening in the adjacent pane, although it is still not perfect.\n- Fixed an issue where Obsidian sync would result in the loss of the last approximately 20 seconds of work. Excalidraw's handling of sync is now fixed. ([#1189](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1189))\n\n## New:\n\n- Introducing Image Cache: Excalidraw will now cache rendered images embedded in Markdown documents, which will enhance the markdown rendering experience.\n- Backup Cache: Excalidraw now stores a backup on your device when saving, in case the application is terminated during a save operation. If you are using sync, you can find the latest backup on the device you last used to edit your drawing.\n- Added ${String.fromCharCode(96)}frame=${String.fromCharCode(96)} parameter to image references. ([#1194](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1194)) For more details about this feature, check out this [YouTube video](https://youtu.be/yZQoJg2RCKI).\n- When an SVG image from Draw.io is embedded in Excalidraw, clicking the image will open the file in the [Diagram plugin](https://github.com/zapthedingbat/drawio-obsidian) (if available).\n- Added the [Create DrawIO file](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Create%20DrawIO%20file.md) Excalidraw Automate Script to the library, which allows you to create a new draw.io drawing and add it to the current Excalidraw canvas.\n\n## New in ExcalidrawAutomate\n\n${String.fromCharCode(96,96,96)}typescript\nasync getAttachmentFilepath(filename: string): Promise\n${String.fromCharCode(96,96,96)}\n\nThis asynchronous function retrieves the filepath to a new file, taking into account the attachments preference settings in Obsidian. It creates the attachment folder if it doesn't already exist. The function returns the complete path to the file. If the provided filename already exists, the function will append '_[number]' before the extension to generate a unique filename.\n\n${String.fromCharCode(96,96,96)}typescript\ngetElementsInFrame(frameElement: ExcalidrawElement, elements: ExcalidrawElement[]): ExcalidrawElement[];\n${String.fromCharCode(96,96,96)}\n\nThis function returns the elements contained within a frame.\n`,"1.9.6":`\n## Fixed\n- help shortcuts are really hard to see [#1176](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1179)\n- link icons not visible on elements after 1.9.5 release (reported on Discord)\n- PDFs in iFrames will now respect the ${String.fromCharCode(96)}[[document.pdf#page=155]]${String.fromCharCode(96)} format\n- Keyboard shortcuts were not working properly on external drop. Check [updated keyboard map](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\nKeyboard map\n`,"1.9.5":`\n
\n\n
\n\n## New\n- IFrame support: insert documents from your Obsidian Vault and insert youtube, Vimeo, and generally any website from the internet\n- Frame support: use frames to group items on your board\n\n## New in ExcalidrawAutomate\n- selectElementsInView now also accepts a list of element IDs\n- new addIFrame function that accepts an Obsidian file or a URL string\n${String.fromCharCode(96,96,96)}typescript\nselectElementsInView(elements: ExcalidrawElement[] | string[]): void;\naddIFrame(topX: number, topY: number, width: number, height: number, url?: string, file?: TFile): string;\n${String.fromCharCode(96,96,96)}\n`,"1.9.3":'\n## New from Excalidraw.com\n- Eyedropper tool. The eyedropper is triggered with "i". If you hold the ALT key while clicking the color it will set the stroke color of the selected element, else the background color.\n- Flipping multiple elements\n- Improved stencil library rendering performance + the stencil library will remember the scroll position from the previous time it was open\n\n## Fixed\n- Replaced command palette and tab export SVG/PNG/Excalidraw actions with "export image" which will take the user to the export image dialog.\n',"1.9.2":`\n
\n\n
\n\n## New\n- Excalidraw.com Color Picker redesign [#6216](https://github.com/excalidraw/excalidraw/pull/6216)\n- Updated palette loader script in the script library\n- New ExcalidrawAutomate API to load Elements and AppState from another Excalidraw file.\n${String.fromCharCode(96,96,96)}typescript\nasync getSceneFromFile(file: TFile): Promise<{elements: ExcalidrawElement[]; appState: AppState;}>\n${String.fromCharCode(96,96,96)}\n`,"1.9.1":'\n## Updates from Excalidraw.com\n- "Unlock all elements" - new action available via the context menu [#5894](https://github.com/excalidraw/excalidraw/pull/5894)\n- Minor improvements to improve the speed [#6560](https://github.com/excalidraw/excalidraw/pull/6560)\n- Retain Seed on Shift Paste [#6509](https://github.com/excalidraw/excalidraw/pull/6509)\n\n## New/Fixed\n- Clicking on the link handle (top right corner) will open the link in the same window\n- CTRL/CMD click on a link will open the link in a new tab and will focus on the new tab\n- Linking to parts of images. In some cases clicking search results, links, or backlinks did not focus on the right element according to the link. Fixed.\n',"1.9.0":`\n
\n\n
\n\n## Fixed\n- Embedded images, markdowns, PDFs will load one by one, not in one go after a long wait\n\n## New\n- Embed PDF\n\n## New in ExcalidrawAutomate\n- onFileCreateHook: if set this hook is called whenever a new drawing is created using Excalidraw command palette menu actions. If the excalidraw file is created using Templater or other means, the trigger will not fire. [#1124](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1124)\n${String.fromCharCode(96,96,96)}typescript\n onFileCreateHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being created\n view: ExcalidrawView;\n }) => Promise;\n ${String.fromCharCode(96,96,96)}\n`,"1.8.26":"\n## Fixed\n- Dynamic styling did not pick up correctly\n - the accent color with the default Obsidian theme\n - the drawing theme color with the out of the box, default new drawing (not using a template)\n- The Obsidian tools panel did not pick up user scripts when installing your very first script. A reload of Obsidian was required.\n","1.8.25":'\n
\n\n
\n\n## New & improved\n- Multi-link support\n- Updated [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script for better handwritten text support. \n - Add links to text elements\n - Creating wrapped text in transparent sticky notes\n - Add text to arrows and lines\n - Handwriting support on iOS via Scribble\n\n## Fixed\n - The long-standing issue of jumping text\n \n',"1.8.24":`\n## Updates from Excalidraw.com\n- fix: color picker keyboard handling not working\n- fix: center align text when bind to the container via context menu\n- fix: split "Edit selected shape" shortcut\n\n## Fixed\n- BUG: Area embed link of svg inside excalidraw embed entire svg instead of area [#1098](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1098)\n\n## New\n- I updated the [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) script with tons of new features. I am still beta testing the script. I will release a demo video in the next few days.\n\n## New in Excalidraw Automate\n- I added many more configuration options for the scriptEngine utils.inputPrompt function. See [Scribble Helper](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Scribble%20Helper.md) for a demonstration of this new feature.\n${String.fromCharCode(96,96,96)}typescript\n public static async inputPrompt(\n view: ExcalidrawView,\n plugin: ExcalidrawPlugin,\n app: App,\n header: string,\n placeholder?: string,\n value?: string,\n buttons?: { caption: string; tooltip?:string; action: Function }[],\n lines?: number,\n displayEditorButtons?: boolean,\n customComponents?: (container: HTMLElement) => void\n )\n${String.fromCharCode(96,96,96)}`,"1.8.23":'\n## Fixes\n- Fixed palm rejection to prevent unwanted spikes when using the freedraw tool. ([#1065](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1065))\n- Fixed issue where images disappeared when zoomed in. ([#6417](https://github.com/excalidraw/excalidraw/pull/6417))\n- Autosave will now save the drawing when you change the theme from dark to light or vice versa. ([#1080](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1080))\n- Added padding to short LaTeX formulas to prevent cropping. ([#1053](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1053))\n\n## New Features\n- Added a new command palette action: Toggle to invert default binding behavior. This new feature allows you to switch between normal and inverted mode. In normal mode, arrows will bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects. In inverted mode, arrows will not bind to objects unless you hold the CTRL/CMD key while drawing the arrow or moving objects.\n- You can now set a template LaTeX formula in the plugin settings (under experimental features) to be used when creating a new LaTeX formula. ([#1090](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1090))\n- Redesigned the Image Export dialog. I hope dropdowns are now more intuitive than the toggles were.\n- Added the ability to export only the selected part of a drawing. See the Export dialog for more information.\n- Added a zigzag fill easter egg. See a demo of this feature [here](https://twitter.com/excalidraw/status/1645428942344445952?s=61&t=nivKLx2vgl6hdv2EbW4mZg).\n- Added a new expert function: recolor embedded Excalidraw and SVG images (not JPG, PNG, BMP, WEBP, GIF). See a demo of this feature here:\n\n
\n\n
\n',"1.8.22":`\n## Fixed\n- Styling of custom pen and script buttons in the side panel was inverted.\n- Minor tweaks to dynamic styling. [see this video to understand dynamic styling](https://youtu.be/fypDth_-8q0)\n\n## New\n- New scripts by @threethan:\n - [Auto Draw for Pen](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Auto%20Draw%20for%20Pen.md): Automatically switches between the select and draw tools, based on whether a pen is being used. Supports most pens including Apple Pencil.\n - [Hardware Eraser Support](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Hardware%20Eraser%20Support.md): Adds support for pen inversion, a.k.a. the hardware eraser on the back of your pen. Supports Windows based styluses. Does not support Apple Pencil or S-Pen.\n- Added separate buttons to support copying link, area or group references to objects on the drawing. [#1063](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1063). See [this video](https://youtu.be/yZQoJg2RCKI) for more details on how this works.\n- Hover preview will no longer trigger for image files (.png, .svg, .jpg, .gif, .webp, .bmp, .ico, .excalidraw)\n- Minor updates to the [Slideshow](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) script. You can download the updated script from the Excalidraw script library. The slideshow will now correctly run also when initiated in a popout window. When the drawing is in a popout window, the slideshow will not be full screen, but will only occupy the popout window. If you run the slideshow from the main Obsidian workspace, it will be displayed in full-screen mode.\n- Updated the Icon Library script to now include image keywords under each of the images to allow searching for keywords (CTRL/CMD+F). I've uploaded the new script to [here](https://gist.github.com/zsviczian/33ff695d5b990de1ebe8b82e541c26ad). If you need further information watch this [video](https://youtu.be/_OEljzZ33H8)\n\n## New in ExcalidrawAutomate\n- ${String.fromCharCode(96)}addText${String.fromCharCode(96)} ${String.fromCharCode(96)}formatting${String.fromCharCode(96)} parameter now accepts ${String.fromCharCode(96)}boxStrokeColor${String.fromCharCode(96)} and ${String.fromCharCode(96)}textVerticalAlign${String.fromCharCode(96)} values.\n${String.fromCharCode(96,96,96)}typescript\naddText(\n topX: number,\n topY: number,\n text: string,\n formatting?: {\n wrapAt?: number;\n width?: number;\n height?: number;\n textAlign?: "left" | "center" | "right";\n box?: boolean | "box" | "blob" | "ellipse" | "diamond";\n boxPadding?: number;\n boxStrokeColor?: string;\n textVerticalAlign?: "top" | "middle" | "bottom";\n },\n id?: string,\n ): string;\n${String.fromCharCode(96,96,96)}\n- new ${String.fromCharCode(96)}onFileOpenHook${String.fromCharCode(96)}. If set, this callback is triggered, when an Excalidraw file is opened. You can use this callback in case you want to do something additional when the file is opened. This will run before the file level script defined in the ${String.fromCharCode(96)}excalidraw-onload-script${String.fromCharCode(96)} frontmatter is executed. Excalidraw will await the result of operations here. Handle with care. If you change data such as the frontmatter of the underlying file, I haven't tested how it will behave.\n${String.fromCharCode(96,96,96)}typescript\nonFileOpenHook: (data: {\n ea: ExcalidrawAutomate;\n excalidrawFile: TFile; //the file being loaded\n view: ExcalidrawView;\n}) => Promise;\n${String.fromCharCode(96,96,96)}`,"1.8.21":'\n## Quality of Life improvements\n- Dynamic Styling (see plugin settings / Display). When Dynamic Styling is enabled it fixes Excalidraw issues with the Minimal Theme\n- New "Invert Colors" script\n\n
\n\n
\n\n### Note\nThe few of you, that are using the Dynamic Styling Templater script, please remove it and restart Obsidian.\n',"1.8.20":"\n## Fixed\n- Excalidraw froze Obsidian in certain rare situations [#1054](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1054)\n- File loading error [#1062](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1062)\n- Embedded images in markdown documents no longer have the line on the side. Image sizing works better. [#1059](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1059)\n- Locked elements will not show a hover preview [#1060](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1060)\n- CTRL/CMD + K correctly triggers add link [#1056](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1056)\n\n## New\n- Grid color adjusts to the view background color\n\nI'm sorry, but the sticky note editing issue on Android with the on-screen keyboard has still not been resolved. If you also experience this error, please help raise the priority with the core Excalidraw team by commenting on this issue: [#6330](https://github.com/excalidraw/excalidraw/issues/6330)\n","1.8.19":"\n## Fixed: Text wrapping issue in sticky notes\n\nI fixed an issue where text would wrap differently and words would disappear during text editing in sticky notes. You can check out the details on [GitHub #6318](https://github.com/excalidraw/excalidraw/issues/6331).\n\nI am aware of three additional issues related to container text editing that are still open. I apologize for any inconvenience caused by the recent change in how text size is calculated on Excalidraw.com, which has had a knock-on effect on Obsidian. I am actively working to address the following issues:\n\n- Pinch zooming while editing text in a text container [GitHub #6331](https://github.com/excalidraw/excalidraw/issues/6331)\n- Container text jumps on edit on Android with on-screen keyboard [GitHub #6330](https://github.com/excalidraw/excalidraw/issues/6330)\n- Shadow text when editing text containers without a keyboard on iOS [GitHub #6329](https://github.com/excalidraw/excalidraw/issues/6329)\n\nThank you for your patience while I work on resolving these issues.\n","1.8.18":`\n## Fixed\n- Text scaling issue introduced in 1.8.17\n- [#1043](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1043): Error handling when ${String.fromCharCode(96)}onCanvasColorChangeHook${String.fromCharCode(96)} is executed. This is used in the [Dynamic Styling Script](https://youtu.be/LtR04fNTKTM). \n`,"1.8.17":'\n## New from Excalidraw.com\n- Improved text wrapping in the ellipse and diamond shapes [6172](https://github.com/excalidraw/excalidraw/pull/6172)\n\n## New\n- Updated slideshow script\n\n
\n\n
\n\n## Fixed: \n- "Save to..." in the Stencil Library menu now works as expected [#1032](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1032)\n',"1.8.16":'\n**!!! Modifier keys have changed, please review the table below !!!**\n[Click this to see the new shortcuts overview image](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/excalidraw-modifiers.png)\n\n## Fixed \n- This version was extensively tested and developed on MacOS to remove usability issues.\n- New command palette action to create a new drawing in a new tab\n- Modifier keys to open links in the active window, splitting the current view to the right, in a new tab, or in a popout window now behave consistently both in Excalidraw and when clicking a drawing that is embedded in a markdown note.\n- Drag & Drop properly works from within Obsidian, from a web browser, and from the OS file explorer\n\n
\n\n
\n',"1.8.14":"\n## Fixed\n- text element link gets deleted when the drawing is reloaded\n","1.8.13":'\n## Fixed\n- When changing a text element in markdown mode, the change seem to have showed up when switching back to Excalidraw mode, but then lost these changes when loading the file the next time.\n- Scrolling through a page that has embedded drawings on Obsidian Mobile accidently opens the drawing in Excalidraw when touching the image. Now you need to press and hold to open the image in Excalidraw. [#1003](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/1003)\n- The scrollbar is no longer visible when presenting using the SlideShow script\n- Stroke properties could not be changed when custom pen settings had "Stroke & fill applies to: All shapes". It works now.\n\n## QoL\n- Custom pens will remember the stroke changes until you press the pen preset button again.\n - This is a bit hard to explain, let me try... Essentially, when you use a custom pen, it will keep the changes you made to the pen (like changing the stroke width) until you press the pen-prereset button again. So, for example, if you\'re using a mind mapping custom pen and change its color, and then switch to a different tool like text, when you switch back to the freedraw tool using the Excalidraw tools panel, the pen will still have the same color you set earlier, but if you press the mind mapping pen-preset button, it will default back to your custom pen settings including your preset color.\n- Added new buttons to load current stroke color and background color in the pen settings dialog. Also added an edit box so you can configure any valid color string (including with transparency) for pen stroke and background colors. [#991](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/991)\n',"1.8.11":'\n
\n\n
\n\n# New\n- Support for referencing images from the internet in Excalidraw drawings, including YouTube thumbnail support. [#913](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/913)\n - Link to images on the internet without creating a copy in your Vault by holding down the CTRL key while dropping the link or image.\n - Automatic conversion of image URLs and YouTube links into image elements with original links added as a link on the element when pasting. Note, that if you only want to paste the plain text link (not the image), first double-click the canvas to start a new text element, then paste the link.\n- Two new options added to plugin settings:\n - Make mouse wheel zoom by default [#474](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/474)\n - Allow pinch zoom in pen mode [#828](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/828)\n- Update to the [Set Grid](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Set%20Grid.svg) script now saves the grid setting for the current file.\n',"1.8.10":'\n
\n\n
\n\n# QoL improvements\n- You can structure icons in the Obsidian tools panel by moving scripts to folders\n![image|300](https://user-images.githubusercontent.com/14358394/212389592-306130d0-209a-49df-99bb-c538f2155b23.png)\n- I added useful actions to the hamburger menu in both tray-mode and normal-mode. \n![image|150](https://user-images.githubusercontent.com/14358394/212534508-9107fd19-27ab-4415-8abc-bc97c73afc0b.png)\n- I added a new Export Image dialog. You can access the new export screen from the hamburger-menu\n![image|200](https://user-images.githubusercontent.com/14358394/212534654-7a479e23-8d5d-452e-9a18-a9896278aa27.png)\n- Links in help now point to Obsidian-Excalidraw relevant content.\n- I added a welcome screen\n![image|150](https://user-images.githubusercontent.com/14358394/212534568-3cd1e8a1-5b20-4a30-96e4-40d7dac57e33.png)\n- I updated the alternative dark mode / dynamic styling [script](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n',"1.8.9":"\n# Minor QoL improvements\n- When you open a second drawing in the same Excalidraw view (i.e. by navigating a link) and make a change to this drawing, and then press UNDO, the entire drawing disappeared. Redo brought the image back, however, this behavior was frustrating. Not anymore...\n- On iPad\n - when you open the command palette, autozoom resized the drawing. If the Obsidian command palette or some other modal window is shown Excalidraw will not resize the view.\n - when you add a link to the drawing using the Command Palette, sometimes the link was added in a far corner of the drawing outside the current view area. This should be fixed now.","1.8.8":`\n
\n\n
\n\n# New\n- The plugin now includes support for [Perfect Freehand](https://perfect-freehand-example.vercel.app/) pen-options. I've also added a new [Alternative Pens](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Alternative%20Pens.md) script.\n- Embed scene in exported PNG and SVG images [#860](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/860). This means that the export will be a normal PNG or SVG image with the added functionality that if someone loads the image into excalidraw.com it will open as a normal excalidraw file.\n - I've added 2 new Command Palette actions (export PNG, export SVG with embedded scene).\n - If you SHIFT click ${String.fromCharCode(96)} Save as PNG (or SVG)${String.fromCharCode(96)} in the workspace-tab menu, Excalidraw will embed the scene in the export.\n- I updated the [Organic Line](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Organic%20Line.md) script. It has an improved thick-to-thin look and a new thin-to-thick-to-thin line type.\n\n# Fixed\n- Intelligent image width setting [#955](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/955). Before this change, when the embedded image was small, the image would be extended to meet the image width setting in plugin settings. From now on, if the image is smaller than max-width, it will only extend to max-width. You can still set 100% width using custom CSS. See more on that [here](https://github.com/zsviczian/obsidian-excalidraw-plugin#embedded-images).\n\n# New in ExcalidrawAutomate\n- I added the ${String.fromCharCode(96)} plaintext${String.fromCharCode(96)} parameter to ${String.fromCharCode(96)}ExcalidrawAutomate.create${String.fromCharCode(96)} . Using this, you can add some text below the frontmatter but above the ${String.fromCharCode(96)}# Text Elements${String.fromCharCode(96)} section. Use this for example to add metadata to your file. (e.g. I use this in my Daily Quote template to add a Dataview field for the ${String.fromCharCode(96)}Author::${String.fromCharCode(96)} and add the quote with a standard block reference, so I can easily reference it in other files. I also add the ${String.fromCharCode(96)}#quote${String.fromCharCode(96)} tag to the file using this.)\n- The script running in the ScriptEngine now also receives the ${String.fromCharCode(96)}TFile${String.fromCharCode(96)} object for the script itself. You can access this object during execution via the ${String.fromCharCode(96)}utils.scriptFile${String.fromCharCode(96)} variable. \n`,"1.8.7":'\n## New from Excalidraw.com\n- Support shrinking text containers to their original height when text is removed [#6025](https://github.com/excalidraw/excalidraw/pull/6025)\n
\n\n
\n\n## Fixed\n- removed the white background when editing arrow-label [#6033](https://github.com/excalidraw/excalidraw/pull/6033)\n- Minor style tweaks\n - for embedding Excalidraw into Obsidian Canvas. e.g. dragging no longer accidentally creates an image copy of the drawing, and\n - style tweaks on the Excalidraw canvas\n\n## New\n- If you set a different text color and sticky note border color, now if you change the border color, the text color will not be changed.\n',"1.8.6":`\n## New from Excalidraw.com:\n- Better default radius for rectangles [#5553](https://github.com/excalidraw/excalidraw/pull/5553). Existing drawings will look unchanged, this applies only to new rectangles.\n![image|200](https://user-images.githubusercontent.com/5153846/206264345-59fd7436-e87b-4bc9-ade8-9e6f6a6fd8c1.png)\n> [!attention]- ExcalidrawAutomate technical details\n> - ${String.fromCharCode(96)}strokeSharpness${String.fromCharCode(96)} is now deprecated\n> - use roundness instead\n> - ${String.fromCharCode(96)}roundness === null${String.fromCharCode(96)} is legacy ${String.fromCharCode(96)}strokeSharpness = "sharp"${String.fromCharCode(96)}\n> - ${String.fromCharCode(96)}roundness = { type: RoundnessType; value?: number }${String.fromCharCode(96)}\n> - type: 1, LEGACY, type:2 PROPORTIONAL_RADIUS, type:3 ADAPTIVE_RADIUS: 3\n> - value:\n> - Radius represented as % of element's largest side (width/height).\n> DEFAULT_PROPORTIONAL_RADIUS = 0.25;\n> - Fixed radius for the ADAPTIVE_RADIUS algorithm. In pixels.\n> DEFAULT_ADAPTIVE_RADIUS = 32;\n\n## New\n- For Obsidian 1.1.6 and above\n - Improved embedding into Obsidian Canvas\n - Improved embedding into Markdown documents\n- Added setting under ${String.fromCharCode(96)}Display/Default mode when opening Excalidraw${String.fromCharCode(96)} to always open the drawing in view mode on Mobile, but in normal mode on desktop. [#939](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/939)\n\n## Fixed\n- Zoom reset tooltip appears twice [#942](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/942)\n- Hid export library from library menu as it does not work due to Obsidian limitations. Use the command palette export library instead.\n- Arrow with label did not get exported and embedded correctly [#941](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/941)\n![image|200](https://user-images.githubusercontent.com/22638687/207845868-b352ddb1-7994-4f13-a0b2-f2e19bd72935.png)\n`,"1.8.4":'\n## New from Excalidraw.com\n- Labels on Arrows!!! [#5723](https://github.com/excalidraw/excalidraw/pull/5723)\n - To add a label press "Enter" or "Double click" on the arrow\n - Use "Cmd/Ctrl+double click" to enter the line editor\n\n
\n\n
\n\n## New\n- **Changed behavior**: In the Obsidian markdown editor clicking an Excalidraw image will not open the image (to avoid accidentally opening the image on a tablet). To open a drawing for editing in Excalidraw double click or long-tap on it. [#920](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/920)\n\n## Fixed \n- Text stroke color is not honored when pasting a HEX color string to an Excalidraw canvas open in an Obsidian popout window [#921](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/921)\n- The new [multi-line >> multi-element paste behavior](https://github.com/excalidraw/excalidraw/pull/5786) introduced in the previous release did not work as expected in Obsidian. Now it does.\n',"1.8.2":`\nIntroducing the [Excalidraw Slideshow Script](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Slideshow.md) - available in the script store\n
\n\n
\n\n## Fixed\n- Obsidian tools panel gets misplaced after switching Obsidian workspace tabs\n\n## New in ExcalidrawAutomate\n- changed ${String.fromCharCode(96)}viewToggleFullScreen(forceViewMode: boolean = false): void${String.fromCharCode(96)}: the function will toggle view mode on when going to full screen and view mode off when terminating full screen.\n- new functions\n${String.fromCharCode(96,96,96)}typescript\nsetViewModeEnabled(enabled: boolean):void;\nviewUpdateScene(\n scene: {\n elements?: ExcalidrawElement[];\n appState?: AppState;\n files?: BinaryFileData;\n commitToHistory?: boolean;\n },\n restore: boolean = false,\n ):void;\nviewZoomToElements(\n selectElements: boolean,\n elements: ExcalidrawElement[]\n ):void;\n${String.fromCharCode(96,96,96)}\n\n`,"1.8.1":`\n## New and fixes from Excalidraw.com\n- New text paste behavior. Pasting multiline text will generate separate text elements unless you hold down the shift button while pasting [#5786](https://github.com/excalidraw/excalidraw/pull/5786)\n- line editor fixes [#5927](https://github.com/excalidraw/excalidraw/pull/5927)\n\n## Fixed\n- The Command Palette "Insert link" action now inserts the new link at the top drawing layer, not at the bottom.\n- Updated, hopefully, better organized, Plugin Readme.\n\n## New\n- Second attempt at moving to React 18. This upgrade is required to maintain alignment with the core Excalidraw product and to continue to benefit from Excalidraw.com enhancements.\n- Added options to Plugin Settings\n - to disable autozoom when loading a drawing for the first time [#907](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/907)\n - to modify autosave interval. You can now set an autosave interval for desktop and for mobile [#888](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/888)\n\n## New in ExcalidrawAutomate\n- Published the obsidian_module on the ExcalidrawAutomate object. ${String.fromCharCode(96)}ExcalidrawAutomate.obsidian${String.fromCharCode(96)}. Publishing this object will give script developers increased flexibility and control over script automation.\n`,"1.8.0":'\n
\n\n
\n\n## New\n- Optical Character Recognition (OCR). Introducing the MVP (minimum viable product) release of the integration of [Taskbone](https://taskbone.com) OCR into Excalidraw. See the new scan button on the Obsidian tools panel.\n- New and improved full-screen mode\n - Activate using the Obsidian tools panel, the Obsidian Command Palette, or the Alt+F11 shortcut\n - The ESC key no longer closes full-screen\n - Full-screen mode works properly on iOS as well\n- Improved Icon visibility on the Obsidian tools panel\n- Added 3 additional buttons to the tools panel\n - Force save\n - Open link (useful on Mobile devices). In the case of LaTeX equations, the button opens the equation properties.\n - Open the link in a new pane. In the case of embedded markdown documents, the button opens the embed properties.\n\n## Fixed\n- The [deconstruct selected elements into a new drawing](https://github.com/zsviczian/obsidian-excalidraw-plugin/blob/master/ea-scripts/Deconstruct%20selected%20elements%20into%20new%20drawing.md) script now also correctly decomposes transcluded text elements.\n',"1.7.30":"\nFix:\n- Forcing the embedded image to always scale to 100% (a feature introduced in [1.7.26](https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.7.26)) scaled the embedded excalidraw drawings incorrectly on devices with a pixel ratio of 2 or 3 (e.g. iPads). This is now fixed, however, this fix might retrospectively impact drawings that use this feature. Sorry for that.\n","1.7.29":"\n- This is a big update that accommodates the **UI redesign** on Excalidraw.com [#5780](https://github.com/excalidraw/excalidraw/pull/5780). The change on the surface may seem superficial, however, I had to tweak a number of things to make it work in Obsidian. I hope I found everything that broke and fixed it, if not, I'll try to fix it quickly...\n- This update also comes with changes under the hood that **fix issues with Excalidraw Automate** - paving the way for further scripts, plus some smaller bug fixes.\n- I **reworked text wrapping**. In some cases, text wrapping in SVG exports looked different compared to how the text looked in Excalidraw. This should now be fixed.\n- If you are using the **Experimental Dynamic Styling** of the Excalidraw Toolbar, then I recommend updating your styling script following base on [this](https://gist.github.com/zsviczian/c7223c5b4af30d5c88a0cae05300305c)\n","1.7.27":'## New\n- Import SVG drawing as an Excalidraw object. [#679](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/679)\n\n
\n\n
\n\n## Fixed\n- Large drawings freeze on the iPad when opening the file. I implemented a workaround whereby Excalidraw will avoid zoom-to-fit drawings with over 1000 elements. [#863](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/863)\n- Reintroduced copy/paste to the context menu\n',"1.7.26":'## Fixed\n- Transcluded block with a parent bullet does not embed sub-bullet [#853](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/853)\n- Transcluded text will now exclude ^block-references at end of lines\n- Phantom duplicates of the drawing appear when "zoom to fit" results in a zoom value below 10% and there are many objects on the canvas [#850](https://github.com/zsviczian/obsidian-excalidraw-plugin/issues/850)\n- CTRL+Wheel will increase/decrease zoom in steps of 5% matching the behavior of the "+" & "-" zoom buttons.\n- Latest updates from Excalidarw.com\n - Freedraw flip not scaling correctly [#5752](https://github.com/excalidraw/excalidraw/pull/5752)\n - Multiple elements resizing regressions [#5586](https://github.com/excalidraw/excalidraw/pull/5586)\n\n## New - power user features\n- Force the embedded image to always scale to 100%. Note: this is a very niche feature with a very particular behavior that I built primarily for myself (even more so than other features in Excalidraw Obsidian - also built primarily for myself 😉)... This will reset your embedded image to 100% size every time you open the Excalidraw drawing, or in case you have embedded an Excalidraw drawing on your canvas inserted using this function, every time you update the embedded drawing, it will be scaled back to 100% size. This means that even if you resize the image on the drawing, it will reset to 100% the next time you open the file or you modify the original embedded object. This feature is useful when you decompose a drawing into separate Excalidraw files, but when combined onto a single canvas you want the individual pieces to maintain their actual sizes. I use this feature to construct Book-on-a-Page summaries from atomic drawings.\n- I added an action to the command palette to temporarily disable/enable Excalidraw autosave. When autosave is disabled, Excalidraw will still save your drawing when changing to another Obsidian window, but it will not save every 10 seconds. On a mobile device (but also on a desktop) this can lead to data loss if you terminate Obsidian abruptly (i.e. swipe the application away, or close Obsidian without first closing the drawing). Use this feature if you find Excalidraw laggy.'};class ReleaseNotes extends obsidian_module.Modal{plugin;version;constructor(e,t,n){super(e),this.plugin=t,this.version=n}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText(`Welcome to Excalidraw ${this.version??""}`),this.createForm()}async onClose(){this.contentEl.empty(),await this.plugin.loadSettings(),this.plugin.settings.previousRelease=PLUGIN_VERSION,await this.plugin.saveSettings()}async createForm(){let e=this.plugin.settings.previousRelease;e=this.version===e?"0.0.0":e;const t=this.version?Object.keys(RELEASE_NOTES).filter((t=>"Intro"===t||isVersionNewerThanOther(t,e))).map((e=>`${"Intro"===e?"":`# ${e}\n`}${RELEASE_NOTES[e]}`)).slice(0,10).join("\n\n---\n"):FIRST_RUN;await obsidian_module.MarkdownRenderer.renderMarkdown(t,this.contentEl,"",this.plugin),this.contentEl.createEl("p",{text:""},(e=>{e.style.textAlign="right",e.createEl("button",{text:"Close"}).onclick=()=>this.close()}))}}class ExportDialog extends obsidian_module.Modal{plugin;view;file;ea;api;padding;scale;theme;transparent;saveSettings;dirty=!1;selectedOnlySetting;hasSelectedElements=!1;boundingBox;embedScene;exportSelectedOnly;saveToVault;constructor(e,t,n){super(e.app),this.plugin=e,this.view=t,this.file=n,this.ea=getEA(this.view),this.api=this.ea.getExcalidrawAPI(),this.padding=getExportPadding(this.plugin,this.file),this.scale=getPNGScale(this.plugin,this.file),this.theme=getExportTheme(this.plugin,this.file,this.api.getAppState().theme),this.boundingBox=this.ea.getBoundingBox(this.ea.getViewElements()),this.embedScene=shouldEmbedScene(this.plugin,this.file),this.exportSelectedOnly=!1,this.saveToVault=!0,this.transparent=!getWithBackground(this.plugin,this.file),this.saveSettings=!1}destroy(){this.app=null,this.plugin=null,this.ea.destroy(),this.ea=null,this.view=null,this.file=null,this.api=null,this.theme=null,this.selectedOnlySetting=null,this.containerEl.remove()}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.titleEl.setText("Export Image"),this.hasSelectedElements=this.view.getViewSelectedElements().length>0,this.selectedOnlySetting.setVisibility(this.hasSelectedElements)}async onClose(){this.dirty=this.saveSettings}async createForm(){let e,t;this.contentEl.createEl("h1",{text:"Image settings"}),this.contentEl.createEl("p",{text:"Transparency only affects PNGs. Excalidraw files can only be exported outside the Vault. PNGs copied to clipboard may not include the scene."});const n=()=>{const e=Math.round(this.scale*this.boundingBox.width+2*this.padding),t=Math.round(this.scale*this.boundingBox.height+2*this.padding);return fragWithHTML(`The lager the scale, the larger the image.
Scale: ${this.scale}
Image size: ${e}x${t}`)},r=()=>fragWithHTML(`Current image padding is ${this.padding}`);t=new obsidian_module.Setting(this.contentEl).setName("Image padding").setDesc(r()).addSlider((i=>{i.setLimits(0,50,1).setValue(this.padding).onChange((i=>{this.padding=i,e.setDesc(n()),t.setDesc(r())}))})),e=new obsidian_module.Setting(this.contentEl).setName("PNG Scale").setDesc(n()).addSlider((t=>t.setLimits(.5,5,.5).setValue(this.scale).onChange((t=>{this.scale=t,e.setDesc(n())})))),new obsidian_module.Setting(this.contentEl).setName("Export theme").addDropdown((e=>e.addOption("light","Light").addOption("dark","Dark").setValue(this.theme).onChange((e=>{this.theme=e})))),new obsidian_module.Setting(this.contentEl).setName("Background color").addDropdown((e=>e.addOption("transparent","Transparent").addOption("with-color","Use scene background color").setValue(this.transparent?"transparent":"with-color").onChange((e=>{this.transparent="transparent"===e})))),new obsidian_module.Setting(this.contentEl).setName("Save or one-time settings?").addDropdown((e=>e.addOption("save","Save these settings as the preset for this image").addOption("one-time","These are one-time settings").setValue(this.saveSettings?"save":"one-time").onChange((e=>{this.saveSettings="save"===e})))),this.contentEl.createEl("h1",{text:"Export settings"}),new obsidian_module.Setting(this.contentEl).setName("Embed the Excalidraw scene in the exported file?").addDropdown((e=>e.addOption("embed","Embed scene").addOption("no-embed","Do not embed scene").setValue(this.embedScene?"embed":"no-embed").onChange((e=>{this.embedScene="embed"===e})))),DEVICE.isDesktop&&new obsidian_module.Setting(this.contentEl).setName("Where to save the image?").addDropdown((e=>e.addOption("vault","Save image to your Vault").addOption("outside","Export image outside your Vault").setValue(this.saveToVault?"vault":"outside").onChange((e=>{this.saveToVault="vault"===e})))),this.selectedOnlySetting=new obsidian_module.Setting(this.contentEl).setName("Export entire scene or just selected elements?").addDropdown((e=>e.addOption("all","Export entire scene").addOption("selected","Export selected elements").setValue(this.exportSelectedOnly?"selected":"all").onChange((e=>{this.exportSelectedOnly="selected"===e}))));const i=this.contentEl.createDiv({cls:"excalidraw-prompt-buttons-div"});i.createEl("button",{text:"PNG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.savePNG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportPNG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},i.createEl("button",{text:"SVG to File",cls:"excalidraw-prompt-button"}).onclick=()=>{this.saveToVault?this.view.saveSVG(this.view.getScene(this.hasSelectedElements&&this.exportSelectedOnly)):this.view.exportSVG(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()},i.createEl("button",{text:"Excalidraw",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportExcalidraw(this.hasSelectedElements&&this.exportSelectedOnly),this.close()},DEVICE.isDesktop&&(i.createEl("button",{text:"PNG to Clipboard",cls:"excalidraw-prompt-button"}).onclick=()=>{this.view.exportPNGToClipboard(this.embedScene,this.hasSelectedElements&&this.exportSelectedOnly),this.close()})}}let REM_VALUE=16;const STYLE_VARIABLES=["--background-modifier-cover","--background-primary-alt","--background-secondary","--background-secondary-alt","--background-modifier-border","--text-normal","--text-muted","--text-accent","--text-accent-hover","--text-faint","--text-highlight-bg","--text-highlight-bg-active","--text-selection","--interactive-normal","--interactive-hover","--interactive-accent","--interactive-accent-hover","--scrollbar-bg","--scrollbar-thumb-bg","--scrollbar-active-thumb-bg","--tab-container-background","--titlebar-background-focused"],EXCALIDRAW_CONTAINER_CLASS="excalidraw__embeddable__outer";class StylesManager{stylesMap=new Map;styleLight;styleDark;plugin;constructor(e){this.plugin=e,e.app.workspace.onLayoutReady((async()=>{await this.harvestStyles(),getAllWindowDocuments(e.app).forEach((e=>this.copyPropertiesToTheme(e))),e.registerEvent(e.app.workspace.on("css-change",(()=>this.onCSSChange()))),e.registerEvent(e.app.workspace.on("window-open",(e=>this.onWindowOpen(e)))),e.registerEvent(e.app.workspace.on("window-close",(e=>this.onWindowClose(e))))}))}async onCSSChange(){await this.harvestStyles(),getAllWindowDocuments(this.plugin.app).forEach((e=>{this.copyPropertiesToTheme(e)}))}onWindowOpen(e){this.stylesMap.set(e.doc,{light:document.head.querySelector('style[id="excalidraw-embedded-light"]'),dark:document.head.querySelector('style[id="excalidraw-embedded-dark"]')})}onWindowClose(e){this.stylesMap.delete(e.doc)}async harvestStyles(){REM_VALUE=parseInt(window.getComputedStyle(document.body).getPropertyValue("--font-text-size").trim()),isNaN(REM_VALUE)&&(REM_VALUE=16);const e=document.body,t=document.createElement("iframe");t.style.display="none",e.appendChild(t);const n=new Promise((e=>{t.addEventListener("load",(()=>e()))})),r=t.contentWindow.document,i=t.contentWindow;r.open(),r.write(`${document.head.innerHTML}`),r.close(),await n;const a=t.contentWindow.document.body;a.setAttribute("style",e.getAttribute("style")),a.setAttribute("class",e.getAttribute("class"));const o=e=>{a.classList.remove("theme-light"),a.classList.remove("theme-dark"),a.classList.add(e)},s=()=>{const e=i.getComputedStyle(a),t={};for(const n of STYLE_VARIABLES)t[n]=e.getPropertyValue(n);const n=this.plugin.ea.getCM(e.getPropertyValue("--background-primary"));return n.alphaTo(.9),t["--background-primary"]=n.stringHEX(),Object.entries(t).map((([e,t])=>`${e}: ${t} !important;`)).join(" ")};o("theme-light"),this.styleLight=s(),o("theme-dark"),this.styleDark=s(),e.removeChild(t)}copyPropertiesToTheme(e){const t=this.stylesMap.get(e);if(t)t.light.innerHTML=`.excalidraw__embeddable__outer .theme-light {\n${this.styleLight}\n}`,t.dark.innerHTML=`.excalidraw__embeddable__outer .theme-dark {\n${this.styleDark}\n}`;else{const t=e.createElement("style");t.type="text/css",t.setAttribute("id","excalidraw-embedded-light"),t.innerHTML=`.excalidraw__embeddable__outer .theme-light {\n${this.styleLight}\n}`,e.head.appendChild(t);const n=e.createElement("style");n.type="text/css",n.setAttribute("id","excalidraw-embedded-dark"),n.innerHTML=`.excalidraw__embeddable__outer .theme-dark {\n${this.styleDark}\n}`,e.head.appendChild(n),this.stylesMap.set(e,{light:t,dark:n})}}destroy(){for(const[e,t]of this.stylesMap)e.head.removeChild(t.light),e.head.removeChild(t.dark);this.plugin=null}}const TOOLS_PANEL_WIDTH=()=>14.2*REM_VALUE;class ToolsPanel extends React__namespace.Component{pos1=0;pos2=0;pos3=0;pos4=0;penDownX=0;penDownY=0;previousWidth=0;previousHeight=0;onRightEdge=!1;onBottomEdge=!1;containerRef;view;componentWillUnmount(){this.containerRef.current&&this.props.observer.deref()?.unobserve(this.containerRef.current),this.setState({scriptIconMap:null}),this.containerRef=null,this.view=null}constructor(e){super(e),this.view=e.view.deref();const t=this.view.packages.react;this.containerRef=t.createRef(),this.state={visible:e.visible,top:50,left:200,theme:"dark",excalidrawViewMode:!1,minimized:!1,isDirty:!1,isFullscreen:!1,isPreviewMode:!0,scriptIconMap:{}}}updateScriptIconMap(e){this.setState((()=>({scriptIconMap:e})))}setPreviewMode(e){this.setState((()=>({isPreviewMode:e})))}setFullscreen(e){this.setState((()=>({isFullscreen:e})))}setDirty(e){this.setState((()=>({isDirty:e})))}setExcalidrawViewMode(e){this.setState((()=>({excalidrawViewMode:e})))}toggleVisibility(e){this.setTopCenter(e),this.setState((e=>({visible:!e.visible})))}setTheme(e){this.setState((t=>({theme:e})))}setTopCenter(e){this.setState((()=>({left:(this.containerRef.current.clientWidth-TOOLS_PANEL_WIDTH()-(e?0:TOOLS_PANEL_WIDTH()+4))/2+this.containerRef.current.parentElement.offsetLeft+(e?0:TOOLS_PANEL_WIDTH()+4),top:64+this.containerRef.current.parentElement.offsetTop})))}updatePosition(e=0,t=0){this.setState((()=>{const{offsetTop:n,offsetLeft:r,clientWidth:i,clientHeight:a}=this.containerRef.current.firstElementChild,o=n-e,s=r-t,{clientWidth:l,clientHeight:c,offsetTop:d,offsetLeft:T}=this.containerRef.current.parentElement;return this.previousHeight=c,this.previousWidth=l,this.onBottomEdge=o>=c-a+d,this.onRightEdge=s>=l-i+T,{top:othis.view.addText(e,t,n)))}actionImportSVG(e){this.view.plugin.importSVGDialog.start(this.view)}actionCropImage(e){this.view.app.commands.executeCommandById("obsidian-excalidraw-plugin:crop-image")}async actionRunScript(e){const t=this.view,n=t.plugin,r=app.vault.getAbstractFileByPath(e);r&&r instanceof obsidian_module.TFile&&n.scriptEngine.executeScript(t,await app.vault.read(r),n.scriptEngine.getScriptName(r),r)}async actionPinScript(e,t){const n=this.view,r=n.excalidrawAPI,i=n.plugin;await i.loadSettings();const a=i.settings.pinnedScripts.indexOf(e);a>-1?(i.settings.pinnedScripts.splice(a,1),r?.setToast({message:`Pin removed: ${t}`,duration:3e3,closable:!0})):(i.settings.pinnedScripts.push(e),r?.setToast({message:`Pinned: ${t}`,duration:3e3,closable:!0})),await i.saveSettings(),i.app.workspace.getLeavesOfType("excalidraw").forEach((e=>{e.view instanceof ExcalidrawView&&e.view.updatePinnedScripts()}))}islandOnClick(e){e.preventDefault(),Math.abs(this.penDownX-this.pos3)>5||Math.abs(this.penDownY-this.pos4)>5||this.setState((e=>({minimized:!e.minimized})))}islandOnPointerDown(e){const t=e=>{e.preventDefault(),this.pos1=this.pos3-e.clientX,this.pos2=this.pos4-e.clientY,this.pos3=e.clientX,this.pos4=e.clientY,this.updatePosition(this.pos2,this.pos1)},n=()=>{this.view.ownerDocument?.removeEventListener("pointerup",n),this.view.ownerDocument?.removeEventListener("pointermove",t)};e.preventDefault(),this.penDownX=this.pos3=e.clientX,this.penDownY=this.pos4=e.clientY,this.view.ownerDocument.addEventListener("pointerup",n),this.view.ownerDocument.addEventListener("pointermove",t)}render(){return React__namespace.createElement("div",{ref:this.containerRef,className:clsx("excalidraw",{"theme--dark":"dark"===this.state.theme}),style:{width:"100%",height:"100%",position:"absolute",touchAction:"none"}},React__namespace.createElement("div",{className:"Island",style:{top:`${this.state.top}px`,left:`${this.state.left}px`,width:"13.75rem",display:this.state.visible&&!this.state.excalidrawViewMode?"block":"none",height:"fit-content",maxHeight:"400px",zIndex:5}},React__namespace.createElement("div",{style:{height:"26px",width:"100%",cursor:"move"},onClick:this.islandOnClick.bind(this),onPointerDown:this.islandOnPointerDown.bind(this)},React__namespace.createElement("svg",{"aria-hidden":"true",focusable:"false",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 228 26"},React__namespace.createElement("path",{stroke:"var(--icon-fill-color)",strokeWidth:"2",d:"M40,7 h148 M40,13 h148 M40,19 h148"}))),React__namespace.createElement("div",{className:"Island App-menu__left scrollbar",style:{maxHeight:"350px",width:"initial","--padding":2,display:this.state.minimized?"none":"block"}},React__namespace.createElement("div",{className:"panelColumn"},React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Utility actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"scriptEngine",title:t$d("INSTALL_SCRIPT_BUTTON"),action:this.actionOpenScriptInstallDialog.bind(this),icon:ICONS.scriptEngine}),React__namespace.createElement(ActionButton,{key:"release-notes",title:t$d("READ_RELEASE_NOTES"),action:this.actionOpenReleaseNotes.bind(this),icon:ICONS.releaseNotes}),null===this.state.isPreviewMode?React__namespace.createElement(ActionButton,{key:"convert",title:t$d("CONVERT_FILE"),action:this.actionConvertExcalidrawToMD.bind(this),icon:ICONS.convertFile}):React__namespace.createElement(ActionButton,{key:"viewmode",title:this.state.isPreviewMode?t$d("PARSED"):t$d("RAW"),action:this.actionToggleViewMode.bind(this),icon:this.state.isPreviewMode?ICONS.rawMode:ICONS.parsedMode}),React__namespace.createElement(ActionButton,{key:"tray-mode",title:t$d("TRAY_MODE"),action:this.actionToggleTrayMode.bind(this),icon:ICONS.trayMode}),React__namespace.createElement(ActionButton,{key:"fullscreen",title:this.state.isFullscreen?t$d("EXIT_FULLSCREEN"):t$d("GOTO_FULLSCREEN"),action:this.actionToggleFullscreen.bind(this),icon:this.state.isFullscreen?ICONS.exitFullScreen:ICONS.gotoFullScreen}),React__namespace.createElement(ActionButton,{key:"search",title:t$d("SEARCH"),action:this.actionSearch.bind(this),icon:ICONS.search}),React__namespace.createElement(ActionButton,{key:"ocr",title:t$d("RUN_OCR"),action:this.actionOCR.bind(this),icon:ICONS.ocr}),React__namespace.createElement(ActionButton,{key:"openLink",title:t$d("OPEN_LINK_CLICK"),action:this.actionOpenLink.bind(this),icon:ICONS.openLink}),React__namespace.createElement(ActionButton,{key:"openLinkProperties",title:t$d("OPEN_LINK_PROPS"),action:this.actionOpenLinkProperties.bind(this),icon:ICONS.openLinkProperties}),React__namespace.createElement(ActionButton,{key:"save",title:t$d("FORCE_SAVE"),action:this.actionForceSave.bind(this),icon:saveIcon(this.state.isDirty)}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Export actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"lib",title:t$d("DOWNLOAD_LIBRARY"),action:this.actionExportLibrary.bind(this),icon:ICONS.exportLibrary}),React__namespace.createElement(ActionButton,{key:"exportIMG",title:t$d("EXPORT_IMAGE"),action:this.actionExportImage.bind(this),icon:ICONS.ExportImage}),React__namespace.createElement(ActionButton,{key:"md",title:t$d("OPEN_AS_MD"),action:this.actionOpenAsMarkdown.bind(this),icon:ICONS.switchToMarkdown}),React__namespace.createElement(ActionButton,{key:"link-to-element",title:t$d("INSERT_LINK_TO_ELEMENT"),action:this.actionLinkToElement.bind(this),icon:ICONS.copyElementLink}))),React__namespace.createElement("fieldset",null,React__namespace.createElement("legend",null,"Insert actions"),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},React__namespace.createElement(ActionButton,{key:"anyfile",title:t$d("UNIVERSAL_ADD_FILE"),action:this.actionAddAnyFile.bind(this),icon:ICONS["add-file"]}),React__namespace.createElement(ActionButton,{key:"image",title:t$d("INSERT_IMAGE"),action:this.actionInsertImage.bind(this),icon:ICONS.insertImage}),React__namespace.createElement(ActionButton,{key:"pdf",title:t$d("INSERT_PDF"),action:this.actionInsertPDF.bind(this),icon:ICONS.insertPDF}),React__namespace.createElement(ActionButton,{key:"insertMD",title:t$d("INSERT_MD"),action:this.actionInsertMarkdown.bind(this),icon:ICONS.insertMD}),React__namespace.createElement(ActionButton,{key:"insertBackOfNote",title:t$d("INSERT_CARD"),action:this.actionInsertBackOfNote.bind(this),icon:ICONS.BackOfNote}),React__namespace.createElement(ActionButton,{key:"latex",title:t$d("INSERT_LATEX"),action:this.actionInsertLaTeX.bind(this),icon:ICONS.insertLaTeX}),React__namespace.createElement(ActionButton,{key:"link",title:t$d("INSERT_LINK"),action:this.actionInsertLink.bind(this),icon:ICONS.insertLink}),React__namespace.createElement(ActionButton,{key:"import-svg",title:t$d("IMPORT_SVG"),action:this.actionImportSVG.bind(this),icon:ICONS.importSVG}),React__namespace.createElement(ActionButton,{key:"crop-image",title:t$d("CROP_IMAGE"),action:this.actionCropImage.bind(this),icon:ICONS.Crop}))),this.renderScriptButtons(!1),this.renderScriptButtons(!0)))))}renderScriptButtons(e){if(0===Object.keys(this.state.scriptIconMap).length)return"";const t=`${this.view.plugin.settings.scriptFolderPath}/Downloaded/`,n=n=>e?n.startsWith(t):!n.startsWith(t);if(0===Object.keys(this.state.scriptIconMap).filter((e=>n(e))).length)return"";const r=new Set;Object.keys(this.state.scriptIconMap).filter((e=>n(e))).forEach((e=>r.add(this.state.scriptIconMap[e].group)));const i=Array.from(r).sort(((e,t)=>e>t?1:-1));return i.push(i.shift()),React__namespace.createElement(React__namespace.Fragment,null,i.map(((t,n)=>React__namespace.createElement("fieldset",{key:`${t}-${n}`},React__namespace.createElement("legend",null,e?t:""===t?"User":"User/"+t),React__namespace.createElement("div",{className:"buttonList buttonListIcon"},Object.entries(this.state.scriptIconMap).filter((([e,n])=>n.group===t)).sort().map((([e,t])=>React__namespace.createElement(ActionButton,{key:e,title:t.name,action:this.actionRunScript.bind(this,e),longpress:this.actionPinScript.bind(this,e,t.name),icon:new WeakRef(t.svgString?stringToSVG(t.svgString):ICONS.cog).deref()}))))))))}}const getElementsAtPointer=(e,t,n)=>t.filter((t=>{if(n&&t.type!==n)return!1;if(t.locked)return!1;const[r,i,a,o]=rotatedDimensions(t);return r<=e.x&&r+a>=e.x&&i<=e.y&&i+o>=e.y})).reverse(),getTextElementAtPointer=(e,t)=>{const n=t.excalidrawAPI;if(!n)return{id:null,text:null};const r=getElementsAtPointer(e,n.getSceneElements(),"text");if(0==r.length)return{id:null,text:null};if(1===r.length)return{id:r[0].id,text:r[0].text};const i=r.filter((e=>{const n=t.textMode===TextMode.parsed?t.excalidrawData.getRawText(e.id):e.text;return!!n&&(!!n.match(REG_LINKINDEX_HYPERLINK)||!!REGEX_LINK.getRes(n).next().value)}));return 0==i.length?{id:r[0].id,text:r[0].text}:{id:i[0].id,text:i[0].text}},getImageElementAtPointer=(e,t)=>{const n=t.excalidrawAPI;if(!n)return;const r=getElementsAtPointer(e,n.getSceneElements(),"image");return 0===r.length?{id:null,fileId:null}:r.length>=1?{id:r[0].id,fileId:r[0].fileId}:void 0},getElementWithLinkAtPointer=(e,t)=>{const n=t.excalidrawAPI;if(!n)return;const r=getElementsAtPointer(e,n.getSceneElements()).filter((e=>e.link));return 0===r.length?{id:null,text:null}:r.length>=1?{id:r[0].id,text:r[0].link}:void 0},setDynamicStyle=(e,t,n,r)=>{if("none"===r){t.excalidrawContainer?.removeAttribute("style"),setTimeout((()=>t.updateScene({appState:{dynamicStyle:""},storeAction:"update"})));const e=t.toolsPanelRef?.current?.containerRef?.current;if(e){let t=e.getAttribute("style");t=t.replace(/\-\-color\-primary.*/,""),e.setAttribute("style",t)}return}const i="light"===t?.excalidrawAPI?.getAppState?.()?.theme||"light"===t?.excalidrawData?.scene?.appState?.theme;"transparent"===n&&(n="#ffffff");const a=()=>i?e.getCM(n):(t=>{const n=e.getCM(t),r=n.lightness;return n.lightnessTo(Math.abs(r-100))})(n),o=a().lightness,s=a().darkerBy(10).isDark(),l="gray"===r,c=t.app.getAccentColor(),d=()=>l?e.getCM(c):e.getCM(c).mix({color:a(),ratio:.2}),T=()=>e.getCM("#000000").lightnessTo(o),u=()=>l?s?T().lighterBy(10):T().darkerBy(10):s?a().lighterBy(10).mix({color:T(),ratio:.5}):a().darkerBy(10).mix({color:T(),ratio:.5}),Q=()=>l?s?T().lighterBy(4):T().darkerBy(4):s?a().lighterBy(4).mix({color:T(),ratio:.5}):a().darkerBy(4).mix({color:T(),ratio:.5}),p=a().mix({color:s?"#f0f0f0":"#101010",ratio:.9}),h=e=>e.stringHEX({alpha:!1}),m={backgroundColor:h(a()),"--color-primary":h(d()),"--color-surface-low":h(u()),"--color-surface-mid":h(u()),"--color-surface-lowest":h(Q()),"--color-surface-high":h(u().lighterBy(10)),"--color-on-primary-container":h(s?d().lighterBy(15):d().darkerBy(15)),"--color-surface-primary-container":h(s?d().darkerBy(10):d().lighterBy(10)),"--button-gray-1":h(u()),"--button-gray-2":h(Q()),"--input-border-color":h(u()),"--input-bg-color":h(Q()),"--input-label-color":h(p),"--island-bg-color":Q().alphaTo(.93).stringHEX(),"--popup-secondary-bg-color":Q().alphaTo(.93).stringHEX(),"--icon-fill-color":h(p),"--text-primary-color":h(p),"--overlay-bg-color":Q().alphaTo(.6).stringHEX(),"--popup-bg-color":h(u()),"--color-on-surface":h(p),"--color-gray-40":h(p),"--color-gray-50":h(p),"--color-surface-highlight":h(u()),"--sidebar-border-color":h(u()),"--color-primary-light":h(d().lighterBy(10)),"--button-hover-bg":h(u()),"--sidebar-bg-color":Q().alphaTo(.93).stringHEX(),"--sidebar-shadow":h(u()),"--popup-text-color":h(p),"--code-normal":h(p),"--code-background":h(Q()),"--h1-color":h(p),"--h2-color":h(p),"--h3-color":h(p),"--h4-color":h(p),color:h(p),"--excalidraw-caret-color":h(i?p:a()),"--select-highlight-color":h(u()),"--color-gray-80":h(s?p.darkerBy(40):p.lighterBy(40))},f=Object.keys(m).map((e=>`${e}: ${m[e]}`)).join("; "),g=t.toolsPanelRef?.current?.containerRef?.current;if(g){let e=g.getAttribute("style");e=e.replace(/\-\-color\-primary.*/,""),g.setAttribute("style",e+f)}setTimeout((()=>{const i=t.excalidrawAPI;if(!i)return t=null,e=null,n=null,void(r=null);const a={stroke:h(s?Q().lighterBy(15):Q().darkerBy(15)),fill:h((s?Q().lighterBy(30):Q().darkerBy(30)).alphaTo(.2)),nameColor:h(s?Q().lighterBy(50):Q().darkerBy(50))};i.getSceneElements().filter((e=>"frame"===e.type)).forEach((e=>{const t=cloneElement(e);addAppendUpdateCustomData(t,{frameColor:a}),e.customData&&e.customData.frameColor&&e.customData.frameColor.stroke===a.stroke&&e.customData.frameColor.fill===a.fill&&e.customData.frameColor.nameColor===a.nameColor||mutateElement(e,{customData:t.customData})})),t.updateScene({appState:{frameColor:a,dynamicStyle:m},storeAction:"update"}),t=null,e=null,n=null,r=null}))};function getTheme(e,t){return"dark"===e.excalidrawData.embeddableTheme?"theme-dark":"light"===e.excalidrawData.embeddableTheme?"theme-light":"auto"===e.excalidrawData.embeddableTheme?"dark"===t?"theme-dark":"theme-light":isObsidianThemeDark()?"theme-dark":"theme-light"}function renderWebView(e,t,n,r){const i=e.startsWith("data:");return DEVICE.isDesktop&&!i?React__namespace.createElement("webview",{ref:e=>t.updateEmbeddableRef(n,e),className:"excalidraw__embeddable",title:"Excalidraw Embedded Content",allowFullScreen:!0,src:e,style:{overflow:"hidden",borderRadius:"var(--embeddable-radius)"}}):React__namespace.createElement("iframe",{ref:e=>t.updateEmbeddableRef(n,e),className:"excalidraw__embeddable",title:"Excalidraw Embedded Content",allowFullScreen:!0,allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",src:i?null:e,style:{overflow:"hidden",borderRadius:"var(--embeddable-radius)"},srcDoc:i?atob(e.split(",")[1]):null})}function RenderObsidianView({mdProps:e,element:t,linkText:n,view:r,containerRef:i,activeEmbeddable:a,theme:o,canvasColor:s}){const{subpath:l,file:c}=processLinkText(n,r);if(!c)return null;const d=r.packages.react,T=d.useRef(null),u=d.useRef(!1),Q=d.useRef(!1),p=d.useRef(o),h=d.useRef(t);d.useEffect((()=>{p.current=o}),[o]),d.useEffect((()=>{h.current=t}),[t]);const m=d.useCallback((e=>{Q.current&&e.stopPropagation()}),[Q.current]);function f(e,t,n,a){if(!n)return;if(!T.current?.hasOwnProperty("node"))return;const o=i.current?.firstElementChild;if(n.useObsidianDefaults)return e?.style.removeProperty("--canvas-background"),o?.style.removeProperty("background-color"),e?.style.removeProperty("--canvas-border"),void o?.style.removeProperty("border-color");const s=r.plugin.ea;if(n.backgroundMatchElement){const r=(n?.backgroundOpacity??50)/100,i=t?.backgroundColor?"transparent"===t.backgroundColor.toLowerCase()?"transparent":s.getCM(t.backgroundColor).alphaTo(r).stringHEX():"transparent";"transparent"===i?e?.addClass("transparent"):e?.removeClass("transparent"),e?.style.setProperty("--canvas-background",i),e?.style.setProperty("--background-primary",i),o?.style.setProperty("background-color",i)}else if(!(n?.backgroundMatchElement??1)){const t=(n.backgroundOpacity??100)/100,r=n.backgroundMatchCanvas?"transparent"===a.toLowerCase()?"transparent":s.getCM(a).alphaTo(t).stringHEX():s.getCM(n.backgroundColor).alphaTo((n.backgroundOpacity??100)/100).stringHEX();"transparent"===r?e?.addClass("transparent"):e?.removeClass("transparent"),e?.style.setProperty("--canvas-background",r),e?.style.setProperty("--background-primary",r),o?.style.setProperty("background-color",r)}if(n.borderMatchElement){const r=(n?.borderOpacity??50)/100,i=t?.strokeColor?"transparent"===t.strokeColor.toLowerCase()?"transparent":s.getCM(t.strokeColor).alphaTo(r).stringHEX():"transparent";e?.style.setProperty("--canvas-border",i),e?.style.setProperty("--canvas-color",i)}else if(!(n?.borderMatchElement??1)){const t=s.getCM(n.borderColor).alphaTo((n.borderOpacity??100)/100).stringHEX();e?.style.setProperty("--canvas-border",t),e?.style.setProperty("--canvas-color",t)}}d.useEffect((()=>{if(i?.current)return KEYBOARD_EVENT_TYPES.forEach((e=>i.current.addEventListener(e,m))),i.current.addEventListener("click",g),()=>{i?.current&&(KEYBOARD_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,m))),EXTENDED_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,m))),i.current.removeEventListener("click",g))}}),[]),d.useEffect((()=>{if(EXTENDED_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,m))),i?.current)return Q.current&&EXTENDED_EVENT_TYPES.forEach((e=>i.current.addEventListener(e,m))),()=>{i?.current&&EXTENDED_EVENT_TYPES.forEach((e=>i.current.removeEventListener(e,m)))}}),[Q.current,i.current]),d.useEffect((()=>{if(!i?.current)return;for(;i.current.hasChildNodes();)i.current.removeChild(i.current.lastChild);i.current.parentElement.style.padding="";const n=r.ownerDocument,a=new obsidian_module.WorkspaceSplit(app.workspace,"vertical");a.getRoot=()=>app.workspace[n===document?"rootSplit":"floatingSplit"],a.getContainer=()=>getContainerForDocument(n),a.containerEl.style.width="100%",a.containerEl.style.height="100%",a.containerEl.style.borderRadius="var(--embeddable-radius)",T.current={leaf:r.app.workspace.createLeafInParent(a,0),node:null,editNode:null};const o=()=>{app.workspace.activeLeaf===r.leaf&&DEVICE.isDesktop&&(r.ownerWindow.electronWindow.isAlwaysOnTop()||(r.ownerWindow.electronWindow.setAlwaysOnTop(!0),setTimeout((()=>{r.ownerWindow.electronWindow.setAlwaysOnTop(!1)}),500)))};return l&&r.canvasNodeFactory.isInitialized()?(o(),T.current.node=r.canvasNodeFactory.createFileNote(c,l,i.current,t.id),r.updateEmbeddableLeafRef(t.id,T.current)):(async()=>{await T.current.leaf.openFile(c,{active:!1,state:{mode:"preview"},...l?{eState:{subpath:l}}:{}});const n=T.current.leaf.view?.getViewType();if("canvas"===n&&T.current.leaf.view.canvas?.setReadonly(!0),"markdown"===n&&r.canvasNodeFactory.isInitialized())o(),await T.current.leaf.setViewState({state:{file:null}}),T.current.node=r.canvasNodeFactory.createFileNote(c,l,i.current,t.id),f(i.current,t,e,s);else{const n=a.containerEl.querySelector("div.workspace-leaf");n&&(n.style.borderRadius="var(--embeddable-radius)"),a.containerEl.addClass("mod-visible"),i.current.appendChild(a.containerEl),f(i.current,t,e,s)}patchMobileView(r),r.updateEmbeddableLeafRef(t.id,T.current)})(),()=>{T.current&&(r.canvasNodeFactory.removeNode(T.current.node),T.current.leaf?.detach(),T.current=null)}}),[n,l,i]),d.useEffect((()=>{if(!i.current)return;const t=h.current,n=i.current;n.hasClass("canvas-node")&&f(n,t,e,s)}),[e,h.current,i.current,s]),d.useEffect((()=>{u.current&&(T.current?.node&&(i.current?.addClasses(["is-editing","is-focused"]),r.canvasNodeFactory.stopEditing(T.current.node)),u.current=!1)}),[u.current,T]);const g=d.useCallback((e=>{if(Q.current&&e?.stopPropagation(),Q.current&&!u.current&&T.current?.leaf)if("markdown"===T.current.leaf.view?.getViewType()){const e=r.excalidrawAPI.getSceneElements().filter((e=>e.id===t.id))[0];if(!e||0!==e.angle)return void new obsidian_module.Notice("Sorry, cannot edit rotated markdown documents");const n=T.current.leaf.view.modes;if(!n)return;T.current.leaf.view.setMode(n.source),u.current=!0,patchMobileView(r)}else if(T.current?.node){const e=getTheme(r,p.current);i.current?.addClasses(["is-editing","is-focused"]),r.canvasNodeFactory.startEditing(T.current.node,e)}}),[T.current?.leaf,t.id,r,p.current]);return T.current&&(T.current.editNode=g),d.useEffect((()=>{const e=e=>{"Enter"===e.key&&g(e)};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[g]),d.useEffect((()=>{if(!i?.current||!T?.current)return;const e=Q.current;if(Q.current=a?.element.id===t.id&&"active"===a?.state,e!==Q.current)if("markdown"===T.current.leaf?.view?.getViewType()){const e=T.current.leaf.view.modes;if(!e)return;if(!Q.current)return T.current.leaf.view.setMode(e.preview),void(u.current=!1)}else if(T.current?.node)if(r.plugin.settings.markdownNodeOneClickEditing&&!i.current?.hasClass("is-editing")){const e=getTheme(r,p.current);i.current?.addClasses(["is-editing","is-focused"]),r.canvasNodeFactory.startEditing(T.current.node,e)}else i.current?.removeClasses(["is-editing","is-focused"]),r.canvasNodeFactory.stopEditing(T.current.node)}),[i,T,Q,a?.element,a?.state,t,r,u,r.canvasNodeFactory,p.current]),null}const CustomEmbeddable=({element:e,view:t,appState:n,linkText:r})=>{const i=t.packages.react,a=i.useRef(null),o=getTheme(t,n.theme),s=e.customData?.mdProps||null;return i.createElement("div",{ref:a,style:{width:"100%",height:"100%",borderRadius:"var(--embeddable-radius)",color:"var(--text-normal)"},className:`${o} canvas-node ${s?.filenameVisible&&!s.useObsidianDefaults?"":"excalidraw-mdEmbed-hideFilename"}`},i.createElement(RenderObsidianView,{mdProps:s,element:e,linkText:r,view:t,containerRef:a,activeEmbeddable:n.activeEmbeddable,theme:n.theme,canvasColor:n.viewBackgroundColor}))};class CanvasNodeFactory{view;leaf;canvas;nodes=new Map;initialized=!1;isInitialized=()=>this.initialized;observer;constructor(e){this.view=e}async initialize(){const e=app.internalPlugins.plugins.canvas;e._loaded||await e.load();const t=this.view.ownerDocument,n=new obsidian_module.WorkspaceSplit(app.workspace,"vertical");n.getRoot=()=>app.workspace[t===document?"rootSplit":"floatingSplit"],n.getContainer=()=>getContainerForDocument(t),this.leaf=app.workspace.createLeafInParent(n,0),this.canvas=e.views.canvas(this.leaf).canvas,this.initialized=!0}createFileNote(e,t,n,r){if(!this.initialized)return;t=t??"",this.nodes.has(r)&&(this.canvas.removeNode(this.nodes.get(r)),this.nodes.delete(r));const i=this.canvas.createFileNode({pos:{x:0,y:0},file:e,subpath:t,save:!1});return i.setFilePath(e.path,t),i.render(),i.containerEl.querySelector(".canvas-node-content-blocker")?.remove(),n.appendChild(i.containerEl),this.nodes.set(r,i),i}async startEditing(e,t){if(!this.initialized||!e)return;e.file===this.view.file&&await this.view.setEmbeddableIsEditingSelf(),e.startEditing();const n=isObsidianThemeDark()?"theme-dark":"theme-light";n!==t&&(async()=>{let r=0;for(;!e.child.editor?.containerEl?.parentElement?.parentElement&&r++<100;)await sleep(25);if(!e.child.editor?.containerEl?.parentElement?.parentElement)return;e.child.editor.containerEl.parentElement.parentElement.classList.remove(n),e.child.editor.containerEl.parentElement.parentElement.classList.add(t);const i=e=>{for(const r of e)if("attributes"===r.type&&"class"===r.attributeName){const e=r.target;e.classList.contains(n)&&(e.classList.remove(n),e.classList.add(t))}};this.observer=DEBUGGING?new CustomMutationObserver(i,"CanvasNodeFactory"):new MutationObserver(i),this.observer.observe(e.child.editor.containerEl.parentElement.parentElement,{attributes:!0})})()}stopEditing(e){this.initialized&&e&&e.child.editMode&&(e.file===this.view.file&&this.view.clearEmbeddableIsEditingSelf(),e.child.showPreview())}removeNode(e){this.initialized&&e&&(this.nodes.delete(e.file.path),this.canvas.removeNode(e),e.detach())}purgeNodes(){this.initialized&&(this.nodes.forEach((e=>{this.canvas.removeNode(e),e.detach()})),this.nodes.clear())}destroy(){this.purgeNodes(),this.initialized=!1,this.observer?.disconnect(),this.view=null,this.canvas=null,this.leaf=null}}const REG_YOUTUBE=/^(?:http(?:s)?:\/\/)?(?:www\.)?youtu(?:be\.com|\.be)\/(embed\/|watch\?v=|shorts\/|playlist\?list=|embed\/videoseries\?list=)?([a-zA-Z0-9_-]+)(?:\?t=|.*&t=|\?start=|.*&start=)?([a-zA-Z0-9_-]+)?[^\s]*$/,isYouTube=e=>Boolean(e.match(REG_YOUTUBE)),getYouTubeStartAt=e=>{const t=e.match(REG_YOUTUBE);if(t?.[2]){const e=t[3]?parseInt(t[3]):0,n=Math.floor(e/3600),r=Math.floor((e-3600*n)/60),i=e-3600*n-60*r;return 0===n&&0===r&&0===i?"":0===n&&0===r?`${String(i).padStart(2,"0")}`:0===n?`${String(r).padStart(2,"0")}:${String(i).padStart(2,"0")}`:`${String(n).padStart(2,"0")}:${String(r).padStart(2,"0")}:${String(i).padStart(2,"0")}`}return""},isValidYouTubeStart=e=>!!/^[0-9]+$/.test(e)||!!/^[0-9]+:[0-9]+$/.test(e)||!!/^[0-9]+:[0-9]+:[0-9]+$/.test(e)||void 0,updateYouTubeStartTime=(e,t)=>{const n=e.match(REG_YOUTUBE);if(n?.[2]){const r=""===t?"":`t=${timeStringToSeconds(t)}`;let i=e;return n[3]?(i=e.replace(/([?&])t=[a-zA-Z0-9_-]+/,`$1${r}`),i=i.replace(/([?&])start=[a-zA-Z0-9_-]+/,`$1${r}`)):i+=(e.includes("?")?"&":"?")+r,i}return e},timeStringToSeconds=e=>{const t=e.split(":").map(Number),n=t.length;return 1===n?t[0]:2===n?60*t[0]+t[1]:3===n?3600*t[0]+60*t[1]+t[2]:0};class EmbeddalbeMDFileCustomDataSettingsComponent{contentEl;mdCustomData;update;isMDFile;constructor(e,t,n,r=!0){this.contentEl=e,this.mdCustomData=t,this.update=n,this.isMDFile=r,n||(this.update=()=>{})}render(){let e;new obsidian_module.Setting(this.contentEl).setName(t$d("ES_USE_OBSIDIAN_DEFAULTS")).addToggle((t=>t.setValue(this.mdCustomData.useObsidianDefaults).onChange((t=>{this.mdCustomData.useObsidianDefaults=t,e.style.display=t?"none":"block",this.update()})))),this.contentEl.createEl("hr",{cls:"excalidraw-setting-hr"}),e=this.contentEl.createDiv(),e.style.display=this.mdCustomData.useObsidianDefaults?"none":"block";const t=e;let n,r,i;this.isMDFile&&new obsidian_module.Setting(t).setName(t$d("ES_FILENAME_VISIBLE")).addToggle((e=>e.setValue(this.mdCustomData.filenameVisible).onChange((e=>{this.mdCustomData.filenameVisible=e})))),t.createEl("h4",{text:t$d("ES_BACKGROUND_HEAD")}),new obsidian_module.Setting(t).setName(t$d("ES_BACKGROUND_MATCH_ELEMENT")).addToggle((e=>{r=e,e.setValue(this.mdCustomData.backgroundMatchElement).onChange((e=>{this.mdCustomData.backgroundMatchElement=e,e?(n.settingEl.style.display="none",this.mdCustomData.backgroundMatchCanvas&&i.setValue(!1)):this.mdCustomData.backgroundMatchCanvas||(n.settingEl.style.display=""),this.update()}))})),new obsidian_module.Setting(t).setName(t$d("ES_BACKGROUND_MATCH_CANVAS")).addToggle((e=>{i=e,e.setValue(this.mdCustomData.backgroundMatchCanvas).onChange((e=>{this.mdCustomData.backgroundMatchCanvas=e,e?(n.settingEl.style.display="none",this.mdCustomData.backgroundMatchElement&&r.setValue(!1)):this.mdCustomData.backgroundMatchElement||(n.settingEl.style.display=""),this.update()}))})),this.mdCustomData.backgroundMatchElement&&this.mdCustomData.backgroundMatchCanvas&&i.setValue(!1),n=new obsidian_module.Setting(t).setName(t$d("ES_BACKGROUND_COLOR")).addColorPicker((e=>e.setValue(this.mdCustomData.backgroundColor).onChange((e=>{this.mdCustomData.backgroundColor=e,this.update()})))),n.settingEl.style.display=this.mdCustomData.backgroundMatchElement||this.mdCustomData.backgroundMatchCanvas?"none":"";const a=e=>fragWithHTML(`Current opacity is ${e}%`),o=new obsidian_module.Setting(t).setName(t$d("ES_BACKGROUND_OPACITY")).setDesc(a(this.mdCustomData.backgroundOpacity)).addSlider((e=>e.setLimits(0,100,5).setValue(this.mdCustomData.backgroundOpacity).onChange((e=>{this.mdCustomData.backgroundOpacity=e,o.setDesc(a(e)),this.update()}))));if(this.isMDFile){let e;t.createEl("h4",{text:t$d("ES_BORDER_HEAD")}),new obsidian_module.Setting(t).setName(t$d("ES_BORDER_MATCH_ELEMENT")).addToggle((t=>t.setValue(this.mdCustomData.borderMatchElement).onChange((t=>{this.mdCustomData.borderMatchElement=t,e.settingEl.style.display=t?"none":"",this.update()})))),e=new obsidian_module.Setting(t).setName(t$d("ES_BORDER_COLOR")).addColorPicker((e=>e.setValue(this.mdCustomData.borderColor).onChange((e=>{this.mdCustomData.borderColor=e,this.update()})))),e.settingEl.style.display=this.mdCustomData.borderMatchElement?"none":"";const n=new obsidian_module.Setting(t).setName(t$d("ES_BORDER_OPACITY")).setDesc(a(this.mdCustomData.borderOpacity)).addSlider((e=>e.setLimits(0,100,5).setValue(this.mdCustomData.borderOpacity).onChange((e=>{this.mdCustomData.borderOpacity=e,n.setDesc(a(e)),this.update()}))))}}}class EmbeddableSettings extends obsidian_module.Modal{plugin;view;file;element;ea;updatedFilepath=null;zoomValue;isYouTube;youtubeStart=null;isMDFile;notExcalidrawIsInternal;isLocalURI;mdCustomData;onKeyDown;constructor(e,t,n,r){if(super(e.app),this.plugin=e,this.view=t,this.file=n,this.element=r,this.ea=getEA(this.view),this.ea.copyViewElementsToEAforEditing([this.element]),this.zoomValue=r.scale[0],this.isYouTube=isYouTube(this.element.link),this.notExcalidrawIsInternal=this.file&&!this.view.plugin.isExcalidrawFile(this.file),this.isMDFile=this.file&&"md"===this.file.extension,this.isLocalURI=this.element.link.startsWith("file://"),isYouTube&&(this.youtubeStart=getYouTubeStartAt(this.element.link)),this.mdCustomData=r.customData?.mdProps??t.plugin.settings.embeddableMarkdownDefaults,!r.customData?.mdProps){const e=this.plugin.ea.getCM(r.backgroundColor);this.mdCustomData.backgroundColor=e.stringHEX({alpha:!1}),this.mdCustomData.backgroundOpacity=r.opacity;const t=this.plugin.ea.getCM(r.strokeColor);this.mdCustomData.borderColor=t.stringHEX({alpha:!1}),this.mdCustomData.borderOpacity=r.opacity}}onOpen(){this.containerEl.classList.add("excalidraw-release"),this.createForm()}onClose(){this.containerEl.removeEventListener("keydown",this.onKeyDown),this.plugin=null,this.view=null,this.file=null,this.element=null,this.ea.destroy(),this.ea=null,this.mdCustomData=null}async createForm(){this.contentEl.createEl("h1",{text:t$d("ES_TITLE")}),this.file&&new obsidian_module.Setting(this.contentEl).setName(t$d("ES_RENAME")).addText((e=>e.setValue(getPathWithoutExtension(this.file)).onChange((async e=>{this.updatedFilepath=e}))));const e=()=>fragWithHTML(`${t$d("ES_ZOOM_100_RELATIVE_DESC")}
Current zoom is ${Math.round(100*this.zoomValue)}%`),t=new obsidian_module.Setting(this.contentEl).setName(t$d("ES_ZOOM")).setDesc(e()).addButton((n=>n.setButtonText(t$d("ES_ZOOM_100")).onClick((()=>{const n=this.view.excalidrawAPI;this.zoomValue=1/n.getAppState().zoom.value,t.setDesc(e())})))).addSlider((n=>n.setLimits(10,400,5).setValue(100*this.zoomValue).onChange((n=>{this.zoomValue=n/100,t.setDesc(e())}))));this.isYouTube&&new obsidian_module.Setting(this.contentEl).setName(t$d("ES_YOUTUBE_START")).setDesc(t$d("ES_YOUTUBE_START_DESC")).addText((e=>e.setValue(this.youtubeStart).onChange((async e=>{this.youtubeStart=e})))),(this.isMDFile||this.notExcalidrawIsInternal)&&(this.contentEl.createEl("h3",{text:t$d("ES_EMBEDDABLE_SETTINGS")}),new EmbeddalbeMDFileCustomDataSettingsComponent(this.contentEl,this.mdCustomData,void 0,this.isMDFile).render()),new obsidian_module.Setting(this.contentEl).addButton((e=>e.setButtonText(t$d("PROMPT_BUTTON_CANCEL")).setTooltip("ESC").onClick(this.close.bind(this)))).addButton((e=>e.setButtonText(t$d("PROMPT_BUTTON_OK")).setTooltip("CTRL/Opt+Enter").setCta().onClick(this.applySettings.bind(this))));const n=e=>{isWinCTRLorMacCMD(e)&&"Enter"===e.key&&this.applySettings()};this.onKeyDown=n,this.containerEl.ownerDocument.addEventListener("keydown",n)}async applySettings(){let e=!1;const t=this.ea.getElement(this.element.id);if(this.updatedFilepath){const n=`${this.updatedFilepath}.${this.file.extension}`;if(n!==this.file.path){const r=splitFolderAndFilename(n),i=getNewUniqueFilepath(this.app.vault,r.filename,r.folderpath);if(this.app.vault.getAbstractFileByPath(i))new obsidian_module.Notice("File rename failed. A file with this name already exists.\n"+i,1e4);else try{await this.app.fileManager.renameFile(this.file,i),t.link=this.element.link.replace(/(\[\[)([^#\]]*)([^\]]*]])/,`$1${this.plugin.app.metadataCache.fileToLinktext(this.file,this.view.file.path,!0)}$3`),e=!0}catch(e){new obsidian_module.Notice("File rename failed. "+e,1e4)}}}var n;this.isYouTube&&this.youtubeStart!==getYouTubeStartAt(this.element.link)&&(e=!0,""===this.youtubeStart||(n=this.youtubeStart,/^[0-9]+$/.test(n)||/^[0-9]+:[0-9]+$/.test(n)||/^[0-9]+:[0-9]+:[0-9]+$/.test(n))?t.link=updateYouTubeStartTime(t.link,this.youtubeStart):new obsidian_module.Notice(t$d("ES_YOUTUBE_START_INVALID"))),!this.isMDFile||this.mdCustomData.backgroundColor===this.element.customData?.backgroundColor&&this.mdCustomData.borderColor===this.element.customData?.borderColor&&this.mdCustomData.backgroundOpacity===this.element.customData?.backgroundOpacity&&this.mdCustomData.borderOpacity===this.element.customData?.borderOpacity&&this.mdCustomData.filenameVisible===this.element.customData?.filenameVisible||(addAppendUpdateCustomData(t,{mdProps:this.mdCustomData}),e=!0),this.zoomValue!==this.element.scale[0]&&(e=!0,t.scale=[this.zoomValue,this.zoomValue]),e?(async()=>{await this.ea.addElementsToView(),this.ea.viewUpdateScene({appState:{},storeAction:"update"}),this.close()})():this.close()}}class EmbeddableMenu{view;containerRef;menuFadeTimeout=0;menuElementId=null;constructor(e,t){this.view=e,this.containerRef=t}destroy(){this.menuFadeTimeout&&(clearTimeout(this.menuFadeTimeout),this.menuFadeTimeout=null),this.view=null,this.containerRef=null,this.updateElement=null,this.handleMouseEnter=null,this.handleMouseLeave=null,this.renderButtons=null}updateElement=(e,t,n)=>{if(!t)return;const r=this.view,i=r.app;if(t=r.excalidrawAPI.getSceneElements().find((e=>e.id===t.id)),!t)return;const a=`[[${i.metadataCache.fileToLinktext(n,r.file.path,"md"===n.extension)}${e}]]`,o=getEA(r);o.copyViewElementsToEAforEditing([t]),o.getElement(t.id).link=a,r.excalidrawData.elementLinks.set(t.id,a),o.addElementsToView(!1,!0,!0).then((()=>o.destroy()))};handleMouseEnter(){clearTimeout(this.menuFadeTimeout),this.containerRef.current?.style.setProperty("opacity","1")}handleMouseLeave(){this.menuFadeTimeout=window.setTimeout((()=>{this.containerRef.current?.style.setProperty("opacity","0.2")}),5e3)}async actionMarkdownSelection(e,t,n,r){this.view.updateScene({appState:{activeEmbeddable:null},storeAction:"update"});const i=(await app.metadataCache.blockCache.getForFile({isCancelled:()=>!1},e)).blocks.filter((e=>e.display&&"heading"===e.node?.type)).filter((e=>!t||!MD_EX_SECTIONS.includes(e.display)));let a,o;t?(a=i.map((e=>`#${cleanSectionHeading(e.display)}`)),o=i.map((e=>e.display))):(a=[""].concat(i.map((e=>`#${cleanSectionHeading(e.display)}`))),o=[t$d("SHOW_ENTIRE_FILE")].concat(i.map((e=>e.display))));const s=await ScriptEngine.suggester(app,o,a,"Select section from document");(s||""===s)&&s!==n&&this.updateElement(s,r,e)}async actionMarkdownBlock(e,t,n){if(!e)return;this.view.updateScene({appState:{activeEmbeddable:null},storeAction:"update"});const r=(await app.metadataCache.blockCache.getForFile({isCancelled:()=>!1},e)).blocks.filter((e=>e.display&&e.node&&("paragraph"===e.node.type||"blockquote"===e.node.type||"listItem"===e.node.type||"table"===e.node.type||"callout"===e.node.type))),i=["entire-file"].concat(r),a=[t$d("SHOW_ENTIRE_FILE")].concat(r.map((e=>`${e.node?.id?`#^${e.node.id}: `:""}${e.display.trim()}`))),o=await ScriptEngine.suggester(app,a,i,"Select section from document");if(!o)return;if("entire-file"===o){if(""===t)return;return void this.updateElement("",n,e)}let s=o.node.id;if(!s||`#^${s}`!==t){if(!s){const t=o.node?.position?.end?.offset;if(!t)return;s=nanoid();const n=await app.vault.cachedRead(e);if(!n)return;await app.vault.modify(e,n.slice(0,t)+` ^${s}`+n.slice(t)),await sleep(200)}this.updateElement(`#^${s}`,n,e)}}actionZoomToElement(e,t){e&&this.view.excalidrawAPI.zoomToFit([e],t??this.view.plugin.settings.zoomToFitMaxLevel,.1)}actionProperties(e,t){e&&new EmbeddableSettings(this.view.plugin,this.view,t,e).open()}actionCrop(e){e&&this.view.app.commands.executeCommandById("obsidian-excalidraw-plugin:crop-image")}actionReload(e,t){e.src=t}actionOpen(e,t){openExternalLink(e.src.startsWith("https://www.youtube.com")||e.src.startsWith("https://player.vimeo.com")?t.link:e.src,this.view.app)}actionCopyCode(e,t){e&&navigator.clipboard.writeText(atob(t.split(",")[1]))}renderButtons(e){const t=this.view;t.app;const n=t?.excalidrawAPI;if(!n)return null;if(!t.file)return null;const r=e.viewModeEnabled&&!t.allowFrameButtonsInViewMode;if(!e.activeEmbeddable||"active"!==e.activeEmbeddable.state||r)return this.menuElementId=null,this.menuFadeTimeout&&(clearTimeout(this.menuFadeTimeout),this.menuFadeTimeout=0),null;const i=e.activeEmbeddable?.element;this.menuElementId!==i.id&&(this.menuElementId=i.id,this.handleMouseLeave());let a=i.link;if(!a)return null;const o=useDefaultExcalidrawFrame(i);let s=Boolean(i.link?.match(REG_LINKINDEX_HYPERLINK));if(!o&&!s){if(a.startsWith("data:text/html"))s=!0;else{const e=REGEX_LINK.getRes(i.link).next();if(!e||!e.value&&e.done)return null;a=REGEX_LINK.getLink(e),s=Boolean(a.match(REG_LINKINDEX_HYPERLINK))}if(!s){const{subpath:n,file:r}=processLinkText(a,t);if(!r)return;const o="md"===r.extension,s=t.plugin.isExcalidrawFile(r),l="pdf"===r.extension,{x:c,y:d}=sceneCoordsToViewportCoords({sceneX:i.x,sceneY:i.y},e),T=d-2.5*ROOTELEMENTSIZE-e.offsetTop+"px",u=c-e.offsetLeft+"px";return React__namespace.createElement("div",{ref:this.containerRef,className:"embeddable-menu",style:{top:T,left:u,opacity:1},onMouseEnter:()=>this.handleMouseEnter(),onPointerDown:()=>this.handleMouseEnter(),onMouseLeave:()=>this.handleMouseLeave()},React__namespace.createElement("div",{className:"Island",style:{position:"relative",display:"block"}},o&&React__namespace.createElement(ActionButton,{key:"MarkdownSection",title:t$d("NARROW_TO_HEADING"),action:async()=>this.actionMarkdownSelection(r,s,n,i),icon:ICONS.ZoomToSection}),o&&!s&&React__namespace.createElement(ActionButton,{key:"MarkdownBlock",title:t$d("NARROW_TO_BLOCK"),action:async()=>this.actionMarkdownBlock(r,n,i),icon:ICONS.ZoomToBlock}),React__namespace.createElement(ActionButton,{key:"ZoomToElement",title:t$d("ZOOM_TO_FIT"),action:()=>this.actionZoomToElement(i,30),icon:ICONS.ZoomToSelectedElement}),React__namespace.createElement(ActionButton,{key:"Properties",title:t$d("PROPERTIES"),action:()=>this.actionProperties(i,r),icon:ICONS.Properties}),l&&React__namespace.createElement(ActionButton,{key:"Crop",title:t$d("CROP_PAGE"),action:()=>this.actionCrop(i),icon:ICONS.Crop})))}}if(s||o){const r=o?n.getHTMLIFrameElement(i.id):t.getEmbeddableElementById(i.id);if(!r||!r.contentWindow)return null;const{x:s,y:l}=sceneCoordsToViewportCoords({sceneX:i.x,sceneY:i.y},e),c=l-2.5*ROOTELEMENTSIZE-e.offsetTop+"px",d=s-e.offsetLeft+"px";return React__namespace.createElement("div",{ref:this.containerRef,className:"embeddable-menu",style:{top:c,left:d,opacity:1},onMouseEnter:()=>this.handleMouseEnter(),onPointerDown:()=>this.handleMouseEnter(),onMouseLeave:()=>this.handleMouseLeave()},React__namespace.createElement("div",{className:"Island",style:{position:"relative",display:"block"}},r.src!==a&&!r.src.startsWith("https://www.youtube.com")&&!r.src.startsWith("https://player.vimeo.com")&&React__namespace.createElement(ActionButton,{key:"Reload",title:t$d("RELOAD"),action:()=>this.actionReload(r,a),icon:ICONS.Reload}),React__namespace.createElement(ActionButton,{key:"Open",title:t$d("OPEN_IN_BROWSER"),action:()=>this.actionOpen(r,i),icon:ICONS.Globe}),React__namespace.createElement(ActionButton,{key:"ZoomToElement",title:t$d("ZOOM_TO_FIT"),action:()=>this.actionZoomToElement(i),icon:ICONS.ZoomToSelectedElement}),React__namespace.createElement(ActionButton,{key:"Properties",title:t$d("PROPERTIES"),action:()=>this.actionProperties(i,null),icon:ICONS.Properties}),a?.startsWith("data:text/html")&&React__namespace.createElement(ActionButton,{key:"CopyCode",title:t$d("COPYCODE"),action:()=>this.actionCopyCode(i,a),icon:ICONS.Copy})))}}}class SelectCard extends obsidian_module.FuzzySuggestModal{app;view;sections;constructor(e,t,n){super(e),this.app=e,this.view=t,this.sections=n,this.limit=20,this.setInstructions([{command:t$d("TYPE_SECTION"),purpose:""}]),this.inputEl.onkeyup=e=>{if("Enter"==e.key&&this.containerEl.innerText.includes(t$d("EMPTY_SECTION_MESSAGE"))){const e=this.inputEl.value;if(""===e||MD_EX_SECTIONS.includes(e))return new obsidian_module.Notice(t$d("INVALID_SECTION_NAME")),void this.close();addBackOfTheNoteCard(this.view,e),this.close()}}}getItems(){return this.sections}getItemText(e){return e}onChooseItem(e){const t=getEA(this.view),n=t.addEmbeddable(0,0,400,500,`[[${this.view.file.path}#${e}]]`);(async()=>{await t.addElementsToView(!0,!1,!0),t.selectElementsInView([n]),t.destroy()})()}start(){this.emptyStateText=t$d("EMPTY_SECTION_MESSAGE"),this.setPlaceholder(t$d("SELECT_SECTION_OR_TYPE_NEW")),this.open()}}const SYSTEM_PROMPT='You are a skilled front-end developer who builds interactive prototypes from wireframes, and is an expert at CSS Grid and Flex design.\nYour role is to transform low-fidelity wireframes into working front-end HTML code.\nYOU MUST FOLLOW FOLLOWING RULES:\n- Use HTML, CSS, JavaScript to build a responsive, accessible, polished prototype\n- Leverage Tailwind for styling and layout (import as script